Ported ECalClient tests to use ETestServerFixture framework
[platform/upstream/evolution-data-server.git] / tests / libecal / client / test-client-get-free-busy.c
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2
3 #include <stdlib.h>
4 #include <libecal/libecal.h>
5 #include <libical/ical.h>
6
7 #include "client-test-utils.h"
8 #include "e-test-server-utils.h"
9
10 static ETestServerClosure cal_closure =
11         { E_TEST_SERVER_CALENDAR, NULL, E_CAL_CLIENT_SOURCE_TYPE_EVENTS };
12
13 #define USER_EMAIL "user@example.com"
14
15 static void
16 free_busy_data_cb (ECalClient *client,
17                    const GSList *free_busy,
18                    const gchar *func_name)
19 {
20         g_print ("   Received %d Free/Busy components from %s\n", g_slist_length ((GSList *) free_busy), func_name);
21 }
22
23 static void
24 test_get_free_busy_sync (ETestServerFixture *fixture,
25                          gconstpointer       user_data)
26 {
27         ECalClient *cal_client;
28         GError *error = NULL;
29         icaltimezone *utc;
30         GSList *users = NULL;
31         time_t start, end;
32         gulong sig_id;
33
34         cal_client = E_TEST_SERVER_UTILS_SERVICE (fixture, ECalClient);
35
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);
40
41         sig_id = g_signal_connect (cal_client, "free-busy-data", G_CALLBACK (free_busy_data_cb), (gpointer) G_STRFUNC);
42
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);
45
46         g_signal_handler_disconnect (cal_client, sig_id);
47
48         g_slist_free (users);
49 }
50
51 static void
52 async_get_free_busy_result_ready (GObject *source_object,
53                                   GAsyncResult *result,
54                                   gpointer user_data)
55 {
56         ECalClient *cal_client;
57         GError *error = NULL;
58         GMainLoop *loop = (GMainLoop *)user_data;
59
60         cal_client = E_CAL_CLIENT (source_object);
61
62         if (!e_cal_client_get_free_busy_finish (cal_client, result, &error))
63                 g_error ("create object finish: %s", error->message);
64
65         if (!e_client_remove_sync (E_CLIENT (cal_client), NULL, &error))
66                 g_error ("client remove sync: %s", error->message);
67
68         g_main_loop_quit (loop);
69 }
70
71 static void
72 test_get_free_busy_async (ETestServerFixture *fixture,
73                           gconstpointer       user_data)
74 {
75         ECalClient *cal_client;
76         icaltimezone *utc;
77         GSList *users = NULL;
78         time_t start, end;
79
80         cal_client = E_TEST_SERVER_UTILS_SERVICE (fixture, ECalClient);
81
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);
86
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);
89
90         e_cal_client_get_free_busy (cal_client, start, end, users, NULL, async_get_free_busy_result_ready, fixture->loop);
91         g_slist_free (users);
92
93         g_main_loop_run (fixture->loop);
94 }
95
96 gint
97 main (gint argc,
98       gchar **argv)
99 {
100 #if !GLIB_CHECK_VERSION (2, 35, 1)
101         g_type_init ();
102 #endif
103         g_test_init (&argc, &argv, NULL);
104
105         g_test_add ("/ECalClient/GetFreeBusy/Sync", ETestServerFixture, &cal_closure,
106                     e_test_server_utils_setup, test_get_free_busy_sync, e_test_server_utils_teardown);
107         g_test_add ("/ECalClient/GetFreeBusy/Async", ETestServerFixture, &cal_closure,
108                     e_test_server_utils_setup, test_get_free_busy_async, e_test_server_utils_teardown);
109
110         return e_test_server_utils_run ();
111 }