efl
355 строк · 9.8 Кб
1#ifdef HAVE_CONFIG_H
2# include "elementary_config.h"
3#endif
4
5#define EFL_ACCESS_SELECTION_PROTECTED
6#define EFL_ACCESS_OBJECT_BETA
7#define EFL_ACCESS_OBJECT_PROTECTED
8#include <Elementary.h>
9#include "elm_suite.h"
10
11EFL_START_TEST(elm_list_legacy_type_check)
12{
13Evas_Object *win, *list;
14const char *type;
15
16win = win_add(NULL, "list", ELM_WIN_BASIC);
17
18list = elm_list_add(win);
19
20type = elm_object_widget_type_get(list);
21ck_assert(type != NULL);
22ck_assert(!strcmp(type, "Elm_List"));
23
24type = evas_object_type_get(list);
25ck_assert(type != NULL);
26ck_assert(!strcmp(type, "elm_list"));
27
28}
29EFL_END_TEST
30
31#if 0
32// Skip following tests until Elm_Widget_Item will migrate to Eo infrastructure
33// and following features can be implemented
34
35EFL_START_TEST(elm_list_atspi_selection_selected_children_count_get)
36{
37Evas_Object *win, *list;
38Elm_Object_Item *item;
39int val;
40
41
42win = win_add(NULL, "list", ELM_WIN_BASIC);
43
44list = elm_list_add(win);
45item = elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
46
47val = elm_interface_atspi_selection_selected_children_count_get(list);
48ck_assert(val == 0);
49
50elm_list_item_selected_set(item, EINA_TRUE);
51val = elm_interface_atspi_selection_selected_children_count_get(list);
52ck_assert(val == 1);
53
54elm_list_item_selected_set(item, EINA_FALSE);
55val = elm_interface_atspi_selection_selected_children_count_get(list);
56ck_assert(val == 0);
57
58}
59EFL_END_TEST
60
61EFL_START_TEST(elm_list_atspi_selection_child_select)
62{
63Evas_Object *win, *list;
64Elm_Object_Item *item;
65Eina_Bool val;
66
67
68win = win_add(NULL, "list", ELM_WIN_BASIC);
69
70list = elm_list_add(win);
71item = elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
72
73val = elm_interface_atspi_selection_child_select(list, 0);
74ck_assert(val == EINA_TRUE);
75ck_assert(EINA_TRUE == elm_list_item_selected_get(item));
76
77}
78EFL_END_TEST
79
80EFL_START_TEST(elm_list_atspi_selection_selected_child_deselect)
81{
82Evas_Object *win, *list;
83Elm_Object_Item *item;
84Eina_Bool val;
85
86
87win = win_add(NULL, "list", ELM_WIN_BASIC);
88
89list = elm_list_add(win);
90elm_list_multi_select_set(list, EINA_TRUE);
91elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
92item = elm_list_item_append(list, "Second Element", NULL, NULL, NULL, NULL);
93
94elm_list_item_selected_set(item, EINA_TRUE);
95val = elm_interface_atspi_selection_selected_child_deselect(list, 0);
96ck_assert(val == EINA_TRUE);
97ck_assert(EINA_FALSE == elm_list_item_selected_get(item));
98
99}
100EFL_END_TEST
101
102EFL_START_TEST(elm_list_atspi_selection_is_child_selected)
103{
104Evas_Object *win, *list;
105Elm_Object_Item *item;
106Eina_Bool val;
107
108
109win = win_add(NULL, "list", ELM_WIN_BASIC);
110
111list = elm_list_add(win);
112item = elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
113
114val = elm_interface_atspi_selection_is_child_selected(list, 0);
115ck_assert(val == EINA_FALSE);
116
117elm_list_item_selected_set(item, EINA_TRUE);
118val = elm_interface_atspi_selection_is_child_selected(list, 0);
119ck_assert(val == EINA_TRUE);
120
121}
122EFL_END_TEST
123
124EFL_START_TEST(elm_list_atspi_selection_all_children_select)
125{
126Evas_Object *win, *list;
127Elm_Object_Item *item1, *item2;
128Eina_Bool val;
129
130
131win = win_add(NULL, "list", ELM_WIN_BASIC);
132
133list = elm_list_add(win);
134
135item1 = elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
136item2 = elm_list_item_append(list, "Second Element", NULL, NULL, NULL, NULL);
137
138val = elm_interface_atspi_selection_all_children_select(list);
139ck_assert(val == EINA_FALSE);
140
141elm_list_multi_select_set(list, EINA_TRUE);
142val = elm_interface_atspi_selection_all_children_select(list);
143ck_assert(val == EINA_TRUE);
144ck_assert(EINA_TRUE == elm_list_item_selected_get(item1));
145ck_assert(EINA_TRUE == elm_list_item_selected_get(item2));
146
147}
148EFL_END_TEST
149
150
151EFL_START_TEST(elm_list_atspi_selection_clear)
152{
153Evas_Object *win, *list;
154Elm_Object_Item *item1, *item2;
155Eina_Bool val;
156
157
158win = win_add(NULL, "list", ELM_WIN_BASIC);
159
160list = elm_list_add(win);
161elm_list_multi_select_set(list, EINA_TRUE);
162item1 = elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
163item2 = elm_list_item_append(list, "Second Element", NULL, NULL, NULL, NULL);
164elm_list_item_selected_set(item1, EINA_TRUE);
165elm_list_item_selected_set(item2, EINA_TRUE);
166
167
168val = elm_interface_atspi_selection_clear(list);
169ck_assert(val == EINA_TRUE);
170ck_assert(EINA_FALSE == elm_list_item_selected_get(item1));
171ck_assert(EINA_FALSE == elm_list_item_selected_get(item2));
172
173}
174EFL_END_TEST
175
176EFL_START_TEST(elm_list_atspi_selection_child_deselect)
177{
178Evas_Object *win, *list;
179Elm_Object_Item *item;
180Eina_Bool val;
181
182
183win = win_add(NULL, "list", ELM_WIN_BASIC);
184
185list = elm_list_add(win);
186elm_list_multi_select_set(list, EINA_TRUE);
187elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
188item = elm_list_item_append(list, "Second Element", NULL, NULL, NULL, NULL);
189
190elm_list_item_selected_set(item, EINA_TRUE);
191val = elm_interface_atspi_selection_selected_child_deselect(list, 1);
192ck_assert(val == EINA_TRUE);
193ck_assert(EINA_FALSE == elm_list_item_selected_get(item));
194
195}
196EFL_END_TEST
197
198#endif
199
200EFL_START_TEST(elm_atspi_role_get)
201{
202Evas_Object *win, *list;
203Efl_Access_Role role;
204
205
206win = win_add(NULL, "list", ELM_WIN_BASIC);
207
208list = elm_list_add(win);
209role = efl_access_object_role_get(list);
210
211ck_assert(role == EFL_ACCESS_ROLE_LIST);
212
213}
214EFL_END_TEST
215
216
217/**
218* Validate if genlist implementation properly reset parent to Elm_Genlist_Item
219* from Elm_Genlist
220*/
221EFL_START_TEST(elm_atspi_children_parent)
222{
223Efl_Access_Object *parent;
224Elm_Object_Item *it;
225
226Evas_Object *win = win_add(NULL, "list", ELM_WIN_BASIC);
227
228Evas_Object *icon = elm_icon_add(win);
229Evas_Object *end = elm_icon_add(win);
230
231Evas_Object *list = elm_list_add(win);
232it = elm_list_item_append(list, "First Element", icon, end, NULL, NULL);
233
234evas_object_show(list);
235
236parent = efl_provider_find(efl_parent_get(icon), EFL_ACCESS_OBJECT_MIXIN);
237ck_assert(it == parent);
238
239parent = efl_provider_find(efl_parent_get(end), EFL_ACCESS_OBJECT_MIXIN);
240ck_assert(it == parent);
241
242}
243EFL_END_TEST
244
245#define NUM_ITEMS 10
246EFL_START_TEST(elm_list_test_callbacks)
247{
248Evas_Object *win, *list;
249unsigned int i;
250int count[NUM_ITEMS] = {0};
251Elm_Object_Item *it;
252int selected = 0, unselected = 0;
253int highlighted = 0, unhighlighted = 0;
254
255win = win_add(NULL, "list", ELM_WIN_BASIC);
256evas_object_resize(win, 100, 100);
257
258list = elm_list_add(win);
259evas_object_smart_callback_add(list, "selected", (void*)event_callback_that_increments_an_int_when_called, &selected);
260evas_object_smart_callback_add(list, "unselected", (void*)event_callback_that_increments_an_int_when_called, &unselected);
261evas_object_smart_callback_add(list, "highlighted", (void*)event_callback_that_increments_an_int_when_called, &highlighted);
262evas_object_smart_callback_add(list, "unhighlighted", (void*)event_callback_that_increments_an_int_when_called, &unhighlighted);
263evas_object_resize(list, 100, 100);
264for (i = 0; i < NUM_ITEMS; i++)
265elm_list_item_append(list, "item", NULL, NULL, (void*)event_callback_single_call_int_data, &(count[i]));
266
267elm_list_go(list);
268evas_object_show(list);
269evas_object_show(win);
270get_me_to_those_events(win);
271
272for (i = 0, it = elm_list_first_item_get(list); i < NUM_ITEMS; i++, it = elm_list_item_next(it))
273{
274elm_list_item_selected_set(it, EINA_TRUE);
275ck_assert_int_eq(count[i], 1);
276
277ck_assert_int_eq(selected, i + 1);
278ck_assert_int_eq(unselected, i);
279
280ck_assert_int_eq(highlighted, i + 1);
281ck_assert_int_eq(unhighlighted, i);
282}
283ck_assert_int_eq(selected, 10);
284ck_assert_int_eq(unselected, 9);
285
286ck_assert_int_eq(highlighted, 10);
287ck_assert_int_eq(unhighlighted, 9);
288
289/* weird SIGILL in shutdown if the list isn't deleted here */
290evas_object_del(list);
291}
292EFL_END_TEST
293
294static Eo *
295create_content_with_size(Eo *parent, int mw, int mh)
296{
297Evas *e = evas_object_evas_get(parent);
298Eo *rect = evas_object_rectangle_add(e);
299
300evas_object_size_hint_min_set(rect, mw, mh);
301evas_object_show(rect);
302
303return rect;
304}
305
306EFL_START_TEST(elm_list_test_sizing)
307{
308Evas_Object *win, *list;
309unsigned int i;
310int count[NUM_ITEMS] = {0};
311Elm_Object_Item *it;
312
313win = win_add(NULL, "list", ELM_WIN_BASIC);
314evas_object_resize(win, 100, 100);
315
316list = elm_list_add(win);
317evas_object_resize(list, 100, 100);
318for (i = 0; i < NUM_ITEMS; i++)
319elm_list_item_append(list, "item", create_content_with_size(list, i * 5, i * 5), NULL, (void*)event_callback_single_call_int_data, &(count[i]));
320
321elm_list_go(list);
322evas_object_show(list);
323evas_object_show(win);
324get_me_to_those_events(win);
325
326for (i = 0, it = elm_list_first_item_get(list); i < NUM_ITEMS; i++, it = elm_list_item_next(it))
327{
328Eo *rect = elm_object_item_content_get(it);
329ck_assert(rect);
330/* list is always homogeneous, so these should all have the size of the largest min size */
331assert_object_size_eq(rect, (NUM_ITEMS - 1) * 5, (NUM_ITEMS - 1) * 5);
332}
333
334/* weird SIGILL in shutdown if the list isn't deleted here */
335evas_object_del(list);
336}
337EFL_END_TEST
338
339void elm_test_list(TCase *tc)
340{
341tcase_add_test(tc, elm_list_legacy_type_check);
342tcase_add_test(tc, elm_atspi_role_get);
343#if 0
344tcase_add_test(tc, elm_list_atspi_selection_selected_children_count_get);
345tcase_add_test(tc, elm_list_atspi_selection_child_select);
346tcase_add_test(tc, elm_list_atspi_selection_selected_child_deselect);
347tcase_add_test(tc, elm_list_atspi_selection_is_child_selected);
348tcase_add_test(tc, elm_list_atspi_selection_all_children_select);
349tcase_add_test(tc, elm_list_atspi_selection_clear);
350tcase_add_test(tc, elm_list_atspi_selection_child_deselect);
351#endif
352tcase_add_test(tc, elm_atspi_children_parent);
353tcase_add_test(tc, elm_list_test_callbacks);
354tcase_add_test(tc, elm_list_test_sizing);
355}
356