tizen 2.4 release
[framework/uifw/elementary.git] / src / tests / elm_test_genlist.c
1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4
5 #define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
6 #include <Elementary.h>
7 #include "elm_suite.h"
8
9 static Evas_Object *win, *genlist;
10 static Elm_Gen_Item_Class itc;
11 static Eo *current;
12 static int counter;
13 static Elm_Atspi_Event_Children_Changed_Data ev_data;
14
15 void test_init(void)
16 {
17    elm_init(1, NULL);
18    elm_config_atspi_mode_set(EINA_TRUE);
19    win = elm_win_add(NULL, "genlist", ELM_WIN_BASIC);
20    genlist = elm_genlist_add(win);
21 }
22
23 START_TEST (elm_atspi_role_get)
24 {
25    test_init();
26
27    Elm_Atspi_Role role;
28
29    eo_do(genlist, role = elm_interface_atspi_accessible_role_get());
30
31    ck_assert(role == ELM_ATSPI_ROLE_LIST);
32
33    elm_shutdown();
34 }
35 END_TEST
36
37 START_TEST(elm_atspi_children_get1)
38 {
39    test_init();
40    Eina_List *children;
41    Elm_Object_Item *it[3];
42
43    eo_do(genlist, children = elm_interface_atspi_accessible_children_get());
44    ck_assert(children == NULL);
45
46    it[0] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
47    it[1] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
48    it[2] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
49
50    eo_do(genlist, children = elm_interface_atspi_accessible_children_get());
51    ck_assert(eina_list_count(children) == 3);
52    ck_assert(eina_list_nth(children, 0) == it[0]);
53    ck_assert(eina_list_nth(children, 1) == it[1]);
54    ck_assert(eina_list_nth(children, 2) == it[2]);
55
56    eina_list_free(children);
57
58    elm_shutdown();
59 }
60 END_TEST
61
62 START_TEST(elm_atspi_children_get2)
63 {
64    test_init();
65    Eina_List *children;
66    Elm_Object_Item *it[3];
67
68    it[0] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
69    it[1] = elm_genlist_item_prepend(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
70    it[2] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL);
71
72    eo_do(genlist, children = elm_interface_atspi_accessible_children_get());
73    ck_assert(eina_list_nth(children, 1) == it[0]);
74    ck_assert(eina_list_nth(children, 0) == it[1]);
75    ck_assert(eina_list_nth(children, 2) == it[2]);
76
77    elm_shutdown();
78 }
79 END_TEST
80
81 static Eina_Bool
82 _children_changed_cb(void *data EINA_UNUSED, Eo *obj EINA_UNUSED,
83                      const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED)
84 {
85    ev_data = *(Elm_Atspi_Event_Children_Changed_Data*)event_info;
86    current = obj;
87    counter++;
88
89    return EINA_TRUE;
90 }
91
92 START_TEST(elm_atspi_children_events_add)
93 {
94    test_init();
95
96    current = NULL;
97    counter = 0;
98
99    Elm_Object_Item *it[3];
100
101    eo_do(genlist, eo_event_callback_add(ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, _children_changed_cb, NULL));
102
103    it[0] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
104    ck_assert(genlist == current);
105    ck_assert(counter == 1);
106    ck_assert(ev_data.is_added == EINA_TRUE);
107    ck_assert(ev_data.child == it[0]);
108
109    it[1] = elm_genlist_item_prepend(genlist, &itc, it[0], NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
110    ck_assert(genlist == current);
111    ck_assert(counter == 2);
112    ck_assert(ev_data.is_added == EINA_TRUE);
113    ck_assert(ev_data.child == it[1]);
114
115    it[2] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL);
116    ck_assert(genlist == current);
117    ck_assert(counter == 3);
118    ck_assert(ev_data.is_added == EINA_TRUE);
119    ck_assert(ev_data.child == it[2]);
120
121    elm_shutdown();
122 }
123 END_TEST
124
125 START_TEST(elm_atspi_children_events_del1)
126 {
127    test_init();
128
129    current = NULL;
130    counter = 0;
131
132    Elm_Object_Item *it[3];
133
134    it[0] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
135    it[1] = elm_genlist_item_prepend(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
136    it[2] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL);
137
138    eo_do(genlist, eo_event_callback_add(ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, _children_changed_cb, NULL));
139
140    elm_object_item_del(it[0]);
141    ck_assert(genlist == current);
142    ck_assert(counter == 1);
143    ck_assert(ev_data.is_added == EINA_FALSE);
144    ck_assert(ev_data.child == it[0]);
145
146    elm_object_item_del(it[2]);
147    ck_assert(genlist == current);
148    ck_assert(counter == 2);
149    ck_assert(ev_data.is_added == EINA_FALSE);
150    ck_assert(ev_data.child == it[2]);
151
152    elm_shutdown();
153 }
154 END_TEST
155
156 START_TEST(elm_atspi_children_events_del2)
157 {
158    test_init();
159
160    Elm_Object_Item *it;
161    current = NULL;
162    counter = 0;
163
164    it = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
165
166    eo_do(genlist, eo_event_callback_add(ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, _children_changed_cb, NULL));
167    elm_genlist_clear(genlist);
168
169    ck_assert(genlist == current);
170    ck_assert(counter == 1);
171    ck_assert(ev_data.is_added == EINA_FALSE);
172    ck_assert(ev_data.child == it);
173
174    elm_shutdown();
175 }
176 END_TEST
177
178 void elm_test_genlist(TCase *tc)
179 {
180    tcase_add_test(tc, elm_atspi_role_get);
181    tcase_add_test(tc, elm_atspi_children_get1);
182    tcase_add_test(tc, elm_atspi_children_get2);
183    tcase_add_test(tc, elm_atspi_children_events_add);
184    tcase_add_test(tc, elm_atspi_children_events_del1);
185    tcase_add_test(tc, elm_atspi_children_events_del2);
186 }