[evolution-data-server] Add a test for the e-book 'getRequiredFields' method.
- From: Travis Reitter <treitter src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Add a test for the e-book 'getRequiredFields' method.
- Date: Fri, 15 Jan 2010 21:53:52 +0000 (UTC)
commit 59877e2daf76e4d4c04f9bc5bd079b77c2c33dd0
Author: Travis Reitter <treitter gmail com>
Date: Wed Dec 9 16:30:04 2009 -0800
Add a test for the e-book 'getRequiredFields' method.
addressbook/tests/ebook/Makefile.am | 3 +
addressbook/tests/ebook/ebook-test-utils.c | 58 +++++++++++++++
addressbook/tests/ebook/ebook-test-utils.h | 12 +++-
.../tests/ebook/test-ebook-get-required-fields.c | 75 ++++++++++++++++++++
4 files changed, 146 insertions(+), 2 deletions(-)
---
diff --git a/addressbook/tests/ebook/Makefile.am b/addressbook/tests/ebook/Makefile.am
index cc892a2..a0eb6ed 100644
--- a/addressbook/tests/ebook/Makefile.am
+++ b/addressbook/tests/ebook/Makefile.am
@@ -30,6 +30,7 @@ noinst_PROGRAMS = \
test-ebook-add-contact \
test-ebook-commit-contact \
test-ebook-get-contact \
+ test-ebook-get-required-fields \
test-ebook-get-static-capabilities \
test-ebook-remove \
test-ebook-remove-contact \
@@ -65,6 +66,8 @@ test_ebook_commit_contact_LDADD=$(TEST_LIBS)
test_ebook_commit_contact_CPPFLAGS=$(TEST_CPPFLAGS)
test_ebook_get_contact_LDADD=$(TEST_LIBS)
test_ebook_get_contact_CPPFLAGS=$(TEST_CPPFLAGS)
+test_ebook_get_required_fields_LDADD=$(TEST_LIBS)
+test_ebook_get_required_fields_CPPFLAGS=$(TEST_CPPFLAGS)
test_ebook_get_static_capabilities_LDADD=$(TEST_LIBS)
test_ebook_get_static_capabilities_CPPFLAGS=$(TEST_CPPFLAGS)
test_ebook_remove_LDADD=$(TEST_LIBS)
diff --git a/addressbook/tests/ebook/ebook-test-utils.c b/addressbook/tests/ebook/ebook-test-utils.c
index 634396a..0fee18d 100644
--- a/addressbook/tests/ebook/ebook-test-utils.c
+++ b/addressbook/tests/ebook/ebook-test-utils.c
@@ -260,6 +260,64 @@ ebook_test_utils_book_async_get_contact (EBook *book,
}
}
+GList*
+ebook_test_utils_book_get_required_fields (EBook *book)
+{
+ GList *fields = NULL;
+ GError *error = NULL;
+
+ if (!e_book_get_required_fields (book, &fields, &error)) {
+ const char *uri;
+
+ uri = e_book_get_uri (book);
+ g_warning ("failed to get required fields for addressbook "
+ "`%s': %s", uri, error->message);
+ exit(1);
+ }
+
+ return fields;
+}
+
+static void
+get_required_fields_cb (EBook *book,
+ EBookStatus status,
+ EList *fields,
+ EBookTestClosure *closure)
+{
+ if (status != E_BOOK_ERROR_OK) {
+ g_warning ("failed to asynchronously get the contact: "
+ "status %d", status);
+ exit (1);
+ }
+
+ closure->list = fields;
+
+ g_print ("successfully asynchronously retrieved the required fields\n");
+
+ if (closure) {
+ (*closure->cb) (closure);
+ g_free (closure);
+ }
+}
+
+void
+ebook_test_utils_book_async_get_required_fields (EBook *book,
+ GSourceFunc callback,
+ gpointer user_data)
+{
+ EBookTestClosure *closure;
+
+ closure = g_new0 (EBookTestClosure, 1);
+ closure->cb = callback;
+ closure->user_data = user_data;
+ if (e_book_async_get_required_fields (book,
+ (EBookEListCallback) get_required_fields_cb,
+ closure)) {
+ g_warning ("failed to set up async getRequiredFields");
+ exit(1);
+ }
+}
+
const char*
ebook_test_utils_book_get_static_capabilities (EBook *book)
{
diff --git a/addressbook/tests/ebook/ebook-test-utils.h b/addressbook/tests/ebook/ebook-test-utils.h
index 3b0b963..02f8bc3 100644
--- a/addressbook/tests/ebook/ebook-test-utils.h
+++ b/addressbook/tests/ebook/ebook-test-utils.h
@@ -29,8 +29,9 @@
#define EBOOK_TEST_UTILS_VCARDS_DIR "vcards"
typedef struct {
- GSourceFunc cb;
- gpointer user_data;
+ GSourceFunc cb;
+ gpointer user_data;
+ EList *list;
} EBookTestClosure;
gboolean
@@ -78,6 +79,13 @@ ebook_test_utils_book_async_get_contact (EBook *book,
GSourceFunc callback,
gpointer user_data);
+GList*
+ebook_test_utils_book_get_required_fields (EBook *book);
+void
+ebook_test_utils_book_async_get_required_fields (EBook *book,
+ GSourceFunc callback,
+ gpointer user_data);
+
const char*
ebook_test_utils_book_get_static_capabilities (EBook *book);
diff --git a/addressbook/tests/ebook/test-ebook-get-required-fields.c b/addressbook/tests/ebook/test-ebook-get-required-fields.c
new file mode 100644
index 0000000..d40cda5
--- /dev/null
+++ b/addressbook/tests/ebook/test-ebook-get-required-fields.c
@@ -0,0 +1,75 @@
+/* -*- 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 (char *member,
+ gpointer user_data)
+{
+ g_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 char *field;
+
+ g_print ("required fields:\n");
+ iter = e_list_get_iterator (closure->list);
+ while ((field = e_iterator_get (iter))) {
+ g_print (" %s\n", field);
+ e_iterator_next (iter);
+ }
+ g_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);
+
+ g_print ("successfully retrieved required fields:\n");
+ g_list_foreach (fields, (GFunc) list_member_print_and_free, NULL);
+ 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;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]