2 * Tested interface: AtkSelection
4 * Tested AtkObject: EailList
6 * Description: Test AtkSelection interface
8 * Test input: accessible object representing EailList
10 * Expected test result: test should return 0 (success)
13 #include <Elementary.h>
16 #include "eail_test_utils.h"
18 #define EAIL_TYPE_FOR_LIST "EailList"
19 #define EAIL_TYPE_FOR_LIST_ITEM "EailItem"
21 static Evas_Object *glob_elm_list = NULL;
26 _test_list_item_interfaces(AtkObject *item_object)
28 g_assert(ATK_IS_OBJECT(item_object));
29 g_assert(eailu_is_object_with_type(item_object, EAIL_TYPE_FOR_LIST_ITEM));
32 * for single list items focusing does NOT work
34 eailu_test_atk_focus(item_object, FALSE);
36 g_assert(ATK_IS_ACTION(item_object));
40 _test_item_selection_single(AtkObject *parent, AtkObject *child, int index)
42 g_assert(ATK_IS_SELECTION(parent));
43 /* in single selection mode it should return FALSE */
44 g_assert(!atk_selection_select_all_selection(ATK_SELECTION(parent)));
46 (FALSE == atk_selection_is_child_selected(ATK_SELECTION(parent), index));
48 /* NOTE: calling click action to select child*/
49 eailu_test_action_activate(ATK_ACTION(child), "click");
50 g_assert(atk_selection_is_child_selected(ATK_SELECTION(parent), index));
51 g_assert(1 == atk_selection_get_selection_count(ATK_SELECTION(parent)));
53 /* now removing selection using atk_selection interface */
54 g_assert(atk_selection_remove_selection(ATK_SELECTION(parent),index));
56 (FALSE == atk_selection_is_child_selected(ATK_SELECTION(parent), index));
57 g_assert(0 == atk_selection_get_selection_count(ATK_SELECTION(parent)));
61 _test_multiselection_list(AtkObject *atk_list)
63 elm_list_multi_select_set(glob_elm_list, EINA_TRUE);
64 g_assert(atk_selection_select_all_selection(ATK_SELECTION(atk_list)));
66 /* all children should be now selected */
67 g_assert(7 == atk_selection_get_selection_count(ATK_SELECTION(atk_list)));
69 /* now clearing selection */
70 g_assert(atk_selection_clear_selection(ATK_SELECTION(atk_list)));
71 g_assert(0 == atk_selection_get_selection_count(ATK_SELECTION(atk_list)));
75 _do_test(AtkObject *aobj)
77 int child_amount = 0, i = 0;
79 /* checking list items implementation */
80 for (i = 0; i < child_amount; i++)
82 AtkObject *child = atk_object_ref_accessible_child(aobj, i);
83 _test_list_item_interfaces(child);
84 _test_item_selection_single(aobj, child, i);
85 /* each list item has inside 2 text entry objects */
86 printf("Child amount %d\n", atk_object_get_n_accessible_children(child));
87 g_assert(2 == atk_object_get_n_accessible_children(child));
88 g_object_unref(child);
91 /* now quick check if multiselection on list works properly*/
92 _test_multiselection_list(aobj);
94 eailu_test_code_called = 1;
98 _init_list(Evas_Object *win)
100 Evas_Object *box, *entry;
103 static const char *lbl[] =
114 box = elm_box_add(win);
115 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
116 elm_win_resize_object_add(win, box);
117 evas_object_show(box);
119 glob_elm_list = elm_list_add(win);
120 evas_object_size_hint_weight_set(glob_elm_list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
121 evas_object_size_hint_align_set(glob_elm_list, EVAS_HINT_FILL, EVAS_HINT_FILL);
122 elm_object_tree_focus_allow_set(win, EINA_TRUE);
124 entry = elm_entry_add(win);
125 elm_entry_single_line_set(entry, EINA_TRUE);
126 evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, 0.0);
127 evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
128 evas_object_show(entry);
130 for (i = 0; i < sizeof(lbl) / sizeof(lbl[0]); i++)
131 elm_list_item_append(glob_elm_list, lbl[i], entry, entry, NULL, NULL);
133 elm_box_pack_end(box, glob_elm_list);
135 elm_list_go(glob_elm_list);
136 evas_object_show(glob_elm_list);
140 elm_main(int argc, char **argv)
144 win = eailu_create_test_window_with_glib_init(_on_done, _on_focus_in);
147 /* and show the window */
148 evas_object_show(win);