stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=276c9ed26de31853b26a517ed8564cc47b29447c
commit 276c9ed26de31853b26a517ed8564cc47b29447c Author: Mike Blumenkrantz <[email protected]> Date: Mon Apr 13 12:43:21 2020 -0400 tests/elm: add callback tests for elm_list basic tests to verify behavior for triggering callbacks when selecting items Reviewed-by: Stefan Schmidt <[email protected]> Differential Revision: https://phab.enlightenment.org/D11703 --- src/tests/elementary/elm_test_list.c | 50 ++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/tests/elementary/elm_test_list.c b/src/tests/elementary/elm_test_list.c index d15fb249f7..063384b235 100644 --- a/src/tests/elementary/elm_test_list.c +++ b/src/tests/elementary/elm_test_list.c @@ -242,6 +242,55 @@ EFL_START_TEST(elm_atspi_children_parent) } EFL_END_TEST +#define NUM_ITEMS 10 +EFL_START_TEST(elm_list_test_callbacks) +{ + Evas_Object *win, *list; + unsigned int i; + int count[NUM_ITEMS] = {0}; + Elm_Object_Item *it; + int selected = 0, unselected = 0; + int highlighted = 0, unhighlighted = 0; + + win = win_add(NULL, "list", ELM_WIN_BASIC); + evas_object_resize(win, 100, 100); + + list = elm_list_add(win); + evas_object_smart_callback_add(list, "selected", (void*)event_callback_that_increments_an_int_when_called, &selected); + evas_object_smart_callback_add(list, "unselected", (void*)event_callback_that_increments_an_int_when_called, &unselected); + evas_object_smart_callback_add(list, "highlighted", (void*)event_callback_that_increments_an_int_when_called, &highlighted); + evas_object_smart_callback_add(list, "unhighlighted", (void*)event_callback_that_increments_an_int_when_called, &unhighlighted); + evas_object_resize(list, 100, 100); + for (i = 0; i < NUM_ITEMS; i++) + elm_list_item_append(list, "item", NULL, NULL, (void*)event_callback_single_call_int_data, &(count[i])); + + elm_list_go(list); + evas_object_show(list); + evas_object_show(win); + get_me_to_those_events(win); + + for (i = 0, it = elm_list_first_item_get(list); i < NUM_ITEMS; i++, it = elm_list_item_next(it)) + { + elm_list_item_selected_set(it, EINA_TRUE); + ck_assert_int_eq(count[i], 1); + + ck_assert_int_eq(selected, i + 1); + ck_assert_int_eq(unselected, i); + + ck_assert_int_eq(highlighted, i + 1); + ck_assert_int_eq(unhighlighted, i); + } + ck_assert_int_eq(selected, 10); + ck_assert_int_eq(unselected, 9); + + ck_assert_int_eq(highlighted, 10); + ck_assert_int_eq(unhighlighted, 9); + + /* weird SIGILL in shutdown if the list isn't deleted here */ + evas_object_del(list); +} +EFL_END_TEST + void elm_test_list(TCase *tc) { tcase_add_test(tc, elm_list_legacy_type_check); @@ -256,4 +305,5 @@ void elm_test_list(TCase *tc) tcase_add_test(tc, elm_list_atspi_selection_child_deselect); #endif tcase_add_test(tc, elm_atspi_children_parent); + tcase_add_test(tc, elm_list_test_callbacks); } --
