2 * Tested interface: AtkObject
4 * Tested AtkObject: EailGengrid
6 * Description: Test AtkObject interface
8 * Test input: accessible object representing EailGengrid
10 * Expected test result: test should return 0 (success)
13 #include <Elementary.h>
18 #include "eail_test_utils.h"
20 INIT_TEST("EailGengrid")
22 typedef struct _Example_Item
27 static Elm_Gengrid_Item_Class *gic = NULL;
28 static Evas_Object *grid;
30 static const char *imgs[9] =
44 _grid_label_get(void *data, Evas_Object *obj, const char *part)
46 const Example_Item *it = data;
48 g_snprintf(buf, sizeof(buf), "Photo %s", it->path);
53 _grid_content_get(void *data, Evas_Object *obj, const char *part)
55 const Example_Item *it = data;
56 if (!strcmp(part, "elm.swallow.icon"))
58 Evas_Object *icon = elm_bg_add(obj);
60 g_snprintf(buf, sizeof(buf),"%s", it->path);
61 elm_bg_file_set(icon, buf, NULL);
62 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
63 evas_object_show(icon);
71 _grid_state_get(void *data, Evas_Object *obj, const char *part)
77 _grid_del(void *data, Evas_Object *obj)
79 Example_Item *it = data;
80 eina_stringshare_del(it->path);
85 _item_new(unsigned int index)
87 Example_Item *it = malloc(sizeof(*it));
89 it->path = eina_stringshare_add(imgs[index]);
91 it->path = eina_stringshare_add(imgs[0]);
95 void _on_selected(void *data, Evas_Object *obj, void *event_info)
97 _printf("selected item with handle: %p\n", event_info);
101 _do_test(AtkObject *obj)
103 gint index = -1, column = -1, row = -1;
104 AtkObject *two_two_child = NULL, *zero_zero_child = NULL,
105 *zero_four_child = NULL, *zero_three_child = NULL;
107 /* 2-2 coords should NOT have any match*/
108 index = atk_table_get_index_at(ATK_TABLE(obj), 2, 2);
109 g_assert(-1 == index);
110 two_two_child = atk_table_ref_at(ATK_TABLE(obj), 2, 2);
111 g_assert(NULL == two_two_child);
113 /* 0-0 coords should be found*/
114 index = atk_table_get_index_at(ATK_TABLE(obj), 0, 0);
115 g_assert(-1 != index);
116 zero_zero_child = atk_table_ref_at(ATK_TABLE(obj), 0, 0);
117 g_assert(zero_zero_child);
119 /* 0-4 coords should NOT be found*/
120 index = atk_table_get_index_at(ATK_TABLE(obj), 0, 4);
121 g_assert(-1 == index);
122 zero_four_child = atk_table_ref_at(ATK_TABLE(obj), 0, 4);
123 g_assert(NULL == zero_four_child);
125 /*...but 0-3 coords should be found*/
126 index = atk_table_get_index_at(ATK_TABLE(obj), 0, 3);
127 g_assert(-1 != index);
128 zero_three_child = atk_table_ref_at(ATK_TABLE(obj), 0, 3);
129 g_assert(zero_three_child);
131 /* table - columns checks*/
132 /*...index-9 obj should not be found (slightly out of bounds)*/
133 column = atk_table_get_column_at_index(ATK_TABLE(obj), 9);
134 g_assert(-1 == column);
136 /*...index-8 obj should be found, and should be '0' */
137 column = atk_table_get_column_at_index(ATK_TABLE(obj), 8);
138 g_assert(0 == column);
140 /*...index-7 obj should be found, and column be '3' */
141 column = atk_table_get_column_at_index(ATK_TABLE(obj), 7);
142 g_assert(3 == column);
144 /*... index-2 obj should be found, and column be 2' */
145 column = atk_table_get_column_at_index(ATK_TABLE(obj), 2);
146 g_assert(2 == column);
148 /*... index-6 obj should be found, and column be 2' */
149 column = atk_table_get_column_at_index(ATK_TABLE(obj), 6);
150 g_assert(2 == column);
152 /* table -rows checks*/
153 /* index 9- should not be found in any row */
154 row = atk_table_get_row_at_index(ATK_TABLE(obj), 9);
157 /*...index-8 obj should be found, and row should be '2' */
158 row = atk_table_get_row_at_index(ATK_TABLE(obj), 8);
161 /*...index-7 obj should be found, and row should be '1' */
162 row = atk_table_get_row_at_index(ATK_TABLE(obj), 7);
165 /*...index-2 obj should be found, and row should be '0' */
166 row = atk_table_get_row_at_index(ATK_TABLE(obj), 2);
169 /*...index-6 obj should be found, and row should be '1' */
170 row = atk_table_get_row_at_index(ATK_TABLE(obj), 6);
173 /*...index-0 obj should be found, and row should be '0' */
174 row = atk_table_get_row_at_index(ATK_TABLE(obj), 0);
177 eailu_test_code_called = 1;
180 static Ecore_Timer *timer_delay;
182 static Eina_Bool delay_test_run(void *data)
184 Eina_List *l, *list = elm_gengrid_realized_items_get(data);
187 Evas_Object *win = elm_object_parent_widget_get(data);
188 EINA_LIST_FOREACH(list, l, it)
191 elm_gengrid_item_pos_get(it, &x, &y);
194 _on_focus_in(NULL, win, NULL);
199 _init_gengrid(Evas_Object *win)
203 bg = elm_bg_add(win);
204 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
205 elm_win_resize_object_add(win, bg);
206 evas_object_show(bg);
207 grid = elm_gengrid_add(win);
209 elm_gengrid_item_size_set(grid, 200, 200);
210 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
211 elm_win_resize_object_add(win, grid);
212 evas_object_smart_callback_add(grid, "selected", _on_selected, NULL);
213 elm_gengrid_horizontal_set(grid, EINA_FALSE);
214 elm_gengrid_multi_select_set(grid, EINA_TRUE);
215 evas_object_show(grid);
219 gic = elm_gengrid_item_class_new();
220 gic->item_style = "default";
221 gic->func.text_get = _grid_label_get;
222 gic->func.content_get = _grid_content_get;
223 gic->func.state_get = _grid_state_get;
224 gic->func.del = _grid_del;
225 } // we only create the first time its needed. we dont unref/free
227 elm_gengrid_item_append(grid, gic, _item_new(0), NULL, NULL);
228 elm_gengrid_item_append(grid, gic, _item_new(1), NULL, NULL);
229 elm_gengrid_item_append(grid, gic, _item_new(2), NULL, NULL);
230 elm_gengrid_item_append(grid, gic, _item_new(3), NULL, NULL);
231 elm_gengrid_item_append(grid, gic, _item_new(4), NULL, NULL);
232 elm_gengrid_item_append(grid, gic, _item_new(5), NULL, NULL);
233 elm_gengrid_item_append(grid, gic, _item_new(6), NULL, NULL);
234 elm_gengrid_item_append(grid, gic, _item_new(7), NULL, NULL);
235 elm_gengrid_item_append(grid, gic, _item_new(8), NULL, NULL);
236 evas_object_resize(win, 1000, 300);
240 elm_main(int argc, char **argv)
244 win = eailu_create_test_window_with_glib_init(_on_done, NULL);
246 evas_object_show(win);
248 timer_delay = ecore_timer_add(1, delay_test_run, grid);