[Xfce4-commits] <midori:master> Initial download tests for extension and unique filename

Christian Dywan noreply at xfce.org
Mon Sep 17 19:28:06 CEST 2012


Updating branch refs/heads/master
         to 09432b2d1277b8d0cffe00e79c24d077e780e316 (commit)
       from 7d5fd0d319f497ccb29bec1cf657dabf3345586c (commit)

commit 09432b2d1277b8d0cffe00e79c24d077e780e316
Author: Christian Dywan <christian at twotoasts.de>
Date:   Mon Sep 17 01:04:28 2012 +0200

    Initial download tests for extension and unique filename

 midori/midori-download.vala |    6 ++--
 tests/download.vala         |   62 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 65 insertions(+), 3 deletions(-)

diff --git a/midori/midori-download.vala b/midori/midori-download.vala
index 64d6ddf..32d9464 100644
--- a/midori/midori-download.vala
+++ b/midori/midori-download.vala
@@ -228,7 +228,7 @@ namespace Midori {
             return filename;
         }
 
-        public static string? get_extension_for_uri (string uri, out string basename) {
+        public static string? get_extension_for_uri (string uri, out string basename = null) {
             if (&basename != null)
                 basename = null;
             /* Find the last slash and the last period *after* the last slash. */
@@ -248,11 +248,11 @@ namespace Midori {
         }
 
         public string get_unique_filename (string filename) {
-            if (Posix.access (filename, Posix.F_OK) != 0) {
+            if (Posix.access (filename, Posix.F_OK) == 0) {
                 string basename;
                 string? extension = get_extension_for_uri (filename, out basename);
                 string? new_filename = null;
-                int i = -1;
+                int i = 0;
                 do {
                     new_filename = "%s-%d%s".printf (basename, i++, extension ?? "");
                 } while (Posix.access (new_filename, Posix.F_OK) == 0);
diff --git a/tests/download.vala b/tests/download.vala
new file mode 100644
index 0000000..9bdbc02
--- /dev/null
+++ b/tests/download.vala
@@ -0,0 +1,62 @@
+/*
+ Copyright (C) 2012 Christian Dywan <christian at twotoasts.de>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ See the file COPYING for the full license text.
+*/
+
+namespace Katze {
+    extern static string assert_str_equal (string input, string result, string expected);
+}
+
+struct TestCase {
+    public string data;
+    public string? expected;
+}
+
+const TestCase[] filenames = {
+    { "/tmp/midori-user/tumblr123.jpg", ".jpg" },
+    { "https://green.cat/8019B6/a.b/500.jpg", ".jpg" },
+    { "http://example.com/file.png", ".png" }
+};
+
+static void download_extension () {
+    foreach (var filename in filenames) {
+        string? result = Midori.Download.get_extension_for_uri (filename.data);
+        Katze.assert_str_equal (filename.data, result, filename.expected);
+    }
+}
+
+static void download_unique () {
+    string folder = DirUtils.make_tmp ("cacheXXXXXX");
+    string filename = Path.build_path (Path.DIR_SEPARATOR_S, folder, "foo.png");
+    string unique = Midori.Download.get_unique_filename (filename);
+    Katze.assert_str_equal (folder, unique, filename);
+    FileUtils.set_contents (filename, "12345");
+    unique = Midori.Download.get_unique_filename (filename);
+    filename = Path.build_path (Path.DIR_SEPARATOR_S, folder, "foo-0.png");
+    Katze.assert_str_equal (folder, unique, filename);
+    FileUtils.set_contents (filename, "12345");
+    unique = Midori.Download.get_unique_filename (filename);
+    filename = Path.build_path (Path.DIR_SEPARATOR_S, folder, "foo-1.png");
+    Katze.assert_str_equal (folder, unique, filename);
+
+    filename = Path.build_path (Path.DIR_SEPARATOR_S, folder, "foo-9.png");
+    FileUtils.set_contents (filename, "12345");
+    unique = Midori.Download.get_unique_filename (filename);
+    filename = Path.build_path (Path.DIR_SEPARATOR_S, folder, "foo-10.png");
+    Katze.assert_str_equal (folder, unique, filename);
+    DirUtils.remove (folder);
+}
+
+void main (string[] args) {
+    Test.init (ref args);
+    Test.add_func ("/download/extension", download_extension);
+    Test.add_func ("/download/unique", download_unique);
+    Test.run ();
+}
+


More information about the Xfce4-commits mailing list