aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDave Andreoli <dave@gurumeditation.it>2018-04-28 12:22:51 +0200
committerDave Andreoli <dave@gurumeditation.it>2018-04-28 12:22:51 +0200
commitd8bfcd511e719ed43be0383482bffa4288efe338 (patch)
treefcdd2cc26c2bc979fb4b8d563640ecd48019c652 /src
parentGenlist: fix doc for item_next/prev_get() (diff)
downloadefl-d8bfcd511e719ed43be0383482bffa4288efe338.tar.gz
Genlist: a sane test for genlist item iteration
This is much more extensive than before and we are now testing both tree and group items. This test has been run in 9 stable releases down to 1.12 the only one that fail is 1.18 that is know to be broken wrt item iteration. Hopefully definitly close https://phab.enlightenment.org/T5938
Diffstat (limited to 'src')
-rw-r--r--src/tests/elementary/elm_test_genlist.c109
1 files changed, 77 insertions, 32 deletions
diff --git a/src/tests/elementary/elm_test_genlist.c b/src/tests/elementary/elm_test_genlist.c
index e317bfc3de..cdce1374ff 100644
--- a/src/tests/elementary/elm_test_genlist.c
+++ b/src/tests/elementary/elm_test_genlist.c
@@ -15,58 +15,103 @@ static Efl_Access_Event_Children_Changed_Data ev_data;
Evas_Object *content;
static void
-verify_group_api(Elm_Object_Item *git)
+verify_item_iteration_api(Elm_Object_Item *parent)
{
- Elm_Object_Item *it;
+ Elm_Object_Item *it, *first_child;
+ Eina_List *children, *l;
int i;
- /* the last item is the group item
- * this is not consistent with the visual layout but this is consistent with behavior since 1.0
- */
- it = elm_genlist_last_item_get(genlist);
- ck_assert_ptr_ne(it, NULL);
- ck_assert_ptr_eq(it, git);
+ /* 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);
- /* assert that the last item is actually the last item */
- it = elm_genlist_item_next_get(git);
- ck_assert_ptr_eq(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);
- /* assert that the other items added to the list exist */
- it = elm_genlist_item_prev_get(git);
- ck_assert_ptr_ne(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);
- /* assert that the parent of this item is the group item */
- ck_assert_ptr_eq(elm_genlist_item_parent_get(it), git);
-
- /* check that the first item in the list is a normal item */
- it = elm_genlist_first_item_get(genlist);
- ck_assert_ptr_eq(elm_genlist_item_parent_get(it), git);
+ /* 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 */
- for (i = 0; i < 9; i++)
+ 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);
- ck_assert_ptr_eq(elm_genlist_item_parent_get(it), git);
}
- it = elm_genlist_item_next_get(it);
- /* verify once again that we have arrived at the group item */
- ck_assert_ptr_eq(it, git);
+
+ /* 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_group)
+EFL_START_TEST (elm_genlist_item_iteration)
{
- Elm_Object_Item *git;
+ Elm_Object_Item *parent;
int i;
win = win_add(NULL, "genlist", ELM_WIN_BASIC);
genlist = elm_genlist_add(win);
- git = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
- for (i = 0; i < 10; i++)
- elm_genlist_item_append(genlist, &itc, NULL, git, 0, NULL, NULL);
+ // 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_group_api(git);
+ verify_item_iteration_api(parent);
}
EFL_END_TEST
@@ -286,7 +331,7 @@ 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_group);
+ 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);