2 * Tested interface: AtkTable
4 * Tested AtkObject: EailGengrid
6 * Description: Test AtkTable interface
8 * Test input: accessible object representing EailGengrid
10 * Expected test result: test should return 0 (success)
13 #include <Elementary.h>
16 #include "eail_test_utils.h"
18 INIT_TEST("EailGengrid")
20 typedef struct _Example_Item
25 static Elm_Gengrid_Item_Class *gic = NULL;
26 static Evas_Object *grid;
28 static const char *imgs[9] =
42 _grid_label_get(void *data, Evas_Object *obj, const char *part)
44 const Example_Item *it = data;
46 g_snprintf(buf, sizeof(buf), "Photo %s", it->path);
51 _grid_content_get(void *data, Evas_Object *obj, const char *part)
53 const Example_Item *it = data;
54 if (!strcmp(part, "elm.swallow.icon"))
56 Evas_Object *icon = elm_bg_add(obj);
58 g_snprintf(buf, sizeof(buf),"%s", it->path);
59 elm_bg_file_set(icon, buf, NULL);
60 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
61 evas_object_show(icon);
69 _grid_state_get(void *data, Evas_Object *obj, const char *part)
75 _grid_del(void *data, Evas_Object *obj)
77 Example_Item *it = data;
78 eina_stringshare_del(it->path);
83 _item_new(unsigned int index)
85 Example_Item *it = malloc(sizeof(*it));
87 it->path = eina_stringshare_add(imgs[index]);
89 it->path = eina_stringshare_add(imgs[0]);
93 void _on_selected(void *data, Evas_Object *obj, void *event_info)
95 _printf("selected item with handle: %p\n", event_info);
99 _print_object_info(AtkObject *obj)
101 AtkRole atk_role = atk_object_get_role(obj);
102 const char *name = atk_object_get_name(obj);
103 const char *type_name = g_type_name(G_TYPE_FROM_INSTANCE(obj));
104 const char *role_name = atk_role_get_name(atk_role);
106 _printf("atk_object_get_name: %s\n", name ? name : "NULL");
107 _printf("atk_object_get_role: %s\n", role_name ? role_name : "NULL");
108 _printf("atk_object_get_type_name: %s\n", type_name ? type_name : "NULL");
112 _do_test(AtkObject *obj)
114 int rows, cols, row_at_index, column_at_index, index_at;
117 AtkObject *table_child;
119 g_assert(ATK_IS_TABLE(obj));
120 table = ATK_TABLE(obj);
121 rows = atk_table_get_n_rows(table);
123 cols = atk_table_get_n_columns(table);
125 row_at_index = atk_table_get_row_at_index(table, 4);
126 g_assert(row_at_index == 1);
127 column_at_index = atk_table_get_column_at_index(table, 2);
128 g_assert(column_at_index == 2);
129 index_at = atk_table_get_index_at(table, 2, 2);
130 g_assert(index_at == 8);
131 table_child = atk_table_ref_at(table, 1, 1);
132 g_assert(ATK_IS_OBJECT(table_child));
133 _print_object_info(table_child);
134 success = atk_table_add_column_selection(table, 1);
136 success = atk_table_is_column_selected(table, 1);
138 success = atk_table_remove_column_selection(table, 1);
140 success = atk_table_add_row_selection(table, 1);
142 success = atk_table_is_row_selected(table, 1);
144 success = atk_table_remove_row_selection(table, 0);
147 eailu_test_code_called = 1;
149 static Ecore_Timer *timer_delay;
151 static Eina_Bool delay_test_run(void *data)
153 Eina_List *l, *list = elm_gengrid_realized_items_get(data);
156 Evas_Object *win = elm_object_parent_widget_get(data);
157 EINA_LIST_FOREACH(list, l, it)
160 elm_gengrid_item_pos_get(it, &x, &y);
163 _on_focus_in(NULL, win, NULL);
168 _init_gengrid(Evas_Object *win)
172 bg = elm_bg_add(win);
173 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
174 elm_win_resize_object_add(win, bg);
175 evas_object_show(bg);
176 grid = elm_gengrid_add(win);
178 elm_gengrid_item_size_set(grid, 200, 200);
179 evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
180 elm_win_resize_object_add(win, grid);
181 evas_object_smart_callback_add(grid, "selected", _on_selected, NULL);
182 elm_gengrid_horizontal_set(grid, EINA_FALSE);
183 elm_gengrid_multi_select_set(grid, EINA_TRUE);
184 evas_object_show(grid);
188 gic = elm_gengrid_item_class_new();
189 gic->item_style = "default";
190 gic->func.text_get = _grid_label_get;
191 gic->func.content_get = _grid_content_get;
192 gic->func.state_get = _grid_state_get;
193 gic->func.del = _grid_del;
194 } // we only create the first time its needed. we dont unref/free
196 elm_gengrid_item_append(grid, gic, _item_new(0), NULL, NULL);
197 elm_gengrid_item_append(grid, gic, _item_new(1), NULL, NULL);
198 elm_gengrid_item_append(grid, gic, _item_new(2), NULL, NULL);
199 elm_gengrid_item_append(grid, gic, _item_new(3), NULL, NULL);
200 elm_gengrid_item_append(grid, gic, _item_new(4), NULL, NULL);
201 elm_gengrid_item_append(grid, gic, _item_new(5), NULL, NULL);
202 elm_gengrid_item_append(grid, gic, _item_new(6), NULL, NULL);
203 elm_gengrid_item_append(grid, gic, _item_new(7), NULL, NULL);
204 elm_gengrid_item_append(grid, gic, _item_new(8), NULL, NULL);
205 evas_object_resize(win, 800, 600);
209 elm_main(int argc, char **argv)
213 win = eailu_create_test_window_with_glib_init(_on_done, NULL);
215 evas_object_show(win);
217 timer_delay = ecore_timer_add(1, delay_test_run, grid);