1 /* GLib testing framework examples and tests
3 * Copyright (C) 2008-2010 Red Hat, Inc.
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General
16 * Public License along with this library; if not, write to the
17 * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18 * Boston, MA 02111-1307, USA.
20 * Author: David Zeuthen <davidz@redhat.com>
26 #include "gdbus-tests.h"
28 /* all tests rely on a shared mainloop */
29 static GMainLoop *loop;
31 /* ---------------------------------------------------------------------------------------------------- */
32 /* Test that g_bus_own_name() works correctly */
33 /* ---------------------------------------------------------------------------------------------------- */
38 gboolean expect_null_connection;
39 guint num_bus_acquired;
46 own_name_data_free_func (OwnNameData *data)
48 data->num_free_func++;
49 g_main_loop_quit (loop);
53 bus_acquired_handler (GDBusConnection *connection,
57 OwnNameData *data = user_data;
58 g_dbus_connection_set_exit_on_close (connection, FALSE);
59 data->num_bus_acquired += 1;
60 g_main_loop_quit (loop);
64 name_acquired_handler (GDBusConnection *connection,
68 OwnNameData *data = user_data;
69 data->num_acquired += 1;
70 g_main_loop_quit (loop);
74 name_lost_handler (GDBusConnection *connection,
78 OwnNameData *data = user_data;
79 if (data->expect_null_connection)
81 g_assert (connection == NULL);
85 g_assert (connection != NULL);
86 g_dbus_connection_set_exit_on_close (connection, FALSE);
89 g_main_loop_quit (loop);
93 test_bus_own_name (void)
102 gboolean name_has_owner_reply;
107 name = "org.gtk.GDBus.Name1";
110 * First check that name_lost_handler() is invoked if there is no bus.
112 * Also make sure name_lost_handler() isn't invoked when unowning the name.
114 data.num_bus_acquired = 0;
115 data.num_free_func = 0;
116 data.num_acquired = 0;
118 data.expect_null_connection = TRUE;
119 id = g_bus_own_name (G_BUS_TYPE_SESSION,
121 G_BUS_NAME_OWNER_FLAGS_NONE,
122 bus_acquired_handler,
123 name_acquired_handler,
126 (GDestroyNotify) own_name_data_free_func);
127 g_assert_cmpint (data.num_bus_acquired, ==, 0);
128 g_assert_cmpint (data.num_acquired, ==, 0);
129 g_assert_cmpint (data.num_lost, ==, 0);
130 g_main_loop_run (loop);
131 g_assert_cmpint (data.num_bus_acquired, ==, 0);
132 g_assert_cmpint (data.num_acquired, ==, 0);
133 g_assert_cmpint (data.num_lost, ==, 1);
134 g_bus_unown_name (id);
135 g_assert_cmpint (data.num_acquired, ==, 0);
136 g_assert_cmpint (data.num_lost, ==, 1);
137 g_assert_cmpint (data.num_free_func, ==, 1);
140 * Bring up a bus, then own a name and check bus_acquired_handler() then name_acquired_handler() is invoked.
143 data.num_bus_acquired = 0;
144 data.num_acquired = 0;
146 data.expect_null_connection = FALSE;
147 id = g_bus_own_name (G_BUS_TYPE_SESSION,
149 G_BUS_NAME_OWNER_FLAGS_NONE,
150 bus_acquired_handler,
151 name_acquired_handler,
154 (GDestroyNotify) own_name_data_free_func);
155 g_assert_cmpint (data.num_bus_acquired, ==, 0);
156 g_assert_cmpint (data.num_acquired, ==, 0);
157 g_assert_cmpint (data.num_lost, ==, 0);
158 g_main_loop_run (loop);
159 g_assert_cmpint (data.num_bus_acquired, ==, 1);
160 g_assert_cmpint (data.num_acquired, ==, 0);
161 g_assert_cmpint (data.num_lost, ==, 0);
162 g_main_loop_run (loop);
163 g_assert_cmpint (data.num_bus_acquired, ==, 1);
164 g_assert_cmpint (data.num_acquired, ==, 1);
165 g_assert_cmpint (data.num_lost, ==, 0);
168 * Check that the name was actually acquired.
170 c = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
171 g_assert (c != NULL);
172 g_assert (!g_dbus_connection_is_closed (c));
173 result = g_dbus_connection_call_sync (c,
174 "org.freedesktop.DBus", /* bus name */
175 "/org/freedesktop/DBus", /* object path */
176 "org.freedesktop.DBus", /* interface name */
177 "NameHasOwner", /* method name */
178 g_variant_new ("(s)", name),
179 G_VARIANT_TYPE ("(b)"),
180 G_DBUS_CALL_FLAGS_NONE,
184 g_assert_no_error (error);
185 g_assert (result != NULL);
186 g_variant_get (result, "(b)", &name_has_owner_reply);
187 g_assert (name_has_owner_reply);
188 g_variant_unref (result);
191 * Stop owning the name - this should invoke our free func
193 g_bus_unown_name (id);
194 g_assert_cmpint (data.num_free_func, ==, 2);
197 * Check that the name was actually released.
199 result = g_dbus_connection_call_sync (c,
200 "org.freedesktop.DBus", /* bus name */
201 "/org/freedesktop/DBus", /* object path */
202 "org.freedesktop.DBus", /* interface name */
203 "NameHasOwner", /* method name */
204 g_variant_new ("(s)", name),
205 G_VARIANT_TYPE ("(b)"),
206 G_DBUS_CALL_FLAGS_NONE,
210 g_assert_no_error (error);
211 g_assert (result != NULL);
212 g_variant_get (result, "(b)", &name_has_owner_reply);
213 g_assert (!name_has_owner_reply);
214 g_variant_unref (result);
217 * Own the name again.
219 data.num_bus_acquired = 0;
220 data.num_acquired = 0;
222 data.expect_null_connection = FALSE;
223 id = g_bus_own_name_with_closures (G_BUS_TYPE_SESSION,
225 G_BUS_NAME_OWNER_FLAGS_NONE,
226 g_cclosure_new (G_CALLBACK (bus_acquired_handler),
229 g_cclosure_new (G_CALLBACK (name_acquired_handler),
232 g_cclosure_new (G_CALLBACK (name_lost_handler),
234 (GClosureNotify) own_name_data_free_func));
235 g_assert_cmpint (data.num_bus_acquired, ==, 0);
236 g_assert_cmpint (data.num_acquired, ==, 0);
237 g_assert_cmpint (data.num_lost, ==, 0);
238 g_main_loop_run (loop);
239 g_assert_cmpint (data.num_bus_acquired, ==, 1);
240 g_assert_cmpint (data.num_acquired, ==, 0);
241 g_assert_cmpint (data.num_lost, ==, 0);
242 g_main_loop_run (loop);
243 g_assert_cmpint (data.num_bus_acquired, ==, 1);
244 g_assert_cmpint (data.num_acquired, ==, 1);
245 g_assert_cmpint (data.num_lost, ==, 0);
248 * Try owning the name with another object on the same connection - this should
249 * fail because we already own the name.
251 data2.num_free_func = 0;
252 data2.num_bus_acquired = 0;
253 data2.num_acquired = 0;
255 data2.expect_null_connection = FALSE;
256 id2 = g_bus_own_name (G_BUS_TYPE_SESSION,
258 G_BUS_NAME_OWNER_FLAGS_NONE,
259 bus_acquired_handler,
260 name_acquired_handler,
263 (GDestroyNotify) own_name_data_free_func);
264 g_assert_cmpint (data2.num_bus_acquired, ==, 0);
265 g_assert_cmpint (data2.num_acquired, ==, 0);
266 g_assert_cmpint (data2.num_lost, ==, 0);
267 g_main_loop_run (loop);
268 g_assert_cmpint (data2.num_bus_acquired, ==, 1);
269 g_assert_cmpint (data2.num_acquired, ==, 0);
270 g_assert_cmpint (data2.num_lost, ==, 0);
271 g_main_loop_run (loop);
272 g_assert_cmpint (data2.num_bus_acquired, ==, 1);
273 g_assert_cmpint (data2.num_acquired, ==, 0);
274 g_assert_cmpint (data2.num_lost, ==, 1);
275 g_bus_unown_name (id2);
276 g_assert_cmpint (data2.num_bus_acquired, ==, 1);
277 g_assert_cmpint (data2.num_acquired, ==, 0);
278 g_assert_cmpint (data2.num_lost, ==, 1);
279 g_assert_cmpint (data2.num_free_func, ==, 1);
282 * Create a secondary (e.g. private) connection and try owning the name on that
283 * connection. This should fail both with and without _REPLACE because we
284 * didn't specify ALLOW_REPLACEMENT.
286 c2 = _g_bus_get_priv (G_BUS_TYPE_SESSION, NULL, NULL);
287 g_assert (c2 != NULL);
288 g_assert (!g_dbus_connection_is_closed (c2));
289 /* first without _REPLACE */
290 data2.num_bus_acquired = 0;
291 data2.num_acquired = 0;
293 data2.expect_null_connection = FALSE;
294 data2.num_free_func = 0;
295 id2 = g_bus_own_name_on_connection (c2,
297 G_BUS_NAME_OWNER_FLAGS_NONE,
298 name_acquired_handler,
301 (GDestroyNotify) own_name_data_free_func);
302 g_assert_cmpint (data2.num_bus_acquired, ==, 0);
303 g_assert_cmpint (data2.num_acquired, ==, 0);
304 g_assert_cmpint (data2.num_lost, ==, 0);
305 g_main_loop_run (loop);
306 g_assert_cmpint (data2.num_bus_acquired, ==, 0);
307 g_assert_cmpint (data2.num_acquired, ==, 0);
308 g_assert_cmpint (data2.num_lost, ==, 1);
309 g_bus_unown_name (id2);
310 g_assert_cmpint (data2.num_bus_acquired, ==, 0);
311 g_assert_cmpint (data2.num_acquired, ==, 0);
312 g_assert_cmpint (data2.num_lost, ==, 1);
313 g_assert_cmpint (data2.num_free_func, ==, 1);
314 /* then with _REPLACE */
315 data2.num_bus_acquired = 0;
316 data2.num_acquired = 0;
318 data2.expect_null_connection = FALSE;
319 data2.num_free_func = 0;
320 id2 = g_bus_own_name_on_connection (c2,
322 G_BUS_NAME_OWNER_FLAGS_REPLACE,
323 name_acquired_handler,
326 (GDestroyNotify) own_name_data_free_func);
327 g_assert_cmpint (data2.num_bus_acquired, ==, 0);
328 g_assert_cmpint (data2.num_acquired, ==, 0);
329 g_assert_cmpint (data2.num_lost, ==, 0);
330 g_main_loop_run (loop);
331 g_assert_cmpint (data2.num_bus_acquired, ==, 0);
332 g_assert_cmpint (data2.num_acquired, ==, 0);
333 g_assert_cmpint (data2.num_lost, ==, 1);
334 g_bus_unown_name (id2);
335 g_assert_cmpint (data2.num_bus_acquired, ==, 0);
336 g_assert_cmpint (data2.num_acquired, ==, 0);
337 g_assert_cmpint (data2.num_lost, ==, 1);
338 g_assert_cmpint (data2.num_free_func, ==, 1);
341 * Stop owning the name and grab it again with _ALLOW_REPLACEMENT.
343 data.expect_null_connection = FALSE;
344 g_bus_unown_name (id);
345 g_assert_cmpint (data.num_bus_acquired, ==, 1);
346 g_assert_cmpint (data.num_acquired, ==, 1);
347 g_assert_cmpint (data.num_free_func, ==, 3);
349 data.num_bus_acquired = 0;
350 data.num_acquired = 0;
352 data.expect_null_connection = FALSE;
353 id = g_bus_own_name (G_BUS_TYPE_SESSION,
355 G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT,
356 bus_acquired_handler,
357 name_acquired_handler,
360 (GDestroyNotify) own_name_data_free_func);
361 g_assert_cmpint (data.num_bus_acquired, ==, 0);
362 g_assert_cmpint (data.num_acquired, ==, 0);
363 g_assert_cmpint (data.num_lost, ==, 0);
364 g_main_loop_run (loop);
365 g_assert_cmpint (data.num_bus_acquired, ==, 1);
366 g_assert_cmpint (data.num_acquired, ==, 0);
367 g_assert_cmpint (data.num_lost, ==, 0);
368 g_main_loop_run (loop);
369 g_assert_cmpint (data.num_bus_acquired, ==, 1);
370 g_assert_cmpint (data.num_acquired, ==, 1);
371 g_assert_cmpint (data.num_lost, ==, 0);
374 * Now try to grab the name from the secondary connection.
377 /* first without _REPLACE - this won't make us acquire the name */
378 data2.num_bus_acquired = 0;
379 data2.num_acquired = 0;
381 data2.expect_null_connection = FALSE;
382 data2.num_free_func = 0;
383 id2 = g_bus_own_name_on_connection (c2,
385 G_BUS_NAME_OWNER_FLAGS_NONE,
386 name_acquired_handler,
389 (GDestroyNotify) own_name_data_free_func);
390 g_assert_cmpint (data2.num_bus_acquired, ==, 0);
391 g_assert_cmpint (data2.num_acquired, ==, 0);
392 g_assert_cmpint (data2.num_lost, ==, 0);
393 g_main_loop_run (loop);
394 g_assert_cmpint (data2.num_bus_acquired, ==, 0);
395 g_assert_cmpint (data2.num_acquired, ==, 0);
396 g_assert_cmpint (data2.num_lost, ==, 1);
397 g_bus_unown_name (id2);
398 g_assert_cmpint (data2.num_bus_acquired, ==, 0);
399 g_assert_cmpint (data2.num_acquired, ==, 0);
400 g_assert_cmpint (data2.num_lost, ==, 1);
401 g_assert_cmpint (data2.num_free_func, ==, 1);
402 /* then with _REPLACE - here we should acquire the name - e.g. owner should lose it
403 * and owner2 should acquire it */
404 data2.num_bus_acquired = 0;
405 data2.num_acquired = 0;
407 data2.expect_null_connection = FALSE;
408 data2.num_free_func = 0;
409 id2 = g_bus_own_name_on_connection (c2,
411 G_BUS_NAME_OWNER_FLAGS_REPLACE,
412 name_acquired_handler,
415 (GDestroyNotify) own_name_data_free_func);
416 g_assert_cmpint (data.num_acquired, ==, 1);
417 g_assert_cmpint (data.num_lost, ==, 0);
418 g_assert_cmpint (data2.num_acquired, ==, 0);
419 g_assert_cmpint (data2.num_lost, ==, 0);
420 /* wait for handlers for both owner and owner2 to fire */
421 while (data.num_lost == 0 || data2.num_acquired == 0)
422 g_main_loop_run (loop);
423 g_assert_cmpint (data.num_acquired, ==, 1);
424 g_assert_cmpint (data.num_lost, ==, 1);
425 g_assert_cmpint (data2.num_acquired, ==, 1);
426 g_assert_cmpint (data2.num_lost, ==, 0);
427 g_assert_cmpint (data2.num_bus_acquired, ==, 0);
428 /* ok, make owner2 release the name - then wait for owner to automagically reacquire it */
429 g_bus_unown_name (id2);
430 g_assert_cmpint (data2.num_free_func, ==, 1);
431 g_main_loop_run (loop);
432 g_assert_cmpint (data.num_acquired, ==, 2);
433 g_assert_cmpint (data.num_lost, ==, 1);
436 * Finally, nuke the bus and check name_lost_handler() is invoked.
439 data.expect_null_connection = TRUE;
441 while (data.num_lost != 2)
442 g_main_loop_run (loop);
443 g_assert_cmpint (data.num_acquired, ==, 2);
444 g_assert_cmpint (data.num_lost, ==, 2);
445 g_bus_unown_name (id);
446 g_assert_cmpint (data.num_free_func, ==, 4);
452 /* ---------------------------------------------------------------------------------------------------- */
453 /* Test that g_bus_watch_name() works correctly */
454 /* ---------------------------------------------------------------------------------------------------- */
458 gboolean expect_null_connection;
467 watch_name_data_free_func (WatchNameData *data)
469 data->num_free_func++;
470 g_main_loop_quit (loop);
474 w_bus_acquired_handler (GDBusConnection *connection,
481 w_name_acquired_handler (GDBusConnection *connection,
485 WatchNameData *data = user_data;
486 data->num_acquired += 1;
487 g_main_loop_quit (loop);
491 w_name_lost_handler (GDBusConnection *connection,
495 WatchNameData *data = user_data;
497 g_main_loop_quit (loop);
501 name_appeared_handler (GDBusConnection *connection,
503 const gchar *name_owner,
506 WatchNameData *data = user_data;
507 if (data->expect_null_connection)
509 g_assert (connection == NULL);
513 g_assert (connection != NULL);
514 g_dbus_connection_set_exit_on_close (connection, FALSE);
516 data->num_appeared += 1;
517 g_main_loop_quit (loop);
521 name_vanished_handler (GDBusConnection *connection,
525 WatchNameData *data = user_data;
526 if (data->expect_null_connection)
528 g_assert (connection == NULL);
532 g_assert (connection != NULL);
533 g_dbus_connection_set_exit_on_close (connection, FALSE);
535 data->num_vanished += 1;
536 g_main_loop_quit (loop);
540 test_bus_watch_name (void)
545 GDBusConnection *connection;
548 * First check that name_vanished_handler() is invoked if there is no bus.
550 * Also make sure name_vanished_handler() isn't invoked when unwatching the name.
552 data.num_free_func = 0;
553 data.num_appeared = 0;
554 data.num_vanished = 0;
555 data.expect_null_connection = TRUE;
556 id = g_bus_watch_name (G_BUS_TYPE_SESSION,
557 "org.gtk.GDBus.Name1",
558 G_BUS_NAME_WATCHER_FLAGS_NONE,
559 name_appeared_handler,
560 name_vanished_handler,
562 (GDestroyNotify) watch_name_data_free_func);
563 g_assert_cmpint (data.num_appeared, ==, 0);
564 g_assert_cmpint (data.num_vanished, ==, 0);
565 g_main_loop_run (loop);
566 g_assert_cmpint (data.num_appeared, ==, 0);
567 g_assert_cmpint (data.num_vanished, ==, 1);
568 g_bus_unwatch_name (id);
569 g_assert_cmpint (data.num_appeared, ==, 0);
570 g_assert_cmpint (data.num_vanished, ==, 1);
571 g_assert_cmpint (data.num_free_func, ==, 1);
574 * Now bring up a bus, own a name, and then start watching it.
578 data.num_free_func = 0;
579 data.num_acquired = 0;
581 data.expect_null_connection = FALSE;
582 owner_id = g_bus_own_name (G_BUS_TYPE_SESSION,
583 "org.gtk.GDBus.Name1",
584 G_BUS_NAME_OWNER_FLAGS_NONE,
585 w_bus_acquired_handler,
586 w_name_acquired_handler,
589 (GDestroyNotify) watch_name_data_free_func);
590 g_main_loop_run (loop);
591 g_assert_cmpint (data.num_acquired, ==, 1);
592 g_assert_cmpint (data.num_lost, ==, 0);
594 connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
595 g_assert (connection != NULL);
597 /* now watch the name */
598 data.num_appeared = 0;
599 data.num_vanished = 0;
600 id = g_bus_watch_name_on_connection (connection,
601 "org.gtk.GDBus.Name1",
602 G_BUS_NAME_WATCHER_FLAGS_NONE,
603 name_appeared_handler,
604 name_vanished_handler,
606 (GDestroyNotify) watch_name_data_free_func);
607 g_assert_cmpint (data.num_appeared, ==, 0);
608 g_assert_cmpint (data.num_vanished, ==, 0);
609 g_main_loop_run (loop);
610 g_assert_cmpint (data.num_appeared, ==, 1);
611 g_assert_cmpint (data.num_vanished, ==, 0);
616 g_bus_unwatch_name (id);
617 g_assert_cmpint (data.num_free_func, ==, 1);
619 g_object_unref (connection);
622 g_bus_unown_name (owner_id);
623 g_assert_cmpint (data.num_acquired, ==, 1);
624 g_assert_cmpint (data.num_free_func, ==, 2);
627 * Create a watcher and then make a name be owned.
629 * This should trigger name_appeared_handler() ...
632 data.num_appeared = 0;
633 data.num_vanished = 0;
634 data.num_free_func = 0;
635 id = g_bus_watch_name_with_closures (G_BUS_TYPE_SESSION,
636 "org.gtk.GDBus.Name1",
637 G_BUS_NAME_WATCHER_FLAGS_NONE,
638 g_cclosure_new (G_CALLBACK (name_appeared_handler),
641 g_cclosure_new (G_CALLBACK (name_vanished_handler),
643 (GClosureNotify) watch_name_data_free_func));
644 g_assert_cmpint (data.num_appeared, ==, 0);
645 g_assert_cmpint (data.num_vanished, ==, 0);
646 g_main_loop_run (loop);
647 g_assert_cmpint (data.num_appeared, ==, 0);
648 g_assert_cmpint (data.num_vanished, ==, 1);
651 data.num_acquired = 0;
653 data.expect_null_connection = FALSE;
654 owner_id = g_bus_own_name (G_BUS_TYPE_SESSION,
655 "org.gtk.GDBus.Name1",
656 G_BUS_NAME_OWNER_FLAGS_NONE,
657 w_bus_acquired_handler,
658 w_name_acquired_handler,
661 (GDestroyNotify) watch_name_data_free_func);
662 while (data.num_acquired == 0 || data.num_appeared == 0)
663 g_main_loop_run (loop);
664 g_assert_cmpint (data.num_acquired, ==, 1);
665 g_assert_cmpint (data.num_lost, ==, 0);
666 g_assert_cmpint (data.num_appeared, ==, 1);
667 g_assert_cmpint (data.num_vanished, ==, 1);
670 * Nuke the bus and check that the name vanishes and is lost.
672 data.expect_null_connection = TRUE;
674 g_main_loop_run (loop);
675 g_assert_cmpint (data.num_lost, ==, 1);
676 g_assert_cmpint (data.num_vanished, ==, 2);
678 g_bus_unwatch_name (id);
679 g_assert_cmpint (data.num_free_func, ==, 1);
681 g_bus_unown_name (owner_id);
682 g_assert_cmpint (data.num_free_func, ==, 2);
686 /* ---------------------------------------------------------------------------------------------------- */
689 test_validate_names (void)
699 { 1, 0, 1, "valid.well_known.name"},
700 { 1, 0, 0, "valid.well-known.name"},
701 { 1, 1, 0, ":valid.unique.name"},
702 { 0, 0, 0, "invalid.5well_known.name"},
703 { 0, 0, 0, "4invalid.5well_known.name"},
704 { 1, 1, 0, ":4valid.5unique.name"},
706 { 1, 0, 1, "very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.name1"}, /* 255 */
707 { 0, 0, 0, "very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.very.long.name12"}, /* 256 - too long! */
708 { 0, 0, 0, ".starts.with.a.dot"},
709 { 0, 0, 0, "contains.invalid;.characters"},
710 { 0, 0, 0, "contains.inva/lid.characters"},
711 { 0, 0, 0, "contains.inva[lid.characters"},
712 { 0, 0, 0, "contains.inva]lid.characters"},
713 { 0, 0, 0, "contains.inva_æøå_lid.characters"},
717 for (n = 0; n < G_N_ELEMENTS (names); n++)
720 g_assert (g_dbus_is_name (names[n].string));
722 g_assert (!g_dbus_is_name (names[n].string));
725 g_assert (g_dbus_is_unique_name (names[n].string));
727 g_assert (!g_dbus_is_unique_name (names[n].string));
729 if (names[n].interface)
730 g_assert (g_dbus_is_interface_name (names[n].string));
732 g_assert (!g_dbus_is_interface_name (names[n].string));
736 /* ---------------------------------------------------------------------------------------------------- */
745 g_test_init (&argc, &argv, NULL);
747 loop = g_main_loop_new (NULL, FALSE);
749 /* all the tests use a session bus with a well-known address that we can bring up and down
750 * using session_bus_up() and session_bus_down().
752 g_unsetenv ("DISPLAY");
753 g_setenv ("DBUS_SESSION_BUS_ADDRESS", session_bus_get_temporary_address (), TRUE);
755 g_test_add_func ("/gdbus/validate-names", test_validate_names);
756 g_test_add_func ("/gdbus/bus-own-name", test_bus_own_name);
757 g_test_add_func ("/gdbus/bus-watch-name", test_bus_watch_name);
761 g_main_loop_unref (loop);