From 660d9937525c0b43d8d820507a50c2381ce9573c Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 5 Aug 2019 13:58:03 -0400 Subject: [PATCH] tests/efl_ui_popup: add tests for this widget these tests cover all the cases in the elm_test efl.ui.popup example Reviewed-by: Marcel Hollerbach Differential Revision: https://phab.enlightenment.org/D9509 --- src/tests/elementary/efl_ui_suite.c | 1 + src/tests/elementary/efl_ui_suite.h | 1 + src/tests/elementary/efl_ui_test_popup.c | 183 +++++++++++++++++++++++ src/tests/elementary/meson.build | 1 + 4 files changed, 186 insertions(+) create mode 100644 src/tests/elementary/efl_ui_test_popup.c diff --git a/src/tests/elementary/efl_ui_suite.c b/src/tests/elementary/efl_ui_suite.c index 707f450939..a9894a0003 100644 --- a/src/tests/elementary/efl_ui_suite.c +++ b/src/tests/elementary/efl_ui_suite.c @@ -27,6 +27,7 @@ static const Efl_Test_Case etc[] = { { "efl_ui_widget", efl_ui_test_widget }, { "efl_ui_spotlight", efl_ui_test_spotlight}, { "efl_ui_check", efl_ui_test_check }, + { "efl_ui_popup", efl_ui_test_popup }, { "efl_ui_progressbar", efl_ui_test_progressbar }, { "efl_ui_radio_group", efl_ui_test_radio_group }, { "efl_ui_slider", efl_ui_test_slider }, diff --git a/src/tests/elementary/efl_ui_suite.h b/src/tests/elementary/efl_ui_suite.h index a2ad7945f7..3c6c708e2e 100644 --- a/src/tests/elementary/efl_ui_suite.h +++ b/src/tests/elementary/efl_ui_suite.h @@ -47,6 +47,7 @@ void efl_ui_test_item_container(TCase *tc); void efl_ui_test_list_container(TCase *tc); void efl_ui_test_grid_container(TCase *tc); void efl_ui_test_config(TCase *tc); +void efl_ui_test_popup(TCase *tc); void loop_timer_interval_set(Eo *obj, double in); diff --git a/src/tests/elementary/efl_ui_test_popup.c b/src/tests/elementary/efl_ui_test_popup.c new file mode 100644 index 0000000000..45231674e4 --- /dev/null +++ b/src/tests/elementary/efl_ui_test_popup.c @@ -0,0 +1,183 @@ +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#endif + +#include +#include +#include "efl_ui_suite.h" + +#define WIN_SIZE 500 + +EFL_START_TEST(efl_ui_test_popup_basic_align) +{ + Eo *win, *popup; + + win = win_add(); + efl_gfx_entity_size_set(win, EINA_SIZE2D(WIN_SIZE, WIN_SIZE)); + + popup = efl_add(EFL_UI_POPUP_CLASS, win); + efl_ui_popup_size_set(popup, EINA_SIZE2D(160, 160)); + + Eo *btn = efl_add(EFL_UI_BUTTON_CLASS, popup); + efl_text_set(btn, "Efl.Ui.Popup"); + + efl_content_set(popup, btn); + + + get_me_to_those_events(popup); + + { + Eina_Position2D pos = efl_gfx_entity_position_get(popup); + Eina_Size2D sz = efl_gfx_entity_size_get(popup); + + /* verify centered */ + ck_assert_int_eq(pos.x, WIN_SIZE / 2 - sz.w / 2); + ck_assert_int_eq(pos.y, WIN_SIZE / 2 - sz.h / 2); + } + + efl_ui_popup_align_set(popup, EFL_UI_POPUP_ALIGN_LEFT); + efl_canvas_group_calculate(popup); + { + Eina_Position2D pos = efl_gfx_entity_position_get(popup); + Eina_Size2D sz = efl_gfx_entity_size_get(popup); + + /* verify left */ + ck_assert_int_eq(pos.x, 0); + ck_assert_int_eq(pos.y, WIN_SIZE / 2 - sz.h / 2); + } + + + efl_ui_popup_align_set(popup, EFL_UI_POPUP_ALIGN_RIGHT); + efl_canvas_group_calculate(popup); + { + Eina_Position2D pos = efl_gfx_entity_position_get(popup); + Eina_Size2D sz = efl_gfx_entity_size_get(popup); + + /* verify right */ + ck_assert_int_eq(pos.x, WIN_SIZE - sz.w); + ck_assert_int_eq(pos.y, WIN_SIZE / 2 - sz.h / 2); + } + + efl_ui_popup_align_set(popup, EFL_UI_POPUP_ALIGN_TOP); + efl_canvas_group_calculate(popup); + { + Eina_Position2D pos = efl_gfx_entity_position_get(popup); + Eina_Size2D sz = efl_gfx_entity_size_get(popup); + + /* verify top */ + ck_assert_int_eq(pos.x, WIN_SIZE / 2 - sz.w / 2); + ck_assert_int_eq(pos.y, 0); + } + + efl_ui_popup_align_set(popup, EFL_UI_POPUP_ALIGN_BOTTOM); + efl_canvas_group_calculate(popup); + { + Eina_Position2D pos = efl_gfx_entity_position_get(popup); + Eina_Size2D sz = efl_gfx_entity_size_get(popup); + + /* verify bottom */ + ck_assert_int_eq(pos.x, WIN_SIZE / 2 - sz.w / 2); + ck_assert_int_eq(pos.y, WIN_SIZE - sz.h); + } + + efl_gfx_entity_position_set(popup, EINA_POSITION2D(0, 0)); + efl_canvas_group_calculate(popup); + { + Eina_Position2D pos = efl_gfx_entity_position_get(popup); + + /* verify bottom */ + ck_assert_int_eq(pos.x, 0); + ck_assert_int_eq(pos.y, 0); + } +} +EFL_END_TEST + +EFL_START_TEST(efl_ui_test_popup_basic_sizing) +{ + Eo *win, *popup; + + win = win_add(); + efl_gfx_entity_size_set(win, EINA_SIZE2D(WIN_SIZE, WIN_SIZE)); + + popup = efl_add(EFL_UI_POPUP_CLASS, win); + efl_ui_popup_size_set(popup, EINA_SIZE2D(160, 160)); + + Eo *btn = efl_add(EFL_UI_BUTTON_CLASS, popup); + efl_text_set(btn, "Efl.Ui.Popup"); + + efl_content_set(popup, btn); + + + get_me_to_those_events(popup); + + Eina_Size2D sz = efl_gfx_entity_size_get(popup); + ck_assert_int_eq(sz.w, 160); + ck_assert_int_eq(sz.h, 160); +} +EFL_END_TEST + +EFL_START_TEST(efl_ui_test_popup_events) +{ + Eo *win, *popup; + int called = 0; + + win = win_add(); + efl_gfx_entity_size_set(win, EINA_SIZE2D(WIN_SIZE, WIN_SIZE)); + + popup = efl_add(EFL_UI_POPUP_CLASS, win); + + efl_event_callback_add(popup, EFL_UI_POPUP_EVENT_BACKWALL_CLICKED, + (void*)event_callback_that_is_called_exactly_one_time_and_sets_a_single_int_data_pointer_when_called, &called); + efl_event_callback_add(popup, EFL_UI_POPUP_EVENT_TIMEOUT, event_callback_that_quits_the_main_loop_when_called, NULL); + efl_ui_popup_size_set(popup, EINA_SIZE2D(160, 160)); + + Eo *btn = efl_add(EFL_UI_BUTTON_CLASS, popup); + efl_text_set(btn, "Efl.Ui.Popup"); + + efl_content_set(popup, btn); + + + get_me_to_those_events(popup); + click_object_at(win, 1, 1); + /* trigger signal process -> events */ + ecore_main_loop_iterate(); + ck_assert_int_eq(called, 1); + called = 0; + + Eo *repeat_test_btn = efl_add(EFL_UI_BUTTON_CLASS, win); + efl_gfx_entity_position_set(repeat_test_btn, EINA_POSITION2D(0, 0)); + efl_gfx_entity_size_set(repeat_test_btn, EINA_SIZE2D(100, 100)); + efl_text_set(repeat_test_btn, "Repeat Event Test"); + efl_event_callback_add(repeat_test_btn, EFL_INPUT_EVENT_CLICKED, + (void*)event_callback_that_is_called_exactly_one_time_and_sets_a_single_int_data_pointer_when_called, &called); + efl_ui_popup_part_backwall_repeat_events_set(efl_part(popup, "backwall"), EINA_TRUE); + click_object(repeat_test_btn); + + efl_ui_popup_timeout_set(popup, 0.1); + ecore_main_loop_begin(); +} +EFL_END_TEST + +EFL_START_TEST(efl_ui_test_popup_backwall_img) +{ + Eo *win, *popup; + char buf[PATH_MAX]; + + win = win_add(); + efl_gfx_entity_size_set(win, EINA_SIZE2D(WIN_SIZE, WIN_SIZE)); + + popup = efl_add(EFL_UI_POPUP_CLASS, win); + + snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", ELM_IMAGE_DATA_DIR); + ck_assert(efl_file_simple_load(efl_part(popup, "backwall"), buf, NULL)); + ck_assert_str_eq(efl_file_get(efl_part(popup, "backwall")), buf); +} +EFL_END_TEST + +void efl_ui_test_popup(TCase *tc) +{ + tcase_add_test(tc, efl_ui_test_popup_events); + tcase_add_test(tc, efl_ui_test_popup_basic_sizing); + tcase_add_test(tc, efl_ui_test_popup_basic_align); + tcase_add_test(tc, efl_ui_test_popup_backwall_img); +} diff --git a/src/tests/elementary/meson.build b/src/tests/elementary/meson.build index 7046aa8862..dff90e788b 100644 --- a/src/tests/elementary/meson.build +++ b/src/tests/elementary/meson.build @@ -152,6 +152,7 @@ efl_ui_suite_src = [ 'efl_ui_test_list_collection.c', 'efl_ui_test_grid_collection.c', 'efl_ui_test_position_manager_common.c', + 'efl_ui_test_popup.c', ] efl_ui_suite = executable('efl_ui_suite',