2009-27-09 Mark Doffman <mark.doffman@codethink.co.uk>
[platform/core/uifw/at-spi2-atk.git] / tests / apps / relation-app.c
1 #include <gmodule.h>
2 #include <atk/atk.h>
3 #include <my-atk.h>
4
5 static AtkObject *root_accessible;
6
7 G_MODULE_EXPORT void
8 test_init (gchar *path)
9 {
10   AtkObject *r1, *r2, *r3;
11   AtkObject *m1, *m2, *m3;
12   AtkRelationSet *rset;
13   AtkRelation *rel;
14   AtkObject *rls[3];
15
16   root_accessible  = g_object_new(MY_TYPE_ATK_OBJECT, NULL);
17   
18   r1 = ATK_OBJECT(g_object_new(MY_TYPE_ATK_OBJECT,
19                                   "accessible-name", "r1",
20                                   "accessible-description", "",
21                                   "accessible-role", ATK_ROLE_INVALID,
22                                   NULL));
23   my_atk_object_add_child(MY_ATK_OBJECT(root_accessible), MY_ATK_OBJECT(r1));
24
25   r2 = ATK_OBJECT(g_object_new(MY_TYPE_ATK_OBJECT,
26                                   "accessible-name", "r2",
27                                   "accessible-description", "",
28                                   "accessible-role", ATK_ROLE_INVALID,
29                                   NULL));
30   my_atk_object_add_child(MY_ATK_OBJECT(root_accessible), MY_ATK_OBJECT(r2));
31
32   r3 = ATK_OBJECT(g_object_new(MY_TYPE_ATK_OBJECT,
33                                   "accessible-name", "r3",
34                                   "accessible-description", "",
35                                   "accessible-role", ATK_ROLE_INVALID,
36                                   NULL));
37   my_atk_object_add_child(MY_ATK_OBJECT(root_accessible), MY_ATK_OBJECT(r3));
38
39   m1 = ATK_OBJECT(g_object_new(MY_TYPE_ATK_OBJECT,
40                                   "accessible-name", "m1",
41                                   "accessible-description", "",
42                                   "accessible-role", ATK_ROLE_INVALID,
43                                   NULL));
44   my_atk_object_add_child(MY_ATK_OBJECT(root_accessible), MY_ATK_OBJECT(m1));
45
46   m2 = ATK_OBJECT(g_object_new(MY_TYPE_ATK_OBJECT,
47                                   "accessible-name", "m2",
48                                   "accessible-description", "",
49                                   "accessible-role", ATK_ROLE_INVALID,
50                                   NULL));
51   my_atk_object_add_child(MY_ATK_OBJECT(root_accessible), MY_ATK_OBJECT(m2));
52
53   m3 = ATK_OBJECT(g_object_new(MY_TYPE_ATK_OBJECT,
54                                   "accessible-name", "m3",
55                                   "accessible-description", "",
56                                   "accessible-role", ATK_ROLE_INVALID,
57                                   NULL));
58   my_atk_object_add_child(MY_ATK_OBJECT(root_accessible), MY_ATK_OBJECT(m3));
59
60   atk_object_add_relationship(root_accessible, ATK_RELATION_EMBEDS, r1);
61   atk_object_add_relationship(root_accessible, ATK_RELATION_PARENT_WINDOW_OF, r2);
62   atk_object_add_relationship(root_accessible, ATK_RELATION_DESCRIBED_BY, r3);
63
64   rls[0] = m1;
65   rls[1] = m2;
66   rls[2] = m3;
67
68   rset = atk_object_ref_relation_set(root_accessible);
69   rel = atk_relation_new(rls, 3, ATK_RELATION_POPUP_FOR);
70   atk_relation_set_add(rset, rel);
71   g_object_unref(G_OBJECT(rset));
72 }
73
74 G_MODULE_EXPORT void
75 test_next (int argc, char *argv[])
76 {
77   g_print("Moving to next stage\n");
78 }
79
80 G_MODULE_EXPORT void
81 test_finished (int argc, char *argv[])
82 {
83   g_print("Test has completed\n");
84 }
85
86 G_MODULE_EXPORT AtkObject *
87 test_get_root (void)
88 {
89   return root_accessible;
90 }