2 * Tested interface: AtkSelection
4 * Tested AtkObject: EailGenlist
6 * Description: Test AtkSelection interface
8 * Test input: accessible object representing EailGenlist
10 * Expected test result: test should return 0 (success)
13 #include <Elementary.h>
16 #include "eail_test_utils.h"
18 INIT_TEST("EailGenlist")
20 #define EAIL_TYPE_FOR_LIST_ITEM "EailItem"
23 static Evas_Object *glob_genlist = NULL;
24 static Elm_Genlist_Item_Class *_itc_group = NULL;
25 static int nitems = 0;
27 Elm_Object_Item *glob_test_item = NULL;
30 _test_list_item_interfaces(AtkObject *item_object)
32 g_assert(ATK_IS_OBJECT(item_object));
33 g_assert(eailu_is_object_with_type(item_object, EAIL_TYPE_FOR_LIST_ITEM));
36 * for single list items focusing does NOT work
38 eailu_test_atk_focus(item_object, FALSE);
40 g_assert(ATK_IS_ACTION(item_object));
44 _test_item_selection_single(AtkObject *parent, AtkObject *child, int index)
46 g_assert(ATK_IS_SELECTION(parent));
47 /* in single selection mode it should return FALSE */
48 g_assert(!atk_selection_select_all_selection(ATK_SELECTION(parent)));
50 (FALSE == atk_selection_is_child_selected(ATK_SELECTION(parent), index));
52 g_assert(atk_selection_add_selection(ATK_SELECTION(parent), index));
53 g_assert(atk_selection_is_child_selected(ATK_SELECTION(parent), index));
54 g_assert(1 == atk_selection_get_selection_count(ATK_SELECTION(parent)));
56 /* now removing selection using atk_selection interface */
57 g_assert(atk_selection_remove_selection(ATK_SELECTION(parent),index));
59 (FALSE == atk_selection_is_child_selected(ATK_SELECTION(parent), index));
60 g_assert(0 == atk_selection_get_selection_count(ATK_SELECTION(parent)));
64 _test_multiselection_list(AtkObject *atk_list)
66 elm_genlist_multi_select_set(glob_genlist, EINA_TRUE);
67 g_assert(atk_selection_select_all_selection(ATK_SELECTION(atk_list)));
69 /* all children should be now selected */
71 (N_ITEMS == atk_selection_get_selection_count(ATK_SELECTION(atk_list)));
73 /* now clearing selection */
74 g_assert(atk_selection_clear_selection(ATK_SELECTION(atk_list)));
75 g_assert(0 == atk_selection_get_selection_count(ATK_SELECTION(atk_list)));
79 _do_test(AtkObject *aobj)
81 int child_amount = 0, i = 0;
83 child_amount = atk_object_get_n_accessible_children(aobj);
84 g_assert(N_ITEMS == child_amount);
86 /* checking list items implementation */
87 for (i = 0; i < child_amount; i++)
89 AtkObject *child = atk_object_ref_accessible_child(aobj, i);
90 /* each list item has inside 2 text entry objects */
92 _test_list_item_interfaces(child);
93 _test_item_selection_single(aobj, child, i);
95 g_object_unref(child);
98 /* now quick check if multiselection on list works properly*/
99 _test_multiselection_list(aobj);
100 eailu_test_code_called = 1;
104 _item_label_get(void *data, Evas_Object *obj, const char *part)
106 time_t t = (time_t)ecore_time_unix_get();
108 int i = (int)(long)data;
110 localtime_r(&t, &timeinfo);
112 if (!strcmp(part, "elm.text"))
113 g_snprintf(buf, sizeof(buf), "Item # %i", i);
117 strftime(buf, sizeof(buf), "realized at %c", &timeinfo);
126 _item_content_get(void *data, Evas_Object *obj, const char *part)
128 Evas_Object *ic = elm_icon_add(obj);
130 if (!strcmp(part, "elm.swallow.icon"))
131 elm_icon_standard_set(ic, "clock");
133 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
138 _group_label_get(void *data, Evas_Object *obj, const char *part)
141 int i = (int)(long)data;
143 g_snprintf(buf, sizeof(buf), "Group %d (item #%d)", i / 7, i);
149 _group_content_get(void *data, Evas_Object *obj, const char *part)
151 Evas_Object *ic = elm_icon_add(obj);
153 if (!strcmp(part, "elm.swallow.icon"))
154 elm_icon_standard_set(ic, "home");
156 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
161 _item_sel_cb(void *data, Evas_Object *obj, void *event_info)
163 // printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n",
164 // data, obj, event_info);
168 _init_genlist(Evas_Object *win)
170 Evas_Object *box, *entry;
171 static Elm_Genlist_Item_Class *_itc = NULL;
176 _itc = elm_genlist_item_class_new();
177 _itc->item_style = "default";
178 _itc->func.text_get = _item_label_get;
179 _itc->func.content_get = _item_content_get;
180 _itc->func.state_get = NULL;
181 _itc->func.del = NULL;
186 _itc_group = elm_genlist_item_class_new();
187 _itc_group->item_style = "group_index";
188 _itc_group->func.text_get = _group_label_get;
189 _itc_group->func.content_get = _group_content_get;
190 _itc_group->func.state_get = NULL;
191 _itc_group->func.del = NULL;
194 box = elm_box_add(win);
195 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
196 elm_win_resize_object_add(win, box);
197 evas_object_show(box);
199 glob_genlist = elm_genlist_add(win);
201 evas_object_size_hint_weight_set
202 (glob_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
203 evas_object_size_hint_align_set
204 (glob_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
205 elm_box_pack_end(box, glob_genlist);
206 evas_object_show(glob_genlist);
208 entry = elm_entry_add(win);
209 elm_entry_single_line_set(entry, EINA_TRUE);
210 evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, 0.0);
211 evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
212 evas_object_show(entry);
215 /* filling genlist */
216 for (i = 0; i < N_ITEMS; i++)
218 Elm_Object_Item *gli = NULL, *glg = NULL;
222 glg = gli = elm_genlist_item_append(glob_genlist, _itc_group,
223 (void *) (long) nitems++,
224 NULL, ELM_GENLIST_ITEM_GROUP,
225 _item_sel_cb, NULL );
226 elm_genlist_item_select_mode_set(
227 gli, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
231 gli = elm_genlist_item_append(glob_genlist, _itc,
232 (void *) (long) nitems++, glg,
233 ELM_GENLIST_ITEM_NONE,
234 _item_sel_cb, NULL );
238 glob_test_item = gli;
244 elm_main(int argc, char **argv)
248 win = eailu_create_test_window_with_glib_init(_on_done, _on_focus_in);
251 /* and show the window */
252 evas_object_show(win);