Merge "custom eail widget implementation" into tizen
[platform/core/uifw/eail.git] / tests / eail_list_tc3.c
1 /*
2  * Tested interface: AtkSelection
3  *
4  * Tested AtkObject: EailList
5  *
6  * Description: Test AtkSelection interface
7  *
8  * Test input: accessible object representing EailList
9  *
10  * Expected test result: test should return 0 (success)
11  */
12
13 #include <Elementary.h>
14 #include <atk/atk.h>
15
16 #include "eail_test_utils.h"
17
18 #define EAIL_TYPE_FOR_LIST "EailList"
19 #define EAIL_TYPE_FOR_LIST_ITEM "EailItem"
20
21 static Evas_Object *glob_elm_list = NULL;
22
23 INIT_TEST("EailList")
24
25 void
26 _test_list_item_interfaces(AtkObject *item_object)
27 {
28    g_assert(ATK_IS_OBJECT(item_object));
29    g_assert(eailu_is_object_with_type(item_object, EAIL_TYPE_FOR_LIST_ITEM));
30
31    /**
32     * for single list items focusing does NOT work
33     */
34    eailu_test_atk_focus(item_object, FALSE);
35
36    g_assert(ATK_IS_ACTION(item_object));
37 }
38
39 void
40 _test_item_selection_single(AtkObject *parent, AtkObject *child, int index)
41 {
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)));
45    g_assert
46       (FALSE == atk_selection_is_child_selected(ATK_SELECTION(parent), index));
47
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)));
52
53   /* now removing selection using atk_selection interface */
54   g_assert(atk_selection_remove_selection(ATK_SELECTION(parent),index));
55   g_assert
56      (FALSE == atk_selection_is_child_selected(ATK_SELECTION(parent), index));
57   g_assert(0 == atk_selection_get_selection_count(ATK_SELECTION(parent)));
58 }
59
60 void
61 _test_multiselection_list(AtkObject *atk_list)
62 {
63    elm_list_multi_select_set(glob_elm_list, EINA_TRUE);
64    g_assert(atk_selection_select_all_selection(ATK_SELECTION(atk_list)));
65
66    /* all children should be now selected */
67    g_assert(7 == atk_selection_get_selection_count(ATK_SELECTION(atk_list)));
68
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)));
72 }
73
74 void
75 _do_test(AtkObject *aobj)
76 {
77    int child_amount = 0, i = 0;
78
79    /* checking list items implementation */
80      for (i = 0; i < child_amount; i++)
81       {
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);
89        }
90
91    /* now quick check if multiselection on list works properly*/
92    _test_multiselection_list(aobj);
93
94    eailu_test_code_called = 1;
95 }
96
97 void
98 _init_list(Evas_Object *win)
99 {
100    Evas_Object *box, *entry;
101    int i = 0;
102
103    static const char *lbl[] =
104       {
105          "Sunday",
106          "Monday",
107          "Tuesday",
108          "Wednesday",
109          "Thursday",
110          "Friday",
111          "Saturday"
112       };
113
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);
118
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);
123
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);
129
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);
132
133    elm_box_pack_end(box, glob_elm_list);
134
135    elm_list_go(glob_elm_list);
136    evas_object_show(glob_elm_list);
137 }
138
139 EAPI_MAIN int
140 elm_main(int argc, char **argv)
141 {
142    Evas_Object *win;
143
144    win = eailu_create_test_window_with_glib_init(_on_done, _on_focus_in);
145    _init_list(win);
146
147    /* and show the window */
148    evas_object_show(win);
149
150    elm_run();
151    elm_shutdown();
152
153    /* exit code */
154    return 0;
155 }
156 ELM_MAIN()