1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
4 #include <libecal/libecal.h>
5 #include <libical/ical.h>
7 #include "client-test-utils.h"
8 #include "e-test-server-utils.h"
10 static ETestServerClosure cal_closure =
11 { E_TEST_SERVER_CALENDAR, NULL, E_CAL_CLIENT_SOURCE_TYPE_EVENTS };
13 #define USER_EMAIL "user@example.com"
16 free_busy_data_cb (ECalClient *client,
17 const GSList *free_busy,
18 const gchar *func_name)
20 g_print (" Received %d Free/Busy components from %s\n", g_slist_length ((GSList *) free_busy), func_name);
24 test_get_free_busy_sync (ETestServerFixture *fixture,
25 gconstpointer user_data)
27 ECalClient *cal_client;
34 cal_client = E_TEST_SERVER_UTILS_SERVICE (fixture, ECalClient);
36 utc = icaltimezone_get_utc_timezone ();
37 start = time_from_isodate ("20040212T000000Z");
38 end = time_add_day_with_zone (start, 2, utc);
39 users = g_slist_append (users, (gpointer) USER_EMAIL);
41 sig_id = g_signal_connect (cal_client, "free-busy-data", G_CALLBACK (free_busy_data_cb), (gpointer) G_STRFUNC);
43 if (!e_cal_client_get_free_busy_sync (cal_client, start, end, users, NULL, &error))
44 g_error ("get free busy sync: %s", error->message);
46 g_signal_handler_disconnect (cal_client, sig_id);
52 async_get_free_busy_result_ready (GObject *source_object,
56 ECalClient *cal_client;
58 GMainLoop *loop = (GMainLoop *) user_data;
60 cal_client = E_CAL_CLIENT (source_object);
62 if (!e_cal_client_get_free_busy_finish (cal_client, result, &error))
63 g_error ("create object finish: %s", error->message);
65 if (!e_client_remove_sync (E_CLIENT (cal_client), NULL, &error))
66 g_error ("client remove sync: %s", error->message);
68 g_main_loop_quit (loop);
72 test_get_free_busy_async (ETestServerFixture *fixture,
73 gconstpointer user_data)
75 ECalClient *cal_client;
80 cal_client = E_TEST_SERVER_UTILS_SERVICE (fixture, ECalClient);
82 utc = icaltimezone_get_utc_timezone ();
83 start = time_from_isodate ("20040212T000000Z");
84 end = time_add_day_with_zone (start, 2, utc);
85 users = g_slist_append (users, (gpointer) USER_EMAIL);
87 /* here is all Free/Busy information received */
88 g_signal_connect (cal_client, "free-busy-data", G_CALLBACK (free_busy_data_cb), (gpointer) G_STRFUNC);
90 e_cal_client_get_free_busy (cal_client, start, end, users, NULL, async_get_free_busy_result_ready, fixture->loop);
93 g_main_loop_run (fixture->loop);
100 #if !GLIB_CHECK_VERSION (2, 35, 1)
103 g_test_init (&argc, &argv, NULL);
106 "/ECalClient/GetFreeBusy/Sync", ETestServerFixture, &cal_closure,
107 e_test_server_utils_setup, test_get_free_busy_sync, e_test_server_utils_teardown);
109 "/ECalClient/GetFreeBusy/Async", ETestServerFixture, &cal_closure,
110 e_test_server_utils_setup, test_get_free_busy_async, e_test_server_utils_teardown);
112 return e_test_server_utils_run ();