mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 15:06:14 +01:00
Add test case for G_APPLICATION_NON_UNIQUE
This commit is contained in:
parent
9d204338f3
commit
45377252db
@ -221,6 +221,79 @@ basic (void)
|
||||
session_bus_down ();
|
||||
}
|
||||
|
||||
|
||||
static GApplication *recently_activated;
|
||||
static GMainLoop *loop;
|
||||
|
||||
static void
|
||||
nonunique_activate (GApplication *application)
|
||||
{
|
||||
recently_activated = application;
|
||||
|
||||
if (loop != NULL)
|
||||
g_main_loop_quit (loop);
|
||||
}
|
||||
|
||||
static GApplication *
|
||||
make_app (gboolean non_unique)
|
||||
{
|
||||
GApplication *app;
|
||||
gboolean ok;
|
||||
|
||||
app = g_application_new ("org.gtk.TestApplication",
|
||||
non_unique ? G_APPLICATION_NON_UNIQUE : 0);
|
||||
g_signal_connect (app, "activate", G_CALLBACK (nonunique_activate), NULL);
|
||||
ok = g_application_register (app, NULL, NULL);
|
||||
if (!ok)
|
||||
{
|
||||
g_object_unref (app);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
g_application_activate (app);
|
||||
|
||||
return app;
|
||||
}
|
||||
|
||||
static void
|
||||
test_nonunique (void)
|
||||
{
|
||||
GApplication *first, *second, *third, *fourth;
|
||||
|
||||
session_bus_up ();
|
||||
|
||||
first = make_app (TRUE);
|
||||
/* non-remote because it is non-unique */
|
||||
g_assert (!g_application_get_is_remote (first));
|
||||
g_assert (recently_activated == first);
|
||||
recently_activated = NULL;
|
||||
|
||||
second = make_app (FALSE);
|
||||
/* non-remote because it is first */
|
||||
g_assert (!g_application_get_is_remote (second));
|
||||
g_assert (recently_activated == second);
|
||||
recently_activated = NULL;
|
||||
|
||||
third = make_app (TRUE);
|
||||
/* non-remote because it is non-unique */
|
||||
g_assert (!g_application_get_is_remote (third));
|
||||
g_assert (recently_activated == third);
|
||||
recently_activated = NULL;
|
||||
|
||||
fourth = make_app (FALSE);
|
||||
/* should have failed to register due to being
|
||||
* unable to register the object paths
|
||||
*/
|
||||
g_assert (fourth == NULL);
|
||||
g_assert (recently_activated == NULL);
|
||||
|
||||
g_object_unref (first);
|
||||
g_object_unref (second);
|
||||
g_object_unref (third);
|
||||
|
||||
session_bus_down ();
|
||||
}
|
||||
|
||||
static void
|
||||
properties (void)
|
||||
{
|
||||
@ -289,6 +362,7 @@ main (int argc, char **argv)
|
||||
g_test_init (&argc, &argv, NULL);
|
||||
|
||||
g_test_add_func ("/gapplication/basic", basic);
|
||||
g_test_add_func ("/gapplication/non-unique", test_nonunique);
|
||||
g_test_add_func ("/gapplication/properties", properties);
|
||||
g_test_add_func ("/gapplication/app-id", appid);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user