diff --git a/testsuite/gtk/action.c b/testsuite/gtk/action.c index 81be2464b8..6c3b457534 100644 --- a/testsuite/gtk/action.c +++ b/testsuite/gtk/action.c @@ -246,6 +246,54 @@ test_overlap (void) g_object_unref (box_actions); } +/* Test that gtk_widget_class_query_action + * yields the expected results + */ +static void +test_introspection (void) +{ + GtkWidgetClass *class = g_type_class_ref (GTK_TYPE_TEXT); + guint i; + GType owner; + const char *name; + const GVariantType *params; + const char *property; + struct { + GType owner; + const char *name; + const char *params; + const char *property; + } expected[] = { + { GTK_TYPE_TEXT, "clipboard.cut", NULL, NULL }, + { GTK_TYPE_TEXT, "clipboard.copy", NULL, NULL }, + { GTK_TYPE_TEXT, "clipboard.paste", NULL, NULL }, + { GTK_TYPE_TEXT, "selection.delete", NULL, NULL }, + { GTK_TYPE_TEXT, "selection.select-all", NULL, NULL }, + { GTK_TYPE_TEXT, "misc.insert-emoji", NULL, NULL }, + { GTK_TYPE_TEXT, "misc.toggle-visibility", NULL, "visibility" }, + }; + + i = 0; + while (gtk_widget_class_query_action (class, + i, + &owner, + &name, + ¶ms, + &property)) + { + g_assert (expected[i].owner == owner); + g_assert (strcmp (expected[i].name, name) == 0); + g_assert ((expected[i].params == NULL && params == NULL) || + strcmp (expected[i].params, g_variant_type_peek_string (params)) == 0); + g_assert ((expected[i].property == NULL && property == NULL) || + strcmp (expected[i].property, property) == 0); + i++; + } + g_assert (i == G_N_ELEMENTS (expected)); + + g_type_class_unref (class); +} + int main (int argc, char *argv[]) @@ -255,6 +303,7 @@ main (int argc, g_test_add_func ("/action/inheritance", test_action); g_test_add_func ("/action/text", test_text); g_test_add_func ("/action/overlap", test_overlap); + g_test_add_func ("/action/introspection", test_introspection); return g_test_run(); }