From 1e73201169473a92c26c233377b9e5747b3e0776 Mon Sep 17 00:00:00 2001 From: Marcel Hollerbach Date: Fri, 5 Jul 2019 14:11:23 +0200 Subject: [PATCH] efl_ui_spin: add tests for basic spin features this tests for the correct event emission. And checks the wheel interaction. Reviewed-by: Mike Blumenkrantz Differential Revision: https://phab.enlightenment.org/D9221 --- src/lib/elementary/Efl_Ui.h | 1 + src/tests/elementary/efl_ui_suite.c | 1 + src/tests/elementary/efl_ui_suite.h | 1 + src/tests/elementary/efl_ui_test_spin.c | 100 ++++++++++++++++++++++++ src/tests/elementary/meson.build | 1 + 5 files changed, 104 insertions(+) create mode 100644 src/tests/elementary/efl_ui_test_spin.c diff --git a/src/lib/elementary/Efl_Ui.h b/src/lib/elementary/Efl_Ui.h index 774c3ba281..7b99cf3a23 100644 --- a/src/lib/elementary/Efl_Ui.h +++ b/src/lib/elementary/Efl_Ui.h @@ -247,6 +247,7 @@ typedef Eo Efl_Ui_Spotlight_Indicator; # include # include # include +# include /** * Initialize Elementary diff --git a/src/tests/elementary/efl_ui_suite.c b/src/tests/elementary/efl_ui_suite.c index 36bdd37a45..07c47cbd3e 100644 --- a/src/tests/elementary/efl_ui_suite.c +++ b/src/tests/elementary/efl_ui_suite.c @@ -29,6 +29,7 @@ static const Efl_Test_Case etc[] = { { "efl_ui_progressbar", efl_ui_test_progressbar }, { "efl_ui_radio_group", efl_ui_test_radio_group }, { "efl_ui_win", efl_ui_test_win }, + { "efl_ui_spin", efl_ui_test_spin }, { NULL, NULL } }; diff --git a/src/tests/elementary/efl_ui_suite.h b/src/tests/elementary/efl_ui_suite.h index 79c7cba890..1366494c38 100644 --- a/src/tests/elementary/efl_ui_suite.h +++ b/src/tests/elementary/efl_ui_suite.h @@ -40,6 +40,7 @@ void efl_ui_test_check(TCase *tc); void efl_ui_test_progressbar(TCase *tc); void efl_ui_test_radio_group(TCase *tc); void efl_ui_test_win(TCase *tc); +void efl_ui_test_spin(TCase *tc); void loop_timer_interval_set(Eo *obj, double in); diff --git a/src/tests/elementary/efl_ui_test_spin.c b/src/tests/elementary/efl_ui_test_spin.c new file mode 100644 index 0000000000..98c5432a9d --- /dev/null +++ b/src/tests/elementary/efl_ui_test_spin.c @@ -0,0 +1,100 @@ +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#endif + +#include +#include "efl_ui_suite.h" + +static Eo *win, *spin; + +static void +spin_setup() +{ + win = win_add(); + + spin = efl_add(EFL_UI_SPIN_CLASS, win); + efl_content_set(win, spin); +} + +static void +_set_flag(void *data, const Efl_Event *ev) +{ + Eina_Bool *b = data; + + ck_assert_int_eq(*b, EINA_FALSE); + + *b = EINA_TRUE; + ck_assert_ptr_eq(ev->info, NULL); +} + +EFL_START_TEST (spin_value_events) +{ + Eina_Bool changed = EINA_FALSE, min_reached = EINA_FALSE, max_reached = EINA_FALSE; + + efl_ui_range_limits_set(spin, -3.0, 3.0); + efl_ui_range_value_set(spin, 0.0); + efl_event_callback_add(spin, EFL_UI_SPIN_EVENT_CHANGED, _set_flag, &changed); + efl_event_callback_add(spin, EFL_UI_SPIN_EVENT_MIN_REACHED, _set_flag, &min_reached); + efl_event_callback_add(spin, EFL_UI_SPIN_EVENT_MAX_REACHED, _set_flag, &max_reached); + + efl_ui_range_value_set(spin, 1.0); + ck_assert_int_eq(changed, EINA_TRUE); + ck_assert_int_eq(min_reached, EINA_FALSE); + ck_assert_int_eq(max_reached, EINA_FALSE); + changed = EINA_FALSE; + min_reached = EINA_FALSE; + max_reached = EINA_FALSE; + + efl_ui_range_value_set(spin, 3.0); + ck_assert_int_eq(changed, EINA_TRUE); + ck_assert_int_eq(min_reached, EINA_FALSE); + ck_assert_int_eq(max_reached, EINA_TRUE); + changed = EINA_FALSE; + min_reached = EINA_FALSE; + max_reached = EINA_FALSE; + + efl_ui_range_value_set(spin, -3.0); + ck_assert_int_eq(changed, EINA_TRUE); + ck_assert_int_eq(min_reached, EINA_TRUE); + ck_assert_int_eq(max_reached, EINA_FALSE); +} +EFL_END_TEST + +EFL_START_TEST (spin_wheel_test) +{ + Eina_Bool changed = EINA_FALSE, min_reached = EINA_FALSE, max_reached = EINA_FALSE; + + efl_ui_range_limits_set(spin, -100.0, 100.0); + efl_ui_range_value_set(spin, 0.0); + efl_ui_range_step_set(spin, 10.0); + efl_event_callback_add(spin, EFL_UI_SPIN_EVENT_CHANGED, _set_flag, &changed); + efl_event_callback_add(spin, EFL_UI_SPIN_EVENT_MIN_REACHED, _set_flag, &min_reached); + efl_event_callback_add(spin, EFL_UI_SPIN_EVENT_MAX_REACHED, _set_flag, &max_reached); + + efl_gfx_entity_size_set(win, EINA_SIZE2D(60, 60)); + get_me_to_those_events(spin); + evas_event_feed_mouse_move(evas_object_evas_get(spin), 30, 30, 1234, NULL); + evas_event_feed_mouse_wheel(evas_object_evas_get(spin), -1, -1, 12345, NULL); + ck_assert(efl_ui_range_value_get(spin) == 10.0); + ck_assert_int_eq(changed, EINA_TRUE); + ck_assert_int_eq(min_reached, EINA_FALSE); + ck_assert_int_eq(max_reached, EINA_FALSE); + changed = EINA_FALSE; + min_reached = EINA_FALSE; + max_reached = EINA_FALSE; + + evas_event_feed_mouse_wheel(evas_object_evas_get(spin), -1, 1, 12345, NULL); + ck_assert(efl_ui_range_value_get(spin) == 0.0); + ck_assert_int_eq(changed, EINA_TRUE); + ck_assert_int_eq(min_reached, EINA_FALSE); + ck_assert_int_eq(max_reached, EINA_FALSE); +} +EFL_END_TEST + +void efl_ui_test_spin(TCase *tc) +{ + tcase_add_checked_fixture(tc, fail_on_errors_setup, fail_on_errors_teardown); + tcase_add_checked_fixture(tc, spin_setup, NULL); + tcase_add_test(tc, spin_value_events); + tcase_add_test(tc, spin_wheel_test); +} diff --git a/src/tests/elementary/meson.build b/src/tests/elementary/meson.build index 2bdd76845b..17458f36e0 100644 --- a/src/tests/elementary/meson.build +++ b/src/tests/elementary/meson.build @@ -143,6 +143,7 @@ efl_ui_suite_src = [ 'efl_ui_test_check.c', 'efl_ui_test_radio_group.c', 'efl_ui_test_progressbar.c', + 'efl_ui_test_spin.c', ] efl_ui_suite = executable('efl_ui_suite',