efl

Форк
0
/
elm_test_list.c 
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

11
EFL_START_TEST(elm_list_legacy_type_check)
12
{
13
   Evas_Object *win, *list;
14
   const char *type;
15

16
   win = win_add(NULL, "list", ELM_WIN_BASIC);
17

18
   list = elm_list_add(win);
19

20
   type = elm_object_widget_type_get(list);
21
   ck_assert(type != NULL);
22
   ck_assert(!strcmp(type, "Elm_List"));
23

24
   type = evas_object_type_get(list);
25
   ck_assert(type != NULL);
26
   ck_assert(!strcmp(type, "elm_list"));
27

28
}
29
EFL_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

35
EFL_START_TEST(elm_list_atspi_selection_selected_children_count_get)
36
{
37
 Evas_Object *win, *list;
38
 Elm_Object_Item *item;
39
 int val;
40

41

42
 win = win_add(NULL, "list", ELM_WIN_BASIC);
43

44
 list = elm_list_add(win);
45
 item = elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
46

47
 val = elm_interface_atspi_selection_selected_children_count_get(list);
48
 ck_assert(val == 0);
49

50
 elm_list_item_selected_set(item, EINA_TRUE);
51
 val = elm_interface_atspi_selection_selected_children_count_get(list);
52
 ck_assert(val == 1);
53

54
 elm_list_item_selected_set(item, EINA_FALSE);
55
 val = elm_interface_atspi_selection_selected_children_count_get(list);
56
 ck_assert(val == 0);
57

58
}
59
EFL_END_TEST
60

61
EFL_START_TEST(elm_list_atspi_selection_child_select)
62
{
63
 Evas_Object *win, *list;
64
 Elm_Object_Item *item;
65
 Eina_Bool val;
66

67

68
 win = win_add(NULL, "list", ELM_WIN_BASIC);
69

70
 list = elm_list_add(win);
71
 item = elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
72

73
 val = elm_interface_atspi_selection_child_select(list, 0);
74
 ck_assert(val == EINA_TRUE);
75
 ck_assert(EINA_TRUE == elm_list_item_selected_get(item));
76

77
}
78
EFL_END_TEST
79

80
EFL_START_TEST(elm_list_atspi_selection_selected_child_deselect)
81
{
82
 Evas_Object *win, *list;
83
 Elm_Object_Item *item;
84
 Eina_Bool val;
85

86

87
 win = win_add(NULL, "list", ELM_WIN_BASIC);
88

89
 list = elm_list_add(win);
90
 elm_list_multi_select_set(list, EINA_TRUE);
91
 elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
92
 item = elm_list_item_append(list, "Second Element", NULL, NULL, NULL, NULL);
93

94
 elm_list_item_selected_set(item, EINA_TRUE);
95
 val = elm_interface_atspi_selection_selected_child_deselect(list, 0);
96
 ck_assert(val == EINA_TRUE);
97
 ck_assert(EINA_FALSE == elm_list_item_selected_get(item));
98

99
}
100
EFL_END_TEST
101

102
EFL_START_TEST(elm_list_atspi_selection_is_child_selected)
103
{
104
 Evas_Object *win, *list;
105
 Elm_Object_Item *item;
106
 Eina_Bool val;
107

108

109
 win = win_add(NULL, "list", ELM_WIN_BASIC);
110

111
 list = elm_list_add(win);
112
 item = elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
113

114
 val = elm_interface_atspi_selection_is_child_selected(list, 0);
115
 ck_assert(val == EINA_FALSE);
116

117
 elm_list_item_selected_set(item, EINA_TRUE);
118
 val = elm_interface_atspi_selection_is_child_selected(list, 0);
119
 ck_assert(val == EINA_TRUE);
120

121
}
122
EFL_END_TEST
123

124
EFL_START_TEST(elm_list_atspi_selection_all_children_select)
125
{
126
 Evas_Object *win, *list;
127
 Elm_Object_Item *item1, *item2;
128
 Eina_Bool val;
129

130

131
 win = win_add(NULL, "list", ELM_WIN_BASIC);
132

133
 list = elm_list_add(win);
134

135
 item1 = elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
136
 item2 = elm_list_item_append(list, "Second Element", NULL, NULL, NULL, NULL);
137

138
 val = elm_interface_atspi_selection_all_children_select(list);
139
 ck_assert(val == EINA_FALSE);
140

141
 elm_list_multi_select_set(list, EINA_TRUE);
142
 val = elm_interface_atspi_selection_all_children_select(list);
143
 ck_assert(val == EINA_TRUE);
144
 ck_assert(EINA_TRUE == elm_list_item_selected_get(item1));
145
 ck_assert(EINA_TRUE == elm_list_item_selected_get(item2));
146

147
}
148
EFL_END_TEST
149

150

151
EFL_START_TEST(elm_list_atspi_selection_clear)
152
{
153
 Evas_Object *win, *list;
154
 Elm_Object_Item *item1, *item2;
155
 Eina_Bool val;
156

157

158
 win = win_add(NULL, "list", ELM_WIN_BASIC);
159

160
 list = elm_list_add(win);
161
 elm_list_multi_select_set(list, EINA_TRUE);
162
 item1 = elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
163
 item2 = elm_list_item_append(list, "Second Element", NULL, NULL, NULL, NULL);
164
 elm_list_item_selected_set(item1, EINA_TRUE);
165
 elm_list_item_selected_set(item2, EINA_TRUE);
166

167

168
 val = elm_interface_atspi_selection_clear(list);
169
 ck_assert(val == EINA_TRUE);
170
 ck_assert(EINA_FALSE == elm_list_item_selected_get(item1));
171
 ck_assert(EINA_FALSE == elm_list_item_selected_get(item2));
172

173
}
174
EFL_END_TEST
175

176
EFL_START_TEST(elm_list_atspi_selection_child_deselect)
177
{
178
 Evas_Object *win, *list;
179
 Elm_Object_Item *item;
180
 Eina_Bool val;
181

182

183
 win = win_add(NULL, "list", ELM_WIN_BASIC);
184

185
 list = elm_list_add(win);
186
 elm_list_multi_select_set(list, EINA_TRUE);
187
 elm_list_item_append(list, "First Element", NULL, NULL, NULL, NULL);
188
 item = elm_list_item_append(list, "Second Element", NULL, NULL, NULL, NULL);
189

190
 elm_list_item_selected_set(item, EINA_TRUE);
191
 val = elm_interface_atspi_selection_selected_child_deselect(list, 1);
192
 ck_assert(val == EINA_TRUE);
193
 ck_assert(EINA_FALSE == elm_list_item_selected_get(item));
194

195
}
196
EFL_END_TEST
197

198
#endif
199

200
EFL_START_TEST(elm_atspi_role_get)
201
{
202
 Evas_Object *win, *list;
203
 Efl_Access_Role role;
204

205

206
 win = win_add(NULL, "list", ELM_WIN_BASIC);
207

208
 list = elm_list_add(win);
209
 role = efl_access_object_role_get(list);
210

211
 ck_assert(role == EFL_ACCESS_ROLE_LIST);
212

213
}
214
EFL_END_TEST
215

216

217
/**
218
 * Validate if genlist implementation properly reset parent to Elm_Genlist_Item
219
 * from Elm_Genlist
220
 */
221
EFL_START_TEST(elm_atspi_children_parent)
222
{
223
   Efl_Access_Object *parent;
224
   Elm_Object_Item *it;
225

226
   Evas_Object *win = win_add(NULL, "list", ELM_WIN_BASIC);
227

228
   Evas_Object *icon = elm_icon_add(win);
229
   Evas_Object *end = elm_icon_add(win);
230

231
   Evas_Object *list = elm_list_add(win);
232
   it = elm_list_item_append(list, "First Element", icon, end, NULL, NULL);
233

234
   evas_object_show(list);
235

236
   parent = efl_provider_find(efl_parent_get(icon), EFL_ACCESS_OBJECT_MIXIN);
237
   ck_assert(it == parent);
238

239
   parent = efl_provider_find(efl_parent_get(end), EFL_ACCESS_OBJECT_MIXIN);
240
   ck_assert(it == parent);
241

242
}
243
EFL_END_TEST
244

245
#define NUM_ITEMS 10
246
EFL_START_TEST(elm_list_test_callbacks)
247
{
248
   Evas_Object *win, *list;
249
   unsigned int i;
250
   int count[NUM_ITEMS] = {0};
251
   Elm_Object_Item *it;
252
   int selected = 0, unselected = 0;
253
   int highlighted = 0, unhighlighted = 0;
254

255
   win = win_add(NULL, "list", ELM_WIN_BASIC);
256
   evas_object_resize(win, 100, 100);
257

258
   list = elm_list_add(win);
259
   evas_object_smart_callback_add(list, "selected", (void*)event_callback_that_increments_an_int_when_called, &selected);
260
   evas_object_smart_callback_add(list, "unselected", (void*)event_callback_that_increments_an_int_when_called, &unselected);
261
   evas_object_smart_callback_add(list, "highlighted", (void*)event_callback_that_increments_an_int_when_called, &highlighted);
262
   evas_object_smart_callback_add(list, "unhighlighted", (void*)event_callback_that_increments_an_int_when_called, &unhighlighted);
263
   evas_object_resize(list, 100, 100);
264
   for (i = 0; i < NUM_ITEMS; i++)
265
     elm_list_item_append(list, "item", NULL, NULL, (void*)event_callback_single_call_int_data, &(count[i]));
266

267
   elm_list_go(list);
268
   evas_object_show(list);
269
   evas_object_show(win);
270
   get_me_to_those_events(win);
271

272
   for (i = 0, it = elm_list_first_item_get(list); i < NUM_ITEMS; i++, it = elm_list_item_next(it))
273
     {
274
        elm_list_item_selected_set(it, EINA_TRUE);
275
        ck_assert_int_eq(count[i], 1);
276

277
        ck_assert_int_eq(selected, i + 1);
278
        ck_assert_int_eq(unselected, i);
279

280
        ck_assert_int_eq(highlighted, i + 1);
281
        ck_assert_int_eq(unhighlighted, i);
282
     }
283
   ck_assert_int_eq(selected, 10);
284
   ck_assert_int_eq(unselected, 9);
285

286
   ck_assert_int_eq(highlighted, 10);
287
   ck_assert_int_eq(unhighlighted, 9);
288

289
   /* weird SIGILL in shutdown if the list isn't deleted here */
290
   evas_object_del(list);
291
}
292
EFL_END_TEST
293

294
static Eo *
295
create_content_with_size(Eo *parent, int mw, int mh)
296
{
297
   Evas *e = evas_object_evas_get(parent);
298
   Eo *rect = evas_object_rectangle_add(e);
299

300
   evas_object_size_hint_min_set(rect, mw, mh);
301
   evas_object_show(rect);
302

303
   return rect;
304
}
305

306
EFL_START_TEST(elm_list_test_sizing)
307
{
308
   Evas_Object *win, *list;
309
   unsigned int i;
310
   int count[NUM_ITEMS] = {0};
311
   Elm_Object_Item *it;
312

313
   win = win_add(NULL, "list", ELM_WIN_BASIC);
314
   evas_object_resize(win, 100, 100);
315

316
   list = elm_list_add(win);
317
   evas_object_resize(list, 100, 100);
318
   for (i = 0; i < NUM_ITEMS; i++)
319
     elm_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

321
   elm_list_go(list);
322
   evas_object_show(list);
323
   evas_object_show(win);
324
   get_me_to_those_events(win);
325

326
   for (i = 0, it = elm_list_first_item_get(list); i < NUM_ITEMS; i++, it = elm_list_item_next(it))
327
     {
328
        Eo *rect = elm_object_item_content_get(it);
329
        ck_assert(rect);
330
        /* list is always homogeneous, so these should all have the size of the largest min size */
331
        assert_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 */
335
   evas_object_del(list);
336
}
337
EFL_END_TEST
338

339
void elm_test_list(TCase *tc)
340
{
341
   tcase_add_test(tc, elm_list_legacy_type_check);
342
   tcase_add_test(tc, elm_atspi_role_get);
343
#if 0
344
   tcase_add_test(tc, elm_list_atspi_selection_selected_children_count_get);
345
   tcase_add_test(tc, elm_list_atspi_selection_child_select);
346
   tcase_add_test(tc, elm_list_atspi_selection_selected_child_deselect);
347
   tcase_add_test(tc, elm_list_atspi_selection_is_child_selected);
348
   tcase_add_test(tc, elm_list_atspi_selection_all_children_select);
349
   tcase_add_test(tc, elm_list_atspi_selection_clear);
350
   tcase_add_test(tc, elm_list_atspi_selection_child_deselect);
351
#endif
352
   tcase_add_test(tc, elm_atspi_children_parent);
353
   tcase_add_test(tc, elm_list_test_callbacks);
354
   tcase_add_test(tc, elm_list_test_sizing);
355
}
356

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.