summaryrefslogtreecommitdiff
path: root/tests/libebook/test-ebook-get-required-fields.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2011-03-22 13:57:21 -0400
committerMatthew Barnes <mbarnes@redhat.com>2011-03-22 15:50:04 -0400
commit450e98c83234f6d82f46c0124f874f47b785923f (patch)
tree3e07b75868d85abff88b05e261b3fa97069c1874 /tests/libebook/test-ebook-get-required-fields.c
parent99f96227311145922e3d0319dd9b3aed2e784584 (diff)
downloadevolution-data-server-450e98c83234f6d82f46c0124f874f47b785923f.tar.gz
Collect all test code into a top-level "tests" directory
This includes both automated unit tests and standalone demo programs. Test code is partitioned by library. So far we have: tests/libebook tests/libecal tests/libedata-cal tests/libedataserver tests/libedataserverui This makes for a natural place to put additional E-D-S test code, but still have it compartmentalized in one place (excluding Camel, which is still tagging along with E-D-S but is not really part of E-D-S).
Diffstat (limited to 'tests/libebook/test-ebook-get-required-fields.c')
-rw-r--r--tests/libebook/test-ebook-get-required-fields.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/tests/libebook/test-ebook-get-required-fields.c b/tests/libebook/test-ebook-get-required-fields.c
new file mode 100644
index 000000000..0739f73ed
--- /dev/null
+++ b/tests/libebook/test-ebook-get-required-fields.c
@@ -0,0 +1,76 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+#include <stdlib.h>
+#include <libebook/e-book.h>
+
+#include "ebook-test-utils.h"
+
+static void
+list_member_print_and_free (gchar *member,
+ gpointer user_data)
+{
+ test_print (" %s\n", member);
+ g_free (member);
+}
+
+static void
+get_required_fields_cb (EBookTestClosure *closure)
+{
+ /* XXX: assuming an empty list is valid, we'll just print out anything
+ * we do get */
+ if (closure->list) {
+ EIterator *iter;
+ const gchar *field;
+
+ test_print ("required fields:\n");
+ iter = e_list_get_iterator (closure->list);
+ while ((field = e_iterator_get (iter))) {
+ test_print (" %s\n", field);
+ e_iterator_next (iter);
+ }
+ test_print ("----------------\n");
+ }
+
+ g_object_unref (closure->list);
+
+ g_main_loop_quit ((GMainLoop*) (closure->user_data));
+}
+
+gint
+main (gint argc, gchar **argv)
+{
+ EBook *book;
+ GMainLoop *loop;
+ GList *fields;
+
+ g_type_init ();
+
+ /*
+ * Setup
+ */
+ book = ebook_test_utils_book_new_temp (NULL);
+ ebook_test_utils_book_open (book, FALSE);
+
+ /*
+ * Sync version
+ */
+ fields = ebook_test_utils_book_get_required_fields (book);
+
+ test_print ("successfully retrieved required fields:\n");
+ g_list_foreach (fields, (GFunc) list_member_print_and_free, NULL);
+ test_print ("----------------\n");
+ g_list_free (fields);
+
+ /*
+ * Async version
+ */
+ loop = g_main_loop_new (NULL, TRUE);
+ ebook_test_utils_book_async_get_required_fields (book,
+ (GSourceFunc) get_required_fields_cb, loop);
+
+ g_main_loop_run (loop);
+
+ ebook_test_utils_book_remove (book);
+
+ return 0;
+}