#include <gtk/gtk.h>
#include "gtk/gtkatcontextprivate.h"
#include "gtk/gtkwidgetprivate.h"
static void
test_name_content (void )
{
GtkWidget *window, *label1, *label2, *box, *button;
GtkATContext *context;
char *name;
label1 = gtk_label_new ("a" );
label2 = gtk_label_new ("b" );
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0 );
button = gtk_button_new ();
gtk_box_append (GTK_BOX (box), label1);
gtk_box_append (GTK_BOX (box), label2);
gtk_button_set_child (GTK_BUTTON (button), box);
window = gtk_window_new ();
gtk_window_set_child (GTK_WINDOW (window), button);
gtk_window_present (GTK_WINDOW (window));
context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (label1));
name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "a" );
g_free (name);
g_object_unref (context);
/* this is because generic doesn't allow naming */
context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (box));
name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "" );
g_free (name);
g_object_unref (context);
context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (button));
name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "a b" );
g_free (name);
g_object_unref (context);
gtk_widget_set_visible (label2, FALSE );
context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (button));
name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "a" );
g_free (name);
g_object_unref (context);
gtk_window_destroy (GTK_WINDOW (window));
}
static void
test_name_tooltip (void )
{
GtkWidget *window, *image;
GtkATContext *context;
char *name;
image = gtk_image_new ();
window = gtk_window_new ();
gtk_window_set_child (GTK_WINDOW (window), image);
gtk_window_present (GTK_WINDOW (window));
gtk_widget_set_tooltip_text (image, "tooltip" );
context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (image));
name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "tooltip" );
g_free (name);
g_object_unref (context);
gtk_window_destroy (GTK_WINDOW (window));
}
static void
test_name_menubutton (void )
{
GtkWidget *window, *widget;
GtkATContext *context;
char *name;
widget = gtk_menu_button_new ();
gtk_menu_button_set_popover (GTK_MENU_BUTTON (widget), gtk_popover_new ());
window = gtk_window_new ();
gtk_window_set_child (GTK_WINDOW (window), widget);
gtk_window_present (GTK_WINDOW (window));
gtk_widget_set_tooltip_text (widget, "tooltip" );
context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (widget));
name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "tooltip" );
g_free (name);
g_object_unref (context);
gtk_window_destroy (GTK_WINDOW (window));
}
static void
test_name_label (void )
{
GtkWidget *window, *image;
GtkATContext *context;
char *name;
char *desc;
image = gtk_image_new ();
window = gtk_window_new ();
gtk_window_set_child (GTK_WINDOW (window), image);
gtk_window_present (GTK_WINDOW (window));
g_object_ref_sink (image);
gtk_widget_realize_at_context (image);
gtk_widget_set_tooltip_text (image, "tooltip" );
gtk_accessible_update_property (GTK_ACCESSIBLE (image),
GTK_ACCESSIBLE_PROPERTY_LABEL, "label" ,
-1 );
context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (image));
name = gtk_at_context_get_name (context);
desc = gtk_at_context_get_description (context);
g_assert_cmpstr (name, ==, "label" );
g_assert_cmpstr (desc, ==, "tooltip" );
g_free (name);
g_free (desc);
g_object_unref (context);
gtk_window_destroy (GTK_WINDOW (window));
}
static void
test_name_prohibited (void )
{
GtkWidget *window, *widget;
GtkATContext *context;
char *name;
char *desc;
widget = g_object_new (GTK_TYPE_BUTTON,
"accessible-role" , GTK_ACCESSIBLE_ROLE_TIME,
"label" , "too late" ,
NULL);
window = gtk_window_new ();
gtk_window_set_child (GTK_WINDOW (window), widget);
gtk_window_present (GTK_WINDOW (window));
context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (widget));
name = gtk_at_context_get_name (context);
desc = gtk_at_context_get_description (context);
g_assert_cmpstr (name, ==, "too late" );
g_assert_cmpstr (desc, ==, "" );
g_free (name);
g_free (desc);
g_object_unref (context);
gtk_window_destroy (GTK_WINDOW (window));
}
static void
test_name_range (void )
{
GtkWidget *window, *scale;
GtkATContext *context;
char *name;
scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0 , 100 , 10 );
window = gtk_window_new ();
gtk_window_set_child (GTK_WINDOW (window), scale);
gtk_window_present (GTK_WINDOW (window));
context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (scale));
g_assert_true (gtk_accessible_get_accessible_role (GTK_ACCESSIBLE (scale)) == GTK_ACCESSIBLE_ROLE_SLIDER);
g_assert_true (gtk_at_context_get_accessible_role (context) == GTK_ACCESSIBLE_ROLE_SLIDER);
gtk_range_set_value (GTK_RANGE (scale), 50 );
name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "" );
g_free (name);
g_object_unref (context);
gtk_window_destroy (GTK_WINDOW (window));
}
int
main (int argc, char *argv[])
{
gtk_test_init (&argc, &argv, NULL);
g_test_add_func ("/a11y/name/content" , test_name_content);
g_test_add_func ("/a11y/name/tooltip" , test_name_tooltip);
g_test_add_func ("/a11y/name/menubutton" , test_name_menubutton);
g_test_add_func ("/a11y/name/label" , test_name_label);
g_test_add_func ("/a11y/name/prohibited" , test_name_prohibited);
g_test_add_func ("/a11y/name/range" , test_name_range);
return g_test_run ();
}
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-07-03)
¤
*© Formatika GbR, Deutschland