From: Matthias Clasen Date: Wed, 21 Jun 2023 18:21:37 +0000 (-0400) Subject: Add another a11y test X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~112^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=510bf862682fa581448435a707631435c7834f5a;p=gtk4.git Add another a11y test Test that roles come out right for custom widgets. --- diff --git a/testsuite/a11y/custom.c b/testsuite/a11y/custom.c new file mode 100644 index 0000000000..5200625991 --- /dev/null +++ b/testsuite/a11y/custom.c @@ -0,0 +1,89 @@ +#include + +#define DEMO_TYPE_WIDGET (demo_widget_get_type ()) + +G_DECLARE_FINAL_TYPE (DemoWidget, demo_widget, DEMO, WIDGET, GtkWidget) + +struct _DemoWidget +{ + GtkWidget parent_instance; +}; + +struct _DemoWidgetClass +{ + GtkWidgetClass parent_class; +}; + +G_DEFINE_TYPE (DemoWidget, demo_widget, GTK_TYPE_WIDGET) + +static void +demo_widget_init (DemoWidget *self) +{ +} + +static void +demo_widget_class_init (DemoWidgetClass *class) +{ +} + +static void +test_custom_widget_role (void) +{ + GtkWidget *widget; + + widget = g_object_new (DEMO_TYPE_WIDGET, NULL); + g_object_ref_sink (widget); + + g_assert_true (gtk_accessible_get_accessible_role (GTK_ACCESSIBLE (widget)) == GTK_ACCESSIBLE_ROLE_GENERIC); + + g_object_unref (widget); +} + +static void +test_custom_widget_role_explicit (void) +{ + GtkWidget *widget; + + widget = g_object_new (DEMO_TYPE_WIDGET, + "accessible-role", GTK_ACCESSIBLE_ROLE_LABEL, + NULL); + g_object_ref_sink (widget); + + g_assert_true (gtk_accessible_get_accessible_role (GTK_ACCESSIBLE (widget)) == GTK_ACCESSIBLE_ROLE_LABEL); + + g_object_unref (widget); +} + +static void +test_custom_widget_ui (void) +{ + GtkBuilder *builder; + GtkWidget *widget; + + g_type_ensure (DEMO_TYPE_WIDGET); + + builder = gtk_builder_new (); + gtk_builder_add_from_string (builder, + "" + " " + " " + "", -1, NULL); + + widget = GTK_WIDGET (gtk_builder_get_object (builder, "test")); + + g_assert_true (gtk_accessible_get_accessible_role (GTK_ACCESSIBLE (widget)) == GTK_ACCESSIBLE_ROLE_GENERIC); + + g_object_unref (builder); +} + +int +main (int argc, char *argv[]) +{ + gtk_test_init (&argc, &argv, NULL); + + g_test_add_func ("/a11y/custom-widget/role", test_custom_widget_role); + g_test_add_func ("/a11y/custom-widget/explicit-role", test_custom_widget_role_explicit); + g_test_add_func ("/a11y/custom-widget/ui", test_custom_widget_ui); + + return g_test_run (); +} diff --git a/testsuite/a11y/meson.build b/testsuite/a11y/meson.build index d8b370d7a3..058baec406 100644 --- a/testsuite/a11y/meson.build +++ b/testsuite/a11y/meson.build @@ -11,6 +11,7 @@ tests = [ { 'name': 'box' }, { 'name': 'button' }, { 'name': 'checkbutton' }, + { 'name': 'custom' }, { 'name': 'dialog' }, { 'name': 'entry' }, { 'name': 'expander' },