From 5978a6edb59d39ef430a5b7b99ae1109de8e63f7 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Wed, 29 Jun 2011 13:02:30 +0100 Subject: [PATCH] Add a test case for GActionEntry --- gio/tests/actions.c | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/gio/tests/actions.c b/gio/tests/actions.c index fa0d58a..27f2428 100644 --- a/gio/tests/actions.c +++ b/gio/tests/actions.c @@ -254,6 +254,112 @@ test_stateful (void) g_object_unref (action); } +static gboolean foo_activated = FALSE; +static gboolean bar_activated = FALSE; + +static void +activate_foo (GSimpleAction *simple, + GVariant *parameter, + gpointer user_data) +{ + g_assert (user_data == GINT_TO_POINTER (123)); + g_assert (parameter == NULL); + foo_activated = TRUE; +} + +static void +activate_bar (GSimpleAction *simple, + GVariant *parameter, + gpointer user_data) +{ + g_assert (user_data == GINT_TO_POINTER (123)); + g_assert_cmpstr (g_variant_get_string (parameter, NULL), ==, "param"); + bar_activated = TRUE; +} + +static void +test_entries (void) +{ + const GActionEntry entries[] = { + { "foo", activate_foo }, + { "bar", activate_bar, "s" }, + { "toggle", NULL, NULL, "false" } + }; + GSimpleActionGroup *actions; + + actions = g_simple_action_group_new (); + g_simple_action_group_add_entries (actions, entries, + G_N_ELEMENTS (entries), + GINT_TO_POINTER (123)); + + g_assert (!foo_activated); + g_action_group_activate_action (G_ACTION_GROUP (actions), "foo", NULL); + g_assert (foo_activated); + foo_activated = FALSE; + + g_assert (!bar_activated); + g_action_group_activate_action (G_ACTION_GROUP (actions), "bar", + g_variant_new_string ("param")); + g_assert (bar_activated); + g_assert (!foo_activated); + + if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) + { + const GActionEntry bad_type = { + "bad-type", NULL, "ss" + }; + + g_simple_action_group_add_entries (actions, &bad_type, 1, NULL); + exit (0); + } + g_test_trap_assert_failed (); + + if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) + { + const GActionEntry bad_state = { + "bad-state", NULL, NULL, "flse" + }; + + g_simple_action_group_add_entries (actions, &bad_state, 1, NULL); + exit (0); + } + g_test_trap_assert_failed (); + + g_object_unref (actions); +} + + static void + activate_quit (GSimpleAction *simple, + GVariant *parameter, + gpointer user_data) + { + exit (0); + } + + static void + activate_print_string (GSimpleAction *simple, + GVariant *parameter, + gpointer user_data) + { + g_print ("%s\n", g_variant_get_string (parameter, NULL)); + } + + static GActionGroup * + create_action_group (void) + { + const GActionEntry entries[] = { + { "quit", activate_quit }, + { "print-string", activate_print_string, "s" } + }; + GSimpleActionGroup *group; + + group = g_simple_action_group_new (); + g_simple_action_group_add_entries (group, entries, G_N_ELEMENTS (entries), NULL); + + return G_ACTION_GROUP (group); + } + + int main (int argc, char **argv) { @@ -263,6 +369,7 @@ main (int argc, char **argv) g_test_add_func ("/actions/basic", test_basic); g_test_add_func ("/actions/simplegroup", test_simple_group); g_test_add_func ("/actions/stateful", test_stateful); + g_test_add_func ("/actions/entries", test_entries); return g_test_run (); } -- 2.7.4