}
static void
-add_client_test (const gchar *path,
+add_client_test (const gchar *prefix,
+ const gchar *test_case_name,
gpointer func,
EBookQuery *query,
- gint num_contacts)
+ gint num_contacts,
+ gboolean direct)
{
ClientTestData *data = g_slice_new0 (ClientTestData);
+ gchar *path = g_strconcat (prefix, test_case_name, NULL);
- data->parent.type = E_TEST_SERVER_ADDRESS_BOOK;
+ data->parent.type = direct ? E_TEST_SERVER_DIRECT_ADDRESS_BOOK : E_TEST_SERVER_ADDRESS_BOOK;
data->parent.customize = setup_custom_book;
data->parent.destroy_closure_func = client_test_data_free;
data->query = query;
g_test_add (
path, ClientTestFixture, data,
client_test_setup, func, client_test_teardown);
+
+ g_free (path);
}
static void
g_free (sexp);
}
+#ifdef ENABLE_PHONENUMBER
+
static void
locale_change_test (ClientTestFixture *fixture,
gconstpointer user_data)
e_util_free_string_slist (results);
}
+#endif /* ENABLE_PHONENUMBER */
+
+typedef struct {
+ gpointer func;
+ gboolean direct;
+ const gchar *prefix;
+} SuiteType;
+
gint
main (gint argc,
gchar **argv)
{
- gint ret;
+ gint ret, i;
+ SuiteType suites[] = {
+ { search_test, FALSE, "/EBookClient/Search" },
+ { uid_test, FALSE, "/EBookClient/SearchUID" },
+ { search_test, TRUE, "/EBookClient/DirectAccess/Search" },
+ { uid_test, TRUE, "/EBookClient/DirectAccess/SearchUID" }
+ };
#if !GLIB_CHECK_VERSION (2, 35, 1)
g_type_init ();
setlocale (LC_ALL, "en_US.UTF-8");
- /* Add search tests that fetch contacts */
- add_client_test (
- "/client/search/exact/fn", search_test,
- e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_IS, "James Brown"),
- 1);
- add_client_test (
- "/client/search/exact/name", search_test,
- e_book_query_vcard_field_test (EVC_N, E_BOOK_QUERY_IS, "Janet"),
- 1);
- add_client_test (
- "/client/search/prefix/fn", search_test,
- e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_BEGINS_WITH, "B"),
- 2);
- add_client_test (
- "/client/search/prefix/fn/percent", search_test,
- e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_BEGINS_WITH, "%"),
- 1);
- add_client_test (
- "/client/search/suffix/phone", search_test,
- e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_ENDS_WITH, "999"),
- 2);
- add_client_test (
- "/client/search/suffix/email", search_test,
- e_book_query_field_test (E_CONTACT_EMAIL, E_BOOK_QUERY_ENDS_WITH, "jackson.com"),
- 2);
+ /* Test all queries in 4 different combinations specified by the 'suites'
+ */
+ for (i = 0; i < G_N_ELEMENTS (suites); i++) {
-#ifdef ENABLE_PHONENUMBER
+ /* Add search tests that fetch contacts */
+ add_client_test (suites[i].prefix, "/Exact/FullName", suites[i].func,
+ e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_IS, "James Brown"),
+ 1, suites[i].direct);
- /* field based phone number queries do an index lookup */
- add_client_test (
- "/client/search/eqphone/exact/phone", search_test,
- e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_EQUALS_PHONE_NUMBER, "+1 221.542.3789"),
- 1);
- add_client_test (
- "/client/search/eqphone/national/phone", search_test,
- e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_EQUALS_NATIONAL_PHONE_NUMBER, "221.542.3789"),
- 1);
- add_client_test (
- "/client/search/eqphone/short/phone", search_test,
- e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_EQUALS_SHORT_PHONE_NUMBER, "5423789"),
- 1);
+ add_client_test (suites[i].prefix, "/Exact/Name", suites[i].func,
+ e_book_query_vcard_field_test (EVC_N, E_BOOK_QUERY_IS, "Janet"),
+ 1, suites[i].direct);
- /* vCard based phone number queries do a table scan */
- add_client_test (
- "/client/search/eqphone/exact/tel", search_test,
- e_book_query_vcard_field_test (EVC_TEL, E_BOOK_QUERY_EQUALS_PHONE_NUMBER, "+1 221.542.3789"),
- 1);
- add_client_test (
- "/client/search/eqphone/national/tel", search_test,
- e_book_query_vcard_field_test (EVC_TEL, E_BOOK_QUERY_EQUALS_NATIONAL_PHONE_NUMBER, "221.542.3789"),
- 1);
- add_client_test (
- "/client/search/eqphone/short/tel", search_test,
- e_book_query_vcard_field_test(EVC_TEL, E_BOOK_QUERY_EQUALS_SHORT_PHONE_NUMBER, "5423789"),
- 1);
+ add_client_test (suites[i].prefix, "/Prefix/FullName", suites[i].func,
+ e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_BEGINS_WITH, "B"),
+ 2, suites[i].direct);
+
+ add_client_test (suites[i].prefix, "/Prefix/FullName/Percent", suites[i].func,
+ e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_BEGINS_WITH, "%"),
+ 1, suites[i].direct);
+
+ add_client_test (suites[i].prefix, "/Suffix/Phone", suites[i].func,
+ e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_ENDS_WITH, "999"),
+ 2, suites[i].direct);
+
+ add_client_test (suites[i].prefix, "/Suffix/Email", suites[i].func,
+ e_book_query_field_test (E_CONTACT_EMAIL, E_BOOK_QUERY_ENDS_WITH, "jackson.com"),
+ 2, suites[i].direct);
+
+#ifdef ENABLE_PHONENUMBER
+
+ /* field based phone number queries do an index lookup */
+ add_client_test (suites[i].prefix, "/EqPhone/Exact/Phone", suites[i].func,
+ e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_EQUALS_PHONE_NUMBER, "+1 221.542.3789"),
+ 1, suites[i].direct);
+
+ add_client_test (suites[i].prefix, "/EqPhone/National/Phone", suites[i].func,
+ e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_EQUALS_NATIONAL_PHONE_NUMBER, "221.542.3789"),
+ 1, suites[i].direct);
+
+ add_client_test (suites[i].prefix, "/EqPhone/Short/Phone", suites[i].func,
+ e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_EQUALS_SHORT_PHONE_NUMBER, "5423789"),
+ 1, suites[i].direct);
+
+ /* vCard based phone number queries do a table scan */
+ add_client_test (suites[i].prefix, "/EqPhone/Exact/Tel", suites[i].func,
+ e_book_query_vcard_field_test (EVC_TEL, E_BOOK_QUERY_EQUALS_PHONE_NUMBER, "+1 221.542.3789"),
+ 1, suites[i].direct);
+ add_client_test (suites[i].prefix, "/EqPhone/National/Tel", suites[i].func,
+ e_book_query_vcard_field_test (EVC_TEL, E_BOOK_QUERY_EQUALS_NATIONAL_PHONE_NUMBER, "221.542.3789"),
+ 1, suites[i].direct);
+ add_client_test (suites[i].prefix, "/EqPhone/Short/Tel", suites[i].func,
+ e_book_query_vcard_field_test(EVC_TEL, E_BOOK_QUERY_EQUALS_SHORT_PHONE_NUMBER, "5423789"),
+ 1, suites[i].direct);
#endif /* ENABLE_PHONENUMBER */
- /* Add search tests that fetch uids */
- add_client_test (
- "/client/search-uid/exact/fn", uid_test,
- e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_IS, "James Brown"),
- 1);
- add_client_test (
- "/client/search-uid/exact/name", uid_test,
- e_book_query_vcard_field_test (EVC_N, E_BOOK_QUERY_IS, "Janet"),
- 1);
- add_client_test (
- "/client/search-uid/prefix/fn", uid_test,
- e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_BEGINS_WITH, "B"),
- 2);
- add_client_test (
- "/client/search-uid/prefix/fn/percent", uid_test,
- e_book_query_field_test (E_CONTACT_FULL_NAME, E_BOOK_QUERY_BEGINS_WITH, "%"),
- 1);
- add_client_test (
- "/client/search-uid/suffix/phone", uid_test,
- e_book_query_field_test (E_CONTACT_TEL, E_BOOK_QUERY_ENDS_WITH, "999"),
- 2);
- add_client_test (
- "/client/search-uid/suffix/email", uid_test,
- e_book_query_field_test (E_CONTACT_EMAIL, E_BOOK_QUERY_ENDS_WITH, "jackson.com"),
- 2);
+ }
#ifdef ENABLE_PHONENUMBER
add_client_test (
- "/client/search-uid/eqphone/locale-change", locale_change_test,
- NULL, 0);
+ "/EBookClient", "/EqPhone/LocaleChange", locale_change_test,
+ NULL, 0, FALSE);
+
+ add_client_test (
+ "/EBookClient/DirectAccess", "/EqPhone/LocaleChange", locale_change_test,
+ NULL, 0, TRUE);
#endif /* ENABLE_PHONENUMBER */
test_data_new (const gchar *vcard_name,
const gchar *formatted_number,
const gchar *country_calling_code,
- const gchar *national_number)
+ const gchar *national_number,
+ gboolean direct)
{
TestData *const data = g_new0 (TestData, 1);
- data->parent.type = E_TEST_SERVER_ADDRESS_BOOK;
+ data->parent.type = direct ? E_TEST_SERVER_DIRECT_ADDRESS_BOOK : E_TEST_SERVER_ADDRESS_BOOK;
data->parent.destroy_closure_func = test_data_free;
data->vcard_name = g_strdup (vcard_name);
data->formatted_number = g_strdup (formatted_number);
g_test_add (
"/EBookClient/AddContact/AddE164Param/1", ETestServerFixture,
- test_data_new ("custom-1", "+1-221-5423789", "+1", "2215423789"),
+ test_data_new ("custom-1", "+1-221-5423789", "+1", "2215423789", FALSE),
e_test_server_utils_setup, test_add_e164_param,
e_test_server_utils_teardown);
g_test_add (
"/EBookClient/AddContact/AddE164Param/2", ETestServerFixture,
- test_data_new ("custom-2", "7654321", NULL, "7654321"),
+ test_data_new ("custom-2", "7654321", NULL, "7654321", FALSE),
+ e_test_server_utils_setup, test_add_e164_param,
+ e_test_server_utils_teardown);
+ g_test_add (
+ "/EBookClient/DirectAccess/AddContact/AddE164Param/1", ETestServerFixture,
+ test_data_new ("custom-1", "+1-221-5423789", "+1", "2215423789", TRUE),
+ e_test_server_utils_setup, test_add_e164_param,
+ e_test_server_utils_teardown);
+ g_test_add (
+ "/EBookClient/DirectAccess/AddContact/AddE164Param/2", ETestServerFixture,
+ test_data_new ("custom-2", "7654321", NULL, "7654321", TRUE),
e_test_server_utils_setup, test_add_e164_param,
e_test_server_utils_teardown);
#include "e-test-server-utils.h"
static ETestServerClosure book_closure = { E_TEST_SERVER_ADDRESS_BOOK, NULL, 0 };
+static ETestServerClosure direct_book_closure = { E_TEST_SERVER_DIRECT_ADDRESS_BOOK, NULL, 0 };
#define N_THREADS 5
#define N_CONTACTS 5
typedef struct {
+ ETestServerClosure *closure;
GThread *thread;
const gchar *book_uid;
EBookClient *client;
if (!source)
g_error ("Unable to fetch source uid '%s' from the registry", data->book_uid);
- if (g_getenv ("DEBUG_DIRECT") != NULL)
- data->client = e_book_client_connect_direct_sync (registry, source, NULL, &error);
+ if (data->closure->type == E_TEST_SERVER_DIRECT_ADDRESS_BOOK)
+ data->client = (EBookClient *)e_book_client_connect_direct_sync (registry, source, NULL, &error);
else
- data->client = e_book_client_connect_sync (source, NULL, &error);
+ data->client = (EBookClient *)e_book_client_connect_sync (source, NULL, &error);
if (!data->client)
g_error ("Unable to create EBookClient for uid '%s': %s", data->book_uid, error->message);
}
static ThreadData *
-create_test_thread (const gchar *book_uid)
+create_test_thread (const gchar *book_uid,
+ gconstpointer user_data)
{
ThreadData *data = g_slice_new0 (ThreadData);
data->book_uid = book_uid;
+ data->closure = (ETestServerClosure *)user_data;
g_mutex_init (&data->complete_mutex);
g_cond_init (&data->complete_cond);
/* Create all concurrent threads accessing the same addressbook */
tests = g_new0 (ThreadData *, N_THREADS);
for (i = 0; i < N_THREADS; i++)
- tests[i] = create_test_thread (book_uid);
+ tests[i] = create_test_thread (book_uid, user_data);
/* Wait for all threads to receive the complete signal */
g_test_add ("/EBookClient/ConcurrentViews", ETestServerFixture, &book_closure,
e_test_server_utils_setup, test_concurrent_views, e_test_server_utils_teardown);
+ g_test_add ("/EBookClient/DirectAccess/ConcurrentViews", ETestServerFixture, &direct_book_closure,
+ e_test_server_utils_setup, test_concurrent_views, e_test_server_utils_teardown);
return e_test_server_utils_run ();
}