1 #include <gtk/gtk.h>
2 #include "gtk/gtkaccessibleprivate.h"
3
4 /* These tests verify that the GtkAccessible machinery works, independent
5 * of any concrete widget accessible implementations. Therefore, we use
6 * a dummy object that implements GtkAccessible
7 */
8 typedef struct
9 {
10 GObject parent_instance;
11
12 GtkAccessibleRole role;
13 GtkATContext *at_context;
14 } TestObject;
15
16 typedef struct
17 {
18 GObjectClass parent_class;
19 } TestObjectClass;
20
21 enum {
22 PROP_ACCESSIBLE_ROLE = 1,
23 NUM_PROPERTIES
24 };
25
26 static GtkATContext *
test_object_accessible_get_at_context(GtkAccessible * accessible)27 test_object_accessible_get_at_context (GtkAccessible *accessible)
28 {
29 TestObject *self = (TestObject*)accessible;
30
31 if (self->at_context == NULL)
32 self->at_context = gtk_at_context_create (self->role,
33 accessible,
34 gdk_display_get_default ());
35
36 return self->at_context;
37 }
38
39 static void
test_object_accessible_init(GtkAccessibleInterface * iface)40 test_object_accessible_init (GtkAccessibleInterface *iface)
41 {
42 iface->get_at_context = test_object_accessible_get_at_context;
43 }
44
G_DEFINE_TYPE_WITH_CODE(TestObject,test_object,G_TYPE_OBJECT,G_IMPLEMENT_INTERFACE (GTK_TYPE_ACCESSIBLE,test_object_accessible_init))45 G_DEFINE_TYPE_WITH_CODE (TestObject, test_object, G_TYPE_OBJECT,
46 G_IMPLEMENT_INTERFACE (GTK_TYPE_ACCESSIBLE,
47 test_object_accessible_init))
48
49 static void
50 test_object_init (TestObject *self)
51 {
52 self->role = GTK_ACCESSIBLE_ROLE_WIDGET;
53 }
54
55 static void
test_object_set_property(GObject * object,guint prop_id,const GValue * value,GParamSpec * pspec)56 test_object_set_property (GObject *object,
57 guint prop_id,
58 const GValue *value,
59 GParamSpec *pspec)
60 {
61 TestObject *self = (TestObject *)object;
62
63 switch (prop_id)
64 {
65 case PROP_ACCESSIBLE_ROLE:
66 self->role = g_value_get_enum (value);
67 break;
68 default:
69 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
70 }
71 }
72
73 static void
test_object_get_property(GObject * object,guint prop_id,GValue * value,GParamSpec * pspec)74 test_object_get_property (GObject *object,
75 guint prop_id,
76 GValue *value,
77 GParamSpec *pspec)
78 {
79 TestObject *self = (TestObject *)object;
80
81 switch (prop_id)
82 {
83 case PROP_ACCESSIBLE_ROLE:
84 g_value_set_enum (value, self->role);
85 break;
86 default:
87 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
88 }
89 }
90
91 static void
test_object_class_init(TestObjectClass * class)92 test_object_class_init (TestObjectClass *class)
93 {
94 GObjectClass *gobject_class = G_OBJECT_CLASS (class);
95
96 gobject_class->set_property = test_object_set_property;
97 gobject_class->get_property = test_object_get_property;
98
99 g_object_class_override_property (gobject_class, PROP_ACCESSIBLE_ROLE, "accessible-role");
100 }
101
102 static TestObject *
test_object_new(GtkAccessibleRole role)103 test_object_new (GtkAccessibleRole role)
104 {
105 return g_object_new (test_object_get_type (),
106 "accessible-role", role,
107 NULL);
108 }
109
110 /* Tests for states */
111
112 static void
test_boolean_state(gconstpointer data)113 test_boolean_state (gconstpointer data)
114 {
115 GtkAccessibleState state = GPOINTER_TO_UINT (data);
116 TestObject *object;
117
118 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
119
120 gtk_test_accessible_assert_state (object, state, FALSE);
121
122 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
123 state, TRUE,
124 -1);
125 gtk_test_accessible_assert_state (object, state, TRUE);
126
127 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
128 state, FALSE,
129 -1);
130 gtk_test_accessible_assert_state (object, state, FALSE);
131
132 g_object_unref (object);
133 }
134
135 static void
test_maybe_boolean_state(gconstpointer data)136 test_maybe_boolean_state (gconstpointer data)
137 {
138 GtkAccessibleState state = GPOINTER_TO_UINT (data);
139 TestObject *object;
140
141 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
142
143 gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_VALUE_UNDEFINED);
144
145 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
146 state, TRUE,
147 -1);
148 gtk_test_accessible_assert_state (object, state, TRUE);
149
150 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
151 state, FALSE,
152 -1);
153 gtk_test_accessible_assert_state (object, state, FALSE);
154
155 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
156 state, GTK_ACCESSIBLE_VALUE_UNDEFINED,
157 -1);
158 gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_VALUE_UNDEFINED);
159
160 g_object_unref (object);
161 }
162
163 static void
test_tristate_state(gconstpointer data)164 test_tristate_state (gconstpointer data)
165 {
166 GtkAccessibleState state = GPOINTER_TO_UINT (data);
167 TestObject *object;
168
169 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
170
171 gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
172
173 gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_VALUE_UNDEFINED);
174
175 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
176 state, GTK_ACCESSIBLE_TRISTATE_FALSE,
177 -1);
178 gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_TRISTATE_FALSE);
179
180 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
181 state, GTK_ACCESSIBLE_TRISTATE_TRUE,
182 -1);
183 gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_TRISTATE_TRUE);
184
185 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
186 state, GTK_ACCESSIBLE_TRISTATE_MIXED,
187 -1);
188 gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_TRISTATE_MIXED);
189
190 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
191 state, GTK_ACCESSIBLE_VALUE_UNDEFINED,
192 -1);
193 gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_VALUE_UNDEFINED);
194
195 g_object_unref (object);
196 }
197
198 static void
test_invalid_state(gconstpointer data)199 test_invalid_state (gconstpointer data)
200 {
201 GtkAccessibleState state = GPOINTER_TO_UINT (data);
202 TestObject *object;
203
204 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
205
206 gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
207
208 gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_INVALID_FALSE);
209
210 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
211 state, GTK_ACCESSIBLE_INVALID_TRUE,
212 -1);
213 gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_INVALID_TRUE);
214
215 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
216 state, GTK_ACCESSIBLE_INVALID_GRAMMAR,
217 -1);
218 gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_INVALID_GRAMMAR);
219
220 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
221 state, GTK_ACCESSIBLE_INVALID_SPELLING,
222 -1);
223 gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_INVALID_SPELLING);
224
225 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
226 state, GTK_ACCESSIBLE_INVALID_FALSE,
227 -1);
228 gtk_test_accessible_assert_state (object, state, GTK_ACCESSIBLE_INVALID_FALSE);
229
230 g_object_unref (object);
231 }
232
233 static void
test_update_multiple_states(void)234 test_update_multiple_states (void)
235 {
236 TestObject *object;
237
238 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
239
240 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
241 GTK_ACCESSIBLE_STATE_BUSY, TRUE,
242 GTK_ACCESSIBLE_STATE_CHECKED, GTK_ACCESSIBLE_TRISTATE_MIXED,
243 -1);
244
245 gtk_test_accessible_assert_state (object, GTK_ACCESSIBLE_STATE_BUSY, TRUE);
246 gtk_test_accessible_assert_state (object, GTK_ACCESSIBLE_STATE_CHECKED, GTK_ACCESSIBLE_TRISTATE_MIXED);
247
248 gtk_accessible_update_state (GTK_ACCESSIBLE (object),
249 GTK_ACCESSIBLE_STATE_BUSY, FALSE,
250 GTK_ACCESSIBLE_STATE_CHECKED, GTK_ACCESSIBLE_TRISTATE_TRUE,
251 GTK_ACCESSIBLE_STATE_BUSY, TRUE,
252 GTK_ACCESSIBLE_STATE_BUSY, FALSE,
253 -1);
254
255 gtk_test_accessible_assert_state (object, GTK_ACCESSIBLE_STATE_BUSY, FALSE);
256 gtk_test_accessible_assert_state (object, GTK_ACCESSIBLE_STATE_CHECKED, GTK_ACCESSIBLE_TRISTATE_TRUE);
257
258 g_object_unref (object);
259 }
260
261 static void
test_autocomplete_property(gconstpointer data)262 test_autocomplete_property (gconstpointer data)
263 {
264 GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
265 TestObject *object;
266
267 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
268
269 gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
270
271 gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_AUTOCOMPLETE_NONE);
272 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
273 property, GTK_ACCESSIBLE_AUTOCOMPLETE_INLINE,
274 -1);
275 gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_AUTOCOMPLETE_INLINE);
276
277 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
278 property, GTK_ACCESSIBLE_AUTOCOMPLETE_LIST,
279 -1);
280 gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_AUTOCOMPLETE_LIST);
281
282 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
283 property, GTK_ACCESSIBLE_AUTOCOMPLETE_BOTH,
284 -1);
285 gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_AUTOCOMPLETE_BOTH);
286
287 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
288 property, GTK_ACCESSIBLE_AUTOCOMPLETE_NONE,
289 -1);
290 gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_AUTOCOMPLETE_NONE);
291
292 g_object_unref (object);
293 }
294
295 static void
test_string_property(gconstpointer data)296 test_string_property (gconstpointer data)
297 {
298 GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
299 TestObject *object;
300
301 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
302
303 gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
304
305 gtk_test_accessible_assert_property (object, property, NULL);
306
307 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
308 property, "some string that holds no particular value",
309 -1);
310 gtk_test_accessible_assert_property (object, property, "some string that holds no particular value");
311
312 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
313 property, "see\nif\nnewlines\nwork ?!",
314 -1);
315 gtk_test_accessible_assert_property (object, property, "see\nif\nnewlines\nwork ?!");
316
317 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
318 property, "",
319 -1);
320 gtk_test_accessible_assert_property (object, property, "");
321
322 g_object_unref (object);
323 }
324
325 static void
test_boolean_property(gconstpointer data)326 test_boolean_property (gconstpointer data)
327 {
328 GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
329 TestObject *object;
330
331 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
332
333 gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
334
335 gtk_test_accessible_assert_property (object, property, FALSE);
336
337 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
338 property, TRUE,
339 -1);
340 gtk_test_accessible_assert_property (object, property, TRUE);
341
342 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
343 property, FALSE,
344 -1);
345 gtk_test_accessible_assert_property (object, property, FALSE);
346
347 g_object_unref (object);
348 }
349
350 static void
test_int_property(gconstpointer data)351 test_int_property (gconstpointer data)
352 {
353 GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
354 TestObject *object;
355
356 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
357
358 gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
359
360 gtk_test_accessible_assert_property (object, property, 0);
361
362 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
363 property, 1,
364 -1);
365 gtk_test_accessible_assert_property (object, property, 1);
366
367 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
368 property, -1,
369 -1);
370 gtk_test_accessible_assert_property (object, property, -1);
371
372 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
373 property, 100,
374 -1);
375 gtk_test_accessible_assert_property (object, property, 100);
376
377 g_object_unref (object);
378 }
379
380 static void
test_number_property(gconstpointer data)381 test_number_property (gconstpointer data)
382 {
383 GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
384 TestObject *object;
385
386 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
387
388 gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
389
390 gtk_test_accessible_assert_property (object, property, 0.);
391
392 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
393 property, 1.5,
394 -1);
395 gtk_test_accessible_assert_property (object, property, 1.5);
396
397 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
398 property, -1.,
399 -1);
400 gtk_test_accessible_assert_property (object, property, -1.);
401
402 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
403 property, 1e6,
404 -1);
405 gtk_test_accessible_assert_property (object, property, 1e6);
406
407 g_object_unref (object);
408 }
409
410 static void
test_orientation_property(gconstpointer data)411 test_orientation_property (gconstpointer data)
412 {
413 GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
414 TestObject *object;
415
416 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
417
418 gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
419
420 gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_VALUE_UNDEFINED);
421
422 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
423 property, GTK_ORIENTATION_HORIZONTAL,
424 -1);
425 gtk_test_accessible_assert_property (object, property, GTK_ORIENTATION_HORIZONTAL);
426
427 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
428 property, GTK_ORIENTATION_VERTICAL,
429 -1);
430 gtk_test_accessible_assert_property (object, property, GTK_ORIENTATION_VERTICAL);
431
432 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
433 property, GTK_ACCESSIBLE_VALUE_UNDEFINED,
434 -1);
435 gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_VALUE_UNDEFINED);
436
437 g_object_unref (object);
438 }
439
440 static void
test_sort_property(gconstpointer data)441 test_sort_property (gconstpointer data)
442 {
443 GtkAccessibleProperty property = GPOINTER_TO_UINT (data);
444 TestObject *object;
445
446 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
447
448 gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
449
450 gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_SORT_NONE);
451
452 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
453 property, GTK_ACCESSIBLE_SORT_ASCENDING,
454 -1);
455 gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_SORT_ASCENDING);
456
457 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
458 property, GTK_ACCESSIBLE_SORT_DESCENDING,
459 -1);
460 gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_SORT_DESCENDING);
461
462 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
463 property, GTK_ACCESSIBLE_SORT_OTHER,
464 -1);
465 gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_SORT_OTHER);
466
467 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
468 property, GTK_ACCESSIBLE_SORT_NONE,
469 -1);
470 gtk_test_accessible_assert_property (object, property, GTK_ACCESSIBLE_SORT_NONE);
471
472 g_object_unref (object);
473 }
474
475 static void
test_update_multiple_properties(void)476 test_update_multiple_properties (void)
477 {
478 TestObject *object;
479
480 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
481
482 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
483 GTK_ACCESSIBLE_PROPERTY_VALUE_MAX, 100.,
484 GTK_ACCESSIBLE_PROPERTY_VALUE_MIN, 10.,
485 -1);
486
487 gtk_test_accessible_assert_property (object, GTK_ACCESSIBLE_PROPERTY_VALUE_MAX, 100.);
488 gtk_test_accessible_assert_property (object, GTK_ACCESSIBLE_PROPERTY_VALUE_MIN, 10.);
489
490 gtk_accessible_update_property (GTK_ACCESSIBLE (object),
491 GTK_ACCESSIBLE_PROPERTY_VALUE_MAX, 99.,
492 GTK_ACCESSIBLE_PROPERTY_VALUE_MIN, 11.,
493 GTK_ACCESSIBLE_PROPERTY_VALUE_MAX, 98.,
494 GTK_ACCESSIBLE_PROPERTY_VALUE_MAX, 97.,
495 -1);
496
497 gtk_test_accessible_assert_property (object, GTK_ACCESSIBLE_PROPERTY_VALUE_MAX, 97.);
498 gtk_test_accessible_assert_property (object, GTK_ACCESSIBLE_PROPERTY_VALUE_MIN, 11.);
499
500 g_object_unref (object);
501 }
502
503 static void
test_int_relation(gconstpointer data)504 test_int_relation (gconstpointer data)
505 {
506 GtkAccessibleRelation relation = GPOINTER_TO_UINT (data);
507 TestObject *object;
508
509 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
510
511 gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
512
513 gtk_test_accessible_assert_relation (object, relation, 0);
514
515 gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
516 relation, 1,
517 -1);
518 gtk_test_accessible_assert_relation (object, relation, 1);
519
520 gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
521 relation, -1,
522 -1);
523 gtk_test_accessible_assert_relation (object, relation, -1);
524
525 gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
526 relation, 100,
527 -1);
528 gtk_test_accessible_assert_relation (object, relation, 100);
529
530 g_object_unref (object);
531 }
532
533 static void
test_string_relation(gconstpointer data)534 test_string_relation (gconstpointer data)
535 {
536 GtkAccessibleRelation relation = GPOINTER_TO_UINT (data);
537 TestObject *object;
538
539 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
540
541 gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
542
543 gtk_test_accessible_assert_relation (object, relation, NULL);
544
545 gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
546 relation, "some string that holds no particular value",
547 -1);
548 gtk_test_accessible_assert_relation (object, relation, "some string that holds no particular value");
549
550 gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
551 relation, "see\nif\nnewlines\nwork ?!",
552 -1);
553 gtk_test_accessible_assert_relation (object, relation, "see\nif\nnewlines\nwork ?!");
554
555 gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
556 relation, "",
557 -1);
558 gtk_test_accessible_assert_relation (object, relation, "");
559
560 g_object_unref (object);
561 }
562
563 static void
test_ref_relation(gconstpointer data)564 test_ref_relation (gconstpointer data)
565 {
566 GtkAccessibleRelation relation = GPOINTER_TO_UINT (data);
567 TestObject *object;
568 TestObject *other;
569
570 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
571 other = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
572
573 gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
574
575 gtk_test_accessible_assert_relation (object, relation, NULL);
576
577 gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
578 relation, other,
579 -1);
580 gtk_test_accessible_assert_relation (object, relation, other);
581
582 g_object_unref (object);
583 g_object_unref (other);
584 }
585
586 static void
test_reflist_relation(gconstpointer data)587 test_reflist_relation (gconstpointer data)
588 {
589 GtkAccessibleRelation relation = GPOINTER_TO_UINT (data);
590 TestObject *object;
591 TestObject *other;
592 TestObject *third;
593
594 object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
595 other = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
596 third = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
597
598 gtk_test_accessible_assert_role (object, GTK_ACCESSIBLE_ROLE_CHECKBOX);
599
600 gtk_test_accessible_assert_relation (object, relation, NULL);
601
602 gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
603 relation, other, NULL,
604 -1);
605 gtk_test_accessible_assert_relation (object, relation, other, NULL);
606
607 gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
608 relation, other, third, NULL,
609 -1);
610 gtk_test_accessible_assert_relation (object, relation, other, third, NULL);
611
612 g_object_unref (object);
613 g_object_unref (other);
614 g_object_unref (third);
615 }
616
617 int
main(int argc,char * argv[])618 main (int argc, char *argv[])
619 {
620 gtk_test_init (&argc, &argv, NULL);
621
622 g_test_add_data_func ("/a11y/state/busy", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_BUSY), test_boolean_state);
623 g_test_add_data_func ("/a11y/state/checked", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_CHECKED), test_tristate_state);
624 g_test_add_data_func ("/a11y/state/disabled", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_DISABLED), test_boolean_state);
625 g_test_add_data_func ("/a11y/state/expanded", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_EXPANDED), test_maybe_boolean_state);
626 g_test_add_data_func ("/a11y/state/hidden", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_HIDDEN), test_boolean_state);
627 g_test_add_data_func ("/a11y/state/invalid", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_INVALID), test_invalid_state);
628 g_test_add_data_func ("/a11y/state/pressed", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_PRESSED), test_tristate_state);
629 g_test_add_data_func ("/a11y/state/selected", GUINT_TO_POINTER (GTK_ACCESSIBLE_STATE_SELECTED), test_maybe_boolean_state);
630
631 g_test_add_func ("/a11y/state/update-multiple", test_update_multiple_states);
632
633 g_test_add_data_func ("/a11y/property/autocomplete", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_AUTOCOMPLETE), test_autocomplete_property);
634 g_test_add_data_func ("/a11y/property/description", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_DESCRIPTION), test_string_property);
635 g_test_add_data_func ("/a11y/property/has-popup", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_HAS_POPUP), test_boolean_property);
636 g_test_add_data_func ("/a11y/property/key-shortcuts", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_KEY_SHORTCUTS), test_string_property);
637 g_test_add_data_func ("/a11y/property/label", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_LABEL), test_string_property);
638 g_test_add_data_func ("/a11y/property/level", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_LEVEL), test_int_property);
639 g_test_add_data_func ("/a11y/property/modal", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_MODAL), test_boolean_property);
640 g_test_add_data_func ("/a11y/property/multi-line", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_MULTI_LINE), test_boolean_property);
641 g_test_add_data_func ("/a11y/property/multi-selectable", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_MULTI_SELECTABLE), test_boolean_property);
642 g_test_add_data_func ("/a11y/property/orientation", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_ORIENTATION), test_orientation_property);
643 g_test_add_data_func ("/a11y/property/placeholder", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER), test_string_property);
644 g_test_add_data_func ("/a11y/property/read-only", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_READ_ONLY), test_boolean_property);
645 g_test_add_data_func ("/a11y/property/required", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_REQUIRED), test_boolean_property);
646 g_test_add_data_func ("/a11y/property/role-description", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_ROLE_DESCRIPTION), test_string_property);
647 g_test_add_data_func ("/a11y/property/sort", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_SORT), test_sort_property);
648 g_test_add_data_func ("/a11y/property/value-max", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_VALUE_MAX), test_number_property);
649 g_test_add_data_func ("/a11y/property/value-min", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_VALUE_MIN), test_number_property);
650 g_test_add_data_func ("/a11y/property/value-now", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_VALUE_NOW), test_number_property);
651 g_test_add_data_func ("/a11y/property/value-text", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT), test_string_property);
652
653 g_test_add_func ("/a11y/property/update-multiple", test_update_multiple_properties);
654
655 g_test_add_data_func ("/a11y/relation/active-descendant", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_ACTIVE_DESCENDANT), test_ref_relation);
656 g_test_add_data_func ("/a11y/relation/col-count", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_COL_COUNT), test_int_relation);
657 g_test_add_data_func ("/a11y/relation/col-index", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_COL_INDEX), test_int_relation);
658 g_test_add_data_func ("/a11y/relation/col-index-text", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_COL_INDEX_TEXT), test_string_relation);
659 g_test_add_data_func ("/a11y/relation/col-span", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_COL_SPAN), test_int_relation);
660 g_test_add_data_func ("/a11y/relation/controls", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_CONTROLS), test_reflist_relation);
661 g_test_add_data_func ("/a11y/relation/described-by", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_DESCRIBED_BY), test_reflist_relation);
662 g_test_add_data_func ("/a11y/relation/details", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_DETAILS), test_reflist_relation);
663 g_test_add_data_func ("/a11y/relation/error-message", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE), test_ref_relation);
664 g_test_add_data_func ("/a11y/relation/flow-to", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_FLOW_TO), test_reflist_relation);
665 g_test_add_data_func ("/a11y/relation/labelled-by", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_LABELLED_BY), test_reflist_relation);
666 g_test_add_data_func ("/a11y/relation/owns", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_OWNS), test_reflist_relation);
667 g_test_add_data_func ("/a11y/relation/pos-in-set", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_POS_IN_SET), test_int_relation);
668 g_test_add_data_func ("/a11y/relation/row-count", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_ROW_COUNT), test_int_relation);
669 g_test_add_data_func ("/a11y/relation/row-index", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_ROW_INDEX), test_int_relation);
670 g_test_add_data_func ("/a11y/relation/row-index-text", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_ROW_INDEX_TEXT), test_string_relation);
671 g_test_add_data_func ("/a11y/relation/row-span", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_ROW_SPAN), test_int_relation);
672 g_test_add_data_func ("/a11y/relation/set-size", GUINT_TO_POINTER (GTK_ACCESSIBLE_RELATION_SET_SIZE), test_int_relation);
673
674 return g_test_run ();
675 }
676