1
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
9
print_engines (const GList *engines)
11
for (; engines; engines = g_list_next (engines)) {
12
IBusEngineDesc *engine_desc = IBUS_ENGINE_DESC (engines->data);
13
g_assert (engine_desc);
15
g_debug ("%s (id:%s, icon:%s)",
16
ibus_engine_desc_get_longname (engine_desc),
17
ibus_engine_desc_get_name (engine_desc),
18
ibus_engine_desc_get_icon (engine_desc));
24
test_list_active_engines (void)
27
IBUS_TYPE_ENGINE_DESC;
29
engines = ibus_bus_list_active_engines (bus);
30
print_engines (engines);
32
g_list_foreach (engines, (GFunc) g_object_unref, NULL);
33
g_list_free (engines);
37
test_list_engines (void)
40
IBUS_TYPE_ENGINE_DESC;
42
engines = ibus_bus_list_engines (bus);
43
print_engines (engines);
45
g_list_foreach (engines, (GFunc) g_object_unref, NULL);
46
g_list_free (engines);
49
static void call_next_async_function (void);
52
finish_request_name_async (GObject *source_object,
57
guint id = ibus_bus_request_name_async_finish (bus,
61
g_debug ("ibus_bus_request_name_async_finish: OK");
62
call_next_async_function ();
66
start_request_name_async (void)
68
ibus_bus_request_name_async (bus,
69
"org.freedesktop.IBus.IBusBusTest",
72
NULL, /* cancellable */
73
finish_request_name_async,
74
NULL); /* user_data */
79
finish_name_has_owner_async (GObject *source_object,
84
gboolean has_owner = ibus_bus_name_has_owner_async_finish (bus,
88
g_debug ("ibus_bus_name_has_owner_async_finish: OK");
89
call_next_async_function ();
93
start_name_has_owner_async (void)
95
ibus_bus_name_has_owner_async (bus,
96
"org.freedesktop.IBus.IBusBusTest",
98
NULL, /* cancellable */
99
finish_name_has_owner_async,
100
NULL); /* user_data */
104
finish_get_name_owner_async (GObject *source_object,
108
GError *error = NULL;
109
gchar *owner = ibus_bus_get_name_owner_async_finish (bus,
114
g_debug ("ibus_bus_name_get_name_owner_async_finish: OK");
115
call_next_async_function ();
119
start_get_name_owner_async (void)
121
ibus_bus_get_name_owner_async (bus,
122
"org.freedesktop.IBus.IBusBusTest",
124
NULL, /* cancellable */
125
finish_get_name_owner_async,
126
NULL); /* user_data */
130
finish_release_name_async (GObject *source_object,
134
GError *error = NULL;
135
guint id = ibus_bus_release_name_async_finish (bus,
139
g_debug ("ibus_bus_release_name_async_finish: OK");
140
call_next_async_function ();
144
start_release_name_async (void)
146
ibus_bus_release_name_async (bus,
147
"org.freedesktop.IBus.IBusBusTest",
149
NULL, /* cancellable */
150
finish_release_name_async,
151
NULL); /* user_data */
155
finish_add_match_async (GObject *source_object,
159
GError *error = NULL;
160
gboolean result = ibus_bus_add_match_async_finish (bus,
164
g_debug ("ibus_bus_add_match_finish: OK");
165
call_next_async_function ();
169
start_add_match_async (void)
171
ibus_bus_add_match_async (bus,
174
NULL, /* cancellable */
175
finish_add_match_async,
176
NULL); /* user_data */
180
finish_remove_match_async (GObject *source_object,
184
GError *error = NULL;
185
gboolean result = ibus_bus_remove_match_async_finish (bus,
189
g_debug ("ibus_bus_remove_match_finish: OK");
190
call_next_async_function ();
194
start_remove_match_async (void)
196
ibus_bus_remove_match_async (bus,
199
NULL, /* cancellable */
200
finish_remove_match_async,
201
NULL); /* user_data */
204
static int create_input_context_count = 0;
206
finish_create_input_context_async_sucess (GObject *source_object,
210
GMainLoop *loop = (GMainLoop *)user_data;
211
GError *error = NULL;
212
IBusInputContext *context =
213
ibus_bus_create_input_context_async_finish (bus, res, &error);
215
g_assert (IBUS_IS_INPUT_CONTEXT (context));
216
g_object_unref (context);
217
if (--create_input_context_count == 0)
218
g_main_loop_quit (loop);
222
finish_create_input_context_async_failed (GObject *source_object,
226
GMainLoop *loop = (GMainLoop *)user_data;
227
GError *error = NULL;
228
IBusInputContext *context =
229
ibus_bus_create_input_context_async_finish (bus, res, &error);
231
g_assert (context == NULL);
232
g_assert (error != NULL);
233
g_error_free (error);
234
if (--create_input_context_count <= 0)
235
g_main_loop_quit (loop);
239
test_create_input_context_async (void)
241
GMainLoop *loop = NULL;
242
GCancellable *cancellable = NULL;
245
create_input_context_count = 1;
246
loop = g_main_loop_new (NULL, TRUE);
247
ibus_bus_create_input_context_async (bus,
250
NULL, /* cancellable */
251
finish_create_input_context_async_sucess,
252
loop); /* user_data */
253
g_main_loop_run (loop);
254
g_main_loop_unref (loop);
256
/* call create, and then cancel */
257
create_input_context_count = 1;
258
loop = g_main_loop_new (NULL, TRUE);
259
cancellable = g_cancellable_new ();
260
ibus_bus_create_input_context_async (bus,
263
cancellable, /* cancellable */
264
finish_create_input_context_async_failed,
265
loop); /* user_data */
266
g_cancellable_cancel (cancellable);
267
g_object_unref (cancellable);
268
g_main_loop_run (loop);
269
g_main_loop_unref (loop);
271
/* ceate four IC, and cancel two */
272
create_input_context_count = 4;
273
loop = g_main_loop_new (NULL, TRUE);
274
cancellable = g_cancellable_new ();
275
ibus_bus_create_input_context_async (bus,
278
cancellable, /* cancellable */
279
finish_create_input_context_async_failed,
280
loop); /* user_data */
281
ibus_bus_create_input_context_async (bus,
284
NULL, /* cancellable */
285
finish_create_input_context_async_sucess,
286
loop); /* user_data */
287
ibus_bus_create_input_context_async (bus,
290
NULL, /* cancellable */
291
finish_create_input_context_async_sucess,
292
loop); /* user_data */
293
ibus_bus_create_input_context_async (bus,
296
cancellable, /* cancellable */
297
finish_create_input_context_async_failed,
298
loop); /* user_data */
299
g_cancellable_cancel (cancellable);
300
g_object_unref (cancellable);
302
g_main_loop_run (loop);
303
g_main_loop_unref (loop);
307
finish_current_input_context_async (GObject *source_object,
311
GError *error = NULL;
312
g_free (ibus_bus_current_input_context_async_finish (bus,
316
g_debug ("ibus_bus_current_input_context_finish: OK");
317
call_next_async_function ();
321
start_current_input_context_async (void)
323
ibus_bus_current_input_context_async (bus,
325
NULL, /* cancellable */
326
finish_current_input_context_async,
327
NULL); /* user_data */
331
finish_list_engines_async (GObject *source_object,
335
GError *error = NULL;
336
GList *engines = ibus_bus_list_engines_async_finish (bus,
340
g_list_foreach (engines, (GFunc) g_object_unref, NULL);
341
g_list_free (engines);
342
g_debug ("ibus_bus_list_engines_finish: OK");
343
call_next_async_function ();
347
start_list_engines_async (void)
349
ibus_bus_list_engines_async (bus,
351
NULL, /* cancellable */
352
finish_list_engines_async,
353
NULL); /* user_data */
357
finish_list_active_engines_async (GObject *source_object,
361
GError *error = NULL;
362
GList *engines = ibus_bus_list_active_engines_async_finish (bus,
366
g_list_foreach (engines, (GFunc) g_object_unref, NULL);
367
g_list_free (engines);
368
g_debug ("ibus_bus_list_active_engines_finish: OK");
369
call_next_async_function ();
373
start_list_active_engines_async (void)
375
ibus_bus_list_active_engines_async (bus,
377
NULL, /* cancellable */
378
finish_list_active_engines_async,
379
NULL); /* user_data */
383
finish_get_use_sys_layout_async (GObject *source_object,
387
GError *error = NULL;
388
ibus_bus_get_use_sys_layout_async_finish (bus,
391
g_debug ("ibus_bus_get_use_sys_layout_finish: OK");
392
call_next_async_function ();
396
start_get_use_sys_layout_async (void)
398
ibus_bus_get_use_sys_layout_async (bus,
400
NULL, /* cancellable */
401
finish_get_use_sys_layout_async,
402
NULL); /* user_data */
406
finish_get_use_global_engine_async (GObject *source_object,
410
GError *error = NULL;
411
ibus_bus_get_use_global_engine_async_finish (bus,
414
g_debug ("ibus_bus_get_use_global_engine_finish: OK");
415
call_next_async_function ();
419
start_get_use_global_engine_async (void)
421
ibus_bus_get_use_global_engine_async (bus,
423
NULL, /* cancellable */
424
finish_get_use_global_engine_async,
425
NULL); /* user_data */
429
finish_is_global_engine_enabled_async (GObject *source_object,
433
GError *error = NULL;
434
ibus_bus_is_global_engine_enabled_async_finish (bus,
437
g_debug ("ibus_bus_is_global_engine_enabled_finish: OK");
438
call_next_async_function ();
442
start_is_global_engine_enabled_async (void)
444
ibus_bus_is_global_engine_enabled_async (bus,
446
NULL, /* cancellable */
447
finish_is_global_engine_enabled_async,
448
NULL); /* user_data */
452
finish_get_global_engine_async (GObject *source_object,
456
GError *error = NULL;
457
IBusEngineDesc *desc = ibus_bus_get_global_engine_async_finish (bus,
461
g_object_unref (desc);
462
g_debug ("ibus_bus_get_global_engine_finish: OK");
463
call_next_async_function ();
467
start_get_global_engine_async (void)
469
ibus_bus_get_global_engine_async (bus,
471
NULL, /* cancellable */
472
finish_get_global_engine_async,
473
NULL); /* user_data */
477
finish_set_global_engine_async (GObject *source_object,
481
GError *error = NULL;
482
ibus_bus_set_global_engine_async_finish (bus,
485
g_debug ("ibus_bus_set_global_engine_finish: OK");
486
call_next_async_function ();
490
start_set_global_engine_async (void)
492
ibus_bus_set_global_engine_async (bus,
495
NULL, /* cancellable */
496
finish_set_global_engine_async,
497
NULL); /* user_data */
501
finish_exit_async (GObject *source_object,
505
GError *error = NULL;
506
gboolean result = ibus_bus_exit_async_finish (bus,
510
g_debug ("ibus_bus_exit_finish: OK");
511
call_next_async_function ();
515
start_exit_async (void)
517
ibus_bus_exit_async (bus,
520
NULL, /* cancellable */
522
NULL); /* user_data */
526
test_async_apis_finish (gpointer user_data)
533
test_async_apis (void)
536
call_next_async_function ();
541
call_next_async_function (void)
543
static void (*async_functions[])(void) = {
544
start_request_name_async,
545
start_name_has_owner_async,
546
start_get_name_owner_async,
547
start_release_name_async,
548
start_add_match_async,
549
start_remove_match_async,
550
start_current_input_context_async,
551
// FIXME test ibus_bus_register_component_async.
552
start_list_engines_async,
553
start_list_active_engines_async,
554
start_get_use_sys_layout_async,
555
start_get_use_global_engine_async,
556
start_is_global_engine_enabled_async,
557
start_set_global_engine_async,
558
start_get_global_engine_async,
561
static guint index = 0;
563
// Use g_timeout_add to make sure test_async_apis finishes even if async_functions is empty.
564
if (index >= G_N_ELEMENTS (async_functions))
565
g_timeout_add (1, test_async_apis_finish, NULL);
567
(*async_functions[index++])();
576
g_test_init (&argc, &argv, NULL);
578
bus = ibus_bus_new ();
580
g_test_add_func ("/ibus/list-engines", test_list_engines);
581
g_test_add_func ("/ibus/list-active-engines", test_list_active_engines);
582
g_test_add_func ("/ibus/create-input-context-async",
583
test_create_input_context_async);
584
g_test_add_func ("/ibus/async-apis", test_async_apis);
586
result = g_test_run ();
587
g_object_unref (bus);