[glib] Improve GBookmarkFile test coverage
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Improve GBookmarkFile test coverage
- Date: Wed, 1 Jan 2014 23:03:38 +0000 (UTC)
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]