[glib] Improve GBookmarkFile test coverage



commit d6bd36c6992c9b2b4b47391b47d954c8b64e44c3
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Dec 30 09:47:49 2013 -0500

    Improve GBookmarkFile test coverage

 glib/tests/bookmarkfile.c          |  259 ++++++++++++++++++++++++++++++++++++
 glib/tests/bookmarks/valid-01.xbel |    4 +
 glib/tests/bookmarks/valid-02.xbel |    2 +
 glib/tests/bookmarks/valid-03.xbel |    1 +
 4 files changed, 266 insertions(+), 0 deletions(-)
---
diff --git a/glib/tests/bookmarkfile.c b/glib/tests/bookmarkfile.c
index ef4e7dc..00605ed 100644
--- a/glib/tests/bookmarkfile.c
+++ b/glib/tests/bookmarkfile.c
@@ -16,6 +16,257 @@
 #define TEST_APP_NAME  "bookmarkfile-test"
 #define TEST_APP_EXEC  "bookmarkfile-test %f"
 
+static void
+test_load_from_data_dirs (void)
+{
+  GBookmarkFile *bookmark;
+  gboolean res;
+  gchar *path = NULL;
+  GError *error = NULL;
+
+  bookmark = g_bookmark_file_new ();
+
+  res = g_bookmark_file_load_from_data_dirs (bookmark, "no-such-bookmark-file.xbel", &path, &error);
+
+  g_assert (!res);
+  g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_NOENT);
+  g_assert_null (path);
+
+  g_bookmark_file_free (bookmark);  
+}
+
+static void
+test_to_file (void)
+{
+  GBookmarkFile *bookmark;
+  const gchar *filename;
+  gboolean res;
+  GError *error = NULL;
+  gchar *in, *out;
+
+  bookmark = g_bookmark_file_new ();
+
+  filename = g_test_get_filename (G_TEST_DIST, "bookmarks", "valid-01.xbel", NULL);
+  res = g_bookmark_file_load_from_file (bookmark, filename, &error);
+  g_assert (res);
+  g_assert_no_error (error);
+
+  res = g_bookmark_file_to_file (bookmark, "out.xbel", &error);
+  g_assert (res);
+  g_assert_no_error (error);
+
+  res = g_file_get_contents (filename, &in, NULL, &error);
+  g_assert (res);
+  g_assert_no_error (error);
+
+  res = g_file_get_contents ("out.xbel", &out, NULL, &error);
+  g_assert (res);
+  g_assert_no_error (error);
+
+  g_assert_cmpstr (in, ==, out);
+  g_free (in);
+  g_free (out);
+
+  g_bookmark_file_free (bookmark);
+}
+
+static void
+test_move_item (void)
+{
+  GBookmarkFile *bookmark;
+  const gchar *filename;
+  gboolean res;
+  GError *error = NULL;
+
+  bookmark = g_bookmark_file_new ();
+
+  filename = g_test_get_filename (G_TEST_DIST, "bookmarks", "valid-01.xbel", NULL);
+  res = g_bookmark_file_load_from_file (bookmark, filename, &error);
+  g_assert (res);
+  g_assert_no_error (error);
+
+  res = g_bookmark_file_move_item (bookmark,
+                                   "file:///home/zefram/Documents/milan-stuttgart.ps",
+                                   "file:///tmp/schedule.ps",
+                                   &error);
+  g_assert (res);
+  g_assert_no_error (error);
+
+  res = g_bookmark_file_move_item (bookmark,
+                                   "file:///no-such-file.xbel",
+                                   "file:///tmp/schedule.ps",
+                                   &error);
+  g_assert (!res);
+  g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND);
+  g_clear_error (&error);
+
+  res = g_bookmark_file_move_item (bookmark,
+                                   "file:///tmp/schedule.ps",
+                                   NULL,
+                                   &error);
+  g_assert (res);
+  g_assert_no_error (error);
+
+  g_bookmark_file_free (bookmark);
+}
+
+static void
+test_misc (void)
+{
+  GBookmarkFile *bookmark;
+  const gchar *filename;
+  gboolean res;
+  GError *error = NULL;
+  gchar *s;
+  time_t now, t;
+  gchar *cmd, *exec;
+  guint count;
+
+  bookmark = g_bookmark_file_new ();
+
+  filename = g_test_get_filename (G_TEST_DIST, "bookmarks", "valid-01.xbel", NULL);
+  res = g_bookmark_file_load_from_file (bookmark, filename, &error);
+  g_assert (res);
+  g_assert_no_error (error);
+
+  res = g_bookmark_file_get_icon (bookmark,
+                                   "file:///home/zefram/Documents/milan-stuttgart.ps",
+                                  NULL,
+                                  NULL,
+                                  &error);
+  g_assert (!res);
+  g_assert_no_error (error);
+
+  res = g_bookmark_file_get_icon (bookmark,
+                                  "file:///tmp/schedule.ps",
+                                  NULL,
+                                  NULL,
+                                  &error);
+  g_assert (!res);
+  g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND);
+  g_clear_error (&error);
+
+  g_bookmark_file_set_description (bookmark,
+                                   "file:///tmp/schedule0.ps",
+                                   "imaginary schedule");
+  s = g_bookmark_file_get_description (bookmark,
+                                       "file:///tmp/schedule0.ps",
+                                       &error);
+  g_assert_no_error (error);
+  g_assert_cmpstr (s, ==, "imaginary schedule");
+  g_free (s);
+  s = g_bookmark_file_get_mime_type (bookmark,
+                                     "file:///tmp/schedule0.ps",
+                                     &error);
+  g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_INVALID_VALUE);
+  g_assert_null (s);
+  g_clear_error (&error);
+  res = g_bookmark_file_get_is_private (bookmark,
+                                        "file:///tmp/schedule0.ps",
+                                        &error);
+  g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_INVALID_VALUE);
+  g_clear_error (&error);
+
+  g_bookmark_file_set_mime_type (bookmark, 
+                                 "file:///tmp/schedule1.ps",
+                                 "image/png");
+  s = g_bookmark_file_get_mime_type (bookmark,
+                                     "file:///tmp/schedule1.ps",
+                                     &error);
+  g_assert_no_error (error);
+  g_assert_cmpstr (s, ==, "image/png");
+  g_free (s);
+  
+  g_bookmark_file_set_is_private (bookmark,
+                                  "file:///tmp/schedule2.ps",
+                                  TRUE);
+  res = g_bookmark_file_get_is_private (bookmark,
+                                        "file:///tmp/schedule2.ps",
+                                        &error);
+  g_assert_no_error (error);
+  g_assert (res);
+
+  time (&now);
+  g_bookmark_file_set_added (bookmark,
+                             "file:///tmp/schedule3.ps",
+                             (time_t)-1);
+  t = g_bookmark_file_get_added (bookmark,
+                                 "file:///tmp/schedule3.ps",
+                                 &error);
+  g_assert_no_error (error);
+  g_assert (t == now);
+
+  g_bookmark_file_set_modified (bookmark,
+                                "file:///tmp/schedule4.ps",
+                                (time_t)-1);
+  t = g_bookmark_file_get_modified (bookmark,
+                                    "file:///tmp/schedule4.ps",
+                                    &error);
+  g_assert_no_error (error);
+  g_assert (t == now);
+
+  g_bookmark_file_set_visited (bookmark,
+                               "file:///tmp/schedule5.ps",
+                               (time_t)-1);
+  t = g_bookmark_file_get_visited (bookmark,
+                                   "file:///tmp/schedule5.ps",
+                                   &error);
+  g_assert_no_error (error);
+  g_assert (t == now);
+
+  g_bookmark_file_set_icon (bookmark,
+                            "file:///tmp/schedule6.ps",
+                            "application-x-postscript",
+                            "image/png");
+  res = g_bookmark_file_get_icon (bookmark,
+                                  "file:///tmp/schedule6.ps",
+                                  &s,
+                                  NULL, 
+                                  &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  g_assert_cmpstr (s, ==, "application-x-postscript");
+  g_free (s);
+
+  g_bookmark_file_set_icon (bookmark,
+                            "file:///tmp/schedule6.ps",
+                            NULL, NULL);
+  res = g_bookmark_file_get_icon (bookmark,
+                                  "file:///tmp/schedule6.ps",
+                                  &s,
+                                  NULL, 
+                                  &error);
+  g_assert_no_error (error);
+  g_assert (!res);
+
+  res = g_bookmark_file_has_application (bookmark,
+                                         "file:///tmp/schedule7.ps",
+                                         "foo",
+                                         &error);
+  g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND);
+  g_assert (!res);
+  g_clear_error (&error);
+
+  g_bookmark_file_add_application (bookmark, 
+                                   "file:///tmp/schedule7.ps",
+                                   NULL, NULL);
+  res = g_bookmark_file_get_app_info (bookmark,
+                                      "file:///tmp/schedule7.ps",
+                                      g_get_application_name (),
+                                      &exec, &count, &t,
+                                      &error);
+  g_assert_no_error (error);
+  g_assert (res);
+  cmd = g_strconcat (g_get_prgname (), " file:///tmp/schedule7.ps", NULL);
+  g_assert_cmpstr (exec, ==, cmd);
+  g_free (cmd);
+  g_free (exec);
+  g_assert_cmpuint (count, ==, 1);
+  g_assert (t == now);
+
+  g_bookmark_file_free (bookmark);
+}
+
 static gboolean
 test_load (GBookmarkFile *bookmark,
            const gchar   *filename)
@@ -277,6 +528,11 @@ main (int argc, char *argv[])
       return 0;
     }
 
+  g_test_add_func ("/bookmarks/load-from-data-dirs", test_load_from_data_dirs);
+  g_test_add_func ("/bookmarks/to-file", test_to_file);
+  g_test_add_func ("/bookmarks/move-item", test_move_item);
+  g_test_add_func ("/bookmarks/misc", test_misc);
+
   error = NULL;
   path = g_test_build_filename (G_TEST_DIST, "bookmarks", NULL);
   dir = g_dir_open (path, 0, &error);
@@ -284,6 +540,9 @@ main (int argc, char *argv[])
   g_assert_no_error (error);
   while ((name = g_dir_read_name (dir)) != NULL)
     {
+      if (!g_str_has_suffix (name, ".xbel"))
+        continue;
+
       path = g_strdup_printf ("/bookmarks/parse/%s", name);
       g_test_add_data_func_full (path, g_test_build_filename (G_TEST_DIST, "bookmarks", name, NULL),
                                  test_file, g_free);
diff --git a/glib/tests/bookmarks/valid-01.xbel b/glib/tests/bookmarks/valid-01.xbel
index 3ac11a2..c1d4ff5 100644
--- a/glib/tests/bookmarks/valid-01.xbel
+++ b/glib/tests/bookmarks/valid-01.xbel
@@ -9,6 +9,10 @@
     <info>
       <metadata owner="http://freedesktop.org";>
         <mime:mime-type type="application/postscript"/>
+        <bookmark:groups>
+          <bookmark:group>Office</bookmark:group>
+          <bookmark:group>Multimedia</bookmark:group>
+        </bookmark:groups>
         <bookmark:applications>
           <bookmark:application name="populate-recent" exec="populate-recent --info %u" 
modified="2005-09-30T23:05:28Z" count="1"/>
         </bookmark:applications>
diff --git a/glib/tests/bookmarks/valid-02.xbel b/glib/tests/bookmarks/valid-02.xbel
index 85a84a0..64afdd8 100644
--- a/glib/tests/bookmarks/valid-02.xbel
+++ b/glib/tests/bookmarks/valid-02.xbel
@@ -3,6 +3,8 @@
   <title>Singleton</title>
   <desc>A file containing a single bookmark element</desc>
   <bookmark href="file:///home/zefram/Documents/milan-stuttgart.ps" added="20050930T23:05:28Z" 
modified="20050930T23:05:28Z" visited="20050930T23:05:28Z">
+    <title>Milan-Stuttgart</title>
+    <desc>A schedule</desc>
     <info>
       <metadata owner="http://freedesktop.org";>
         <mime-type type="application/postscript"/>
diff --git a/glib/tests/bookmarks/valid-03.xbel b/glib/tests/bookmarks/valid-03.xbel
index 32f431d..f3a3341 100644
--- a/glib/tests/bookmarks/valid-03.xbel
+++ b/glib/tests/bookmarks/valid-03.xbel
@@ -15,6 +15,7 @@
         <bookmark:applications>
           <bookmark:application name="populate-recent" exec="populate-recent --info %u" 
modified="2005-09-30T23:05:28Z" count="1"/>
         </bookmark:applications>
+        <bookmark:icon type="image/png" 
href="file:///usr/share/icons/gnome/48x48/gnome-mime-application-postscript.png"/>
       </metadata>
     </info>
   </bookmark>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]