Add another a11y test
authorMatthias Clasen <mclasen@redhat.com>
Wed, 21 Jun 2023 18:21:37 +0000 (14:21 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 21 Jun 2023 18:24:52 +0000 (14:24 -0400)
Test that roles come out right for custom widgets.

testsuite/a11y/custom.c [new file with mode: 0644]
testsuite/a11y/meson.build

diff --git a/testsuite/a11y/custom.c b/testsuite/a11y/custom.c
new file mode 100644 (file)
index 0000000..5200625
--- /dev/null
@@ -0,0 +1,89 @@
+#include <gtk/gtk.h>
+
+#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,
+    "<interface>"
+    "  <object class='DemoWidget' id='test'>"
+    "  </object>"
+    "</interface>", -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 ();
+}
index d8b370d7a3828caa5ef07cd3323e39a0bd6c1943..058baec4060c9b692b075911550f377cb1e5cfd6 100644 (file)
@@ -11,6 +11,7 @@ tests = [
   { 'name': 'box' },
   { 'name': 'button' },
   { 'name': 'checkbutton' },
+  { 'name': 'custom' },
   { 'name': 'dialog' },
   { 'name': 'entry' },
   { 'name': 'expander' },