diff options
Diffstat (limited to 'src/tests/elementary/elm_test_genlist.c')
-rw-r--r-- | src/tests/elementary/elm_test_genlist.c | 212 |
1 files changed, 182 insertions, 30 deletions
diff --git a/src/tests/elementary/elm_test_genlist.c b/src/tests/elementary/elm_test_genlist.c index 4f53014e48..cdce1374ff 100644 --- a/src/tests/elementary/elm_test_genlist.c +++ b/src/tests/elementary/elm_test_genlist.c @@ -2,8 +2,8 @@ # include "elementary_config.h" #endif -#define EFL_ACCESS_BETA -#define EFL_ACCESS_PROTECTED +#define EFL_ACCESS_OBJECT_BETA +#define EFL_ACCESS_OBJECT_PROTECTED #include <Elementary.h> #include "elm_suite.h" @@ -14,43 +14,161 @@ static int counter; static Efl_Access_Event_Children_Changed_Data ev_data; Evas_Object *content; +static void +verify_item_iteration_api(Elm_Object_Item *parent) +{ + Elm_Object_Item *it, *first_child; + Eina_List *children, *l; + int i; + + /* verify first_item_get() */ + it = elm_genlist_first_item_get(genlist); + ck_assert_ptr_eq(it, parent); + ck_assert_ptr_eq(elm_object_item_data_get(it), NULL); + ck_assert_ptr_eq(elm_genlist_item_prev_get(it), NULL); + + /* verify last_item_get() */ + it = elm_genlist_last_item_get(genlist); + ck_assert_ptr_eq(elm_object_item_data_get(it), (void*)(uintptr_t)10); + ck_assert_ptr_eq(elm_genlist_item_next_get(it), NULL); + + /* verify next item of parent item is it's first child */ + first_child = elm_genlist_item_next_get(parent); + ck_assert_ptr_eq(elm_object_item_data_get(first_child), (void*)(uintptr_t)1); + ck_assert_ptr_eq(elm_genlist_item_parent_get(first_child), parent); + + /* verify subitems_count() */ + ck_assert_int_eq(elm_genlist_item_subitems_count(parent), 10); + ck_assert_int_eq(elm_genlist_item_subitems_count(first_child), 0); + + /* verify list consistency */ + it = first_child; + for (i = 1; i <= 9; i++) + { + ck_assert_ptr_eq(elm_object_item_data_get(it), (void*)(uintptr_t)i); + ck_assert_ptr_eq(elm_genlist_item_parent_get(it), parent); + it = elm_genlist_item_next_get(it); + } + + /* verify children list */ + i = 1; + children = (Eina_List *)elm_genlist_item_subitems_get(parent); + EINA_LIST_FOREACH(children, l, it) + { + ck_assert_ptr_eq(elm_object_item_data_get(it), (void*)(uintptr_t)i); + ck_assert_ptr_eq(elm_genlist_item_parent_get(it), parent); + i++; + } + + /* verify item_expanded_depth_get() */ + ck_assert_int_eq(elm_genlist_item_expanded_depth_get(parent), 0); + if (elm_genlist_item_type_get(parent) == ELM_GENLIST_ITEM_GROUP) + ck_assert_int_eq(elm_genlist_item_expanded_depth_get(first_child), 0); + else if (elm_genlist_item_type_get(parent) == ELM_GENLIST_ITEM_TREE) + ck_assert_int_eq(elm_genlist_item_expanded_depth_get(first_child), 1); + + /* verify nth_item_get() and item_index_get() */ + for (i = 0; i <= 11; i++) // also test the not existant item 11 + { + it = elm_genlist_nth_item_get(genlist, i); + if (i == 11) + // item #11 do not exists + ck_assert_int_eq(elm_genlist_item_index_get(it), -1); + else + ck_assert_int_eq(elm_genlist_item_index_get(it), i + 1); + + if ((i == 0) || (i == 11)) + // test first and item #11 (that do not exists) + ck_assert_ptr_eq(elm_object_item_data_get(it), NULL); + else + ck_assert_ptr_eq(elm_object_item_data_get(it), (void*)(uintptr_t)i); + } +} + +EFL_START_TEST (elm_genlist_item_iteration) +{ + Elm_Object_Item *parent; + int i; + + win = win_add(NULL, "genlist", ELM_WIN_BASIC); + + genlist = elm_genlist_add(win); + + // perform test using a GROUP item + parent = elm_genlist_item_append(genlist, &itc, NULL, NULL, + ELM_GENLIST_ITEM_GROUP, NULL, NULL); + for (i = 1; i <= 10; i++) + elm_genlist_item_append(genlist, &itc, (void*)(uintptr_t)i, parent, + 0, NULL, NULL); + + verify_item_iteration_api(parent); + + // repeat same test with a TREE item + elm_genlist_clear(genlist); + parent = elm_genlist_item_append(genlist, &itc, NULL, NULL, + ELM_GENLIST_ITEM_TREE, NULL, NULL); + for (i = 1; i <= 10; i++) + elm_genlist_item_append(genlist, &itc, (void*)(uintptr_t)i, parent, + 0, NULL, NULL); + + verify_item_iteration_api(parent); + +} +EFL_END_TEST + +EFL_START_TEST (elm_genlist_legacy_type_check) +{ + const char *type; + + win = win_add(NULL, "genlist", ELM_WIN_BASIC); + + genlist = elm_genlist_add(win); + + type = elm_object_widget_type_get(genlist); + ck_assert(type != NULL); + ck_assert(!strcmp(type, "Elm_Genlist")); + + type = evas_object_type_get(genlist); + ck_assert(type != NULL); + ck_assert(!strcmp(type, "elm_genlist")); + +} +EFL_END_TEST void test_init(void) { - elm_init(1, NULL); elm_config_atspi_mode_set(EINA_TRUE); - win = elm_win_add(NULL, "genlist", ELM_WIN_BASIC); + win = win_add(NULL, "genlist", ELM_WIN_BASIC); genlist = elm_genlist_add(win); } -START_TEST (elm_atspi_role_get) +EFL_START_TEST (elm_atspi_role_get) { test_init(); Efl_Access_Role role; - role = efl_access_role_get(genlist); + role = efl_access_object_role_get(genlist); ck_assert(role == EFL_ACCESS_ROLE_LIST); - elm_shutdown(); } -END_TEST +EFL_END_TEST -START_TEST(elm_atspi_children_get1) +EFL_START_TEST(elm_atspi_children_get1) { test_init(); Eina_List *children; Elm_Object_Item *it[3]; - children = efl_access_children_get(genlist); + children = efl_access_object_access_children_get(genlist); ck_assert(children == NULL); it[0] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); it[1] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); it[2] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); - children = efl_access_children_get(genlist); + children = efl_access_object_access_children_get(genlist); ck_assert(eina_list_count(children) == 3); ck_assert(eina_list_nth(children, 0) == it[0]); ck_assert(eina_list_nth(children, 1) == it[1]); @@ -58,11 +176,10 @@ START_TEST(elm_atspi_children_get1) eina_list_free(children); - elm_shutdown(); } -END_TEST +EFL_END_TEST -START_TEST(elm_atspi_children_get2) +EFL_START_TEST(elm_atspi_children_get2) { test_init(); Eina_List *children; @@ -72,19 +189,18 @@ START_TEST(elm_atspi_children_get2) it[1] = elm_genlist_item_prepend(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); it[2] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL); - children = efl_access_children_get(genlist); + children = efl_access_object_access_children_get(genlist); ck_assert(eina_list_nth(children, 1) == it[0]); ck_assert(eina_list_nth(children, 0) == it[1]); ck_assert(eina_list_nth(children, 2) == it[2]); - elm_shutdown(); } -END_TEST +EFL_END_TEST static void _children_changed_cb(void *data EINA_UNUSED, const Efl_Event *event) { - if (event->desc != EFL_ACCESS_EVENT_CHILDREN_CHANGED) + if (event->desc != EFL_ACCESS_OBJECT_EVENT_CHILDREN_CHANGED) return; ev_data = *(Efl_Access_Event_Children_Changed_Data*)event->info; @@ -92,7 +208,7 @@ _children_changed_cb(void *data EINA_UNUSED, const Efl_Event *event) counter++; } -START_TEST(elm_atspi_children_events_add) +EFL_START_TEST(elm_atspi_children_events_add) { test_init(); @@ -101,7 +217,7 @@ START_TEST(elm_atspi_children_events_add) Elm_Object_Item *it[3]; - efl_access_event_handler_add(EFL_ACCESS_MIXIN, _children_changed_cb, NULL); + efl_access_object_event_handler_add(EFL_ACCESS_OBJECT_MIXIN, _children_changed_cb, NULL); it[0] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); ck_assert(genlist == current); @@ -121,11 +237,10 @@ START_TEST(elm_atspi_children_events_add) ck_assert(ev_data.is_added == EINA_TRUE); ck_assert(ev_data.child == it[2]); - elm_shutdown(); } -END_TEST +EFL_END_TEST -START_TEST(elm_atspi_children_events_del1) +EFL_START_TEST(elm_atspi_children_events_del1) { test_init(); @@ -138,7 +253,7 @@ START_TEST(elm_atspi_children_events_del1) it[1] = elm_genlist_item_prepend(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); it[2] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL); - efl_access_event_handler_add(EFL_ACCESS_MIXIN, _children_changed_cb, NULL); + efl_access_object_event_handler_add(EFL_ACCESS_OBJECT_MIXIN, _children_changed_cb, NULL); elm_object_item_del(it[0]); ck_assert(genlist == current); @@ -152,11 +267,10 @@ START_TEST(elm_atspi_children_events_del1) ck_assert(ev_data.is_added == EINA_FALSE); ck_assert(ev_data.child == it[2]); - elm_shutdown(); } -END_TEST +EFL_END_TEST -START_TEST(elm_atspi_children_events_del2) +EFL_START_TEST(elm_atspi_children_events_del2) { test_init(); @@ -166,7 +280,7 @@ START_TEST(elm_atspi_children_events_del2) it = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); - efl_access_event_handler_add(EFL_ACCESS_MIXIN, _children_changed_cb, NULL); + efl_access_object_event_handler_add(EFL_ACCESS_OBJECT_MIXIN, _children_changed_cb, NULL); elm_genlist_clear(genlist); ck_assert(genlist == current); @@ -174,12 +288,50 @@ START_TEST(elm_atspi_children_events_del2) ck_assert(ev_data.is_added == EINA_FALSE); ck_assert(ev_data.child == it); - elm_shutdown(); } -END_TEST +EFL_END_TEST + +static int it_del = 0; + +static void +_gl_destroy() +{ + ck_assert_int_eq(it_del, 2); +} + +static void +_it_destroy() +{ + it_del++; +} + +static void +_it_del() +{ + it_del = 1; +} + +EFL_START_TEST(elm_genlist_item_destroy) +{ + Elm_Object_Item *git; + + win = win_add(NULL, "genlist", ELM_WIN_BASIC); + + genlist = elm_genlist_add(win); + efl_event_callback_add(genlist, EFL_EVENT_DESTRUCT, _gl_destroy, NULL); + + git = elm_genlist_item_append(genlist, &itc, NULL, NULL, 0, NULL, NULL); + efl_event_callback_add(git, EFL_EVENT_DEL, _it_del, NULL); + efl_event_callback_add(git, EFL_EVENT_DESTRUCT, _it_destroy, NULL); + +} +EFL_END_TEST void elm_test_genlist(TCase *tc) { + tcase_add_test(tc, elm_genlist_legacy_type_check); + tcase_add_test(tc, elm_genlist_item_destroy); + tcase_add_test(tc, elm_genlist_item_iteration); tcase_add_test(tc, elm_atspi_role_get); tcase_add_test(tc, elm_atspi_children_get1); tcase_add_test(tc, elm_atspi_children_get2); |