bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=52adb65aeaccf54e700e8421daf59e10568df4dd

commit 52adb65aeaccf54e700e8421daf59e10568df4dd
Author: Marcel Hollerbach <m...@marcel-hollerbach.de>
Date:   Sun Jul 7 18:14:13 2019 +0200

    efl_ui_spin_button: add test suite
    
    this adds a testsuite to emulate and check the usage of buttons in the
    spin button widget. This also verifies that the correct events are
    emitted. (For now, the testcases from spin are also copied over, since
    they inherit from each other)
    
    Reviewed-by: Mike Blumenkrantz <michael.blumenkra...@gmail.com>
    Differential Revision: https://phab.enlightenment.org/D9232
---
 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_button.c | 210 +++++++++++++++++++++++++
 src/tests/elementary/meson.build               |   1 +
 5 files changed, 214 insertions(+)

diff --git a/src/lib/elementary/Efl_Ui.h b/src/lib/elementary/Efl_Ui.h
index 7b99cf3a23..09204faad1 100644
--- a/src/lib/elementary/Efl_Ui.h
+++ b/src/lib/elementary/Efl_Ui.h
@@ -248,6 +248,7 @@ typedef Eo Efl_Ui_Spotlight_Indicator;
 # include <efl_ui_clickable_util.eo.h>
 # include <efl_ui_format.eo.h>
 # include <efl_ui_spin.eo.h>
+# include <efl_ui_spin_button.eo.h>
 
 /**
  * Initialize Elementary
diff --git a/src/tests/elementary/efl_ui_suite.c 
b/src/tests/elementary/efl_ui_suite.c
index 07c47cbd3e..87e4e8c696 100644
--- a/src/tests/elementary/efl_ui_suite.c
+++ b/src/tests/elementary/efl_ui_suite.c
@@ -30,6 +30,7 @@ static const Efl_Test_Case etc[] = {
   { "efl_ui_radio_group", efl_ui_test_radio_group },
   { "efl_ui_win", efl_ui_test_win },
   { "efl_ui_spin", efl_ui_test_spin },
+  { "efl_ui_spin_button", efl_ui_test_spin_button },
   { NULL, NULL }
 };
 
diff --git a/src/tests/elementary/efl_ui_suite.h 
b/src/tests/elementary/efl_ui_suite.h
index 1366494c38..0e8be968ff 100644
--- a/src/tests/elementary/efl_ui_suite.h
+++ b/src/tests/elementary/efl_ui_suite.h
@@ -41,6 +41,7 @@ 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 efl_ui_test_spin_button(TCase *tc);
 
 void loop_timer_interval_set(Eo *obj, double in);
 
diff --git a/src/tests/elementary/efl_ui_test_spin_button.c 
b/src/tests/elementary/efl_ui_test_spin_button.c
new file mode 100644
index 0000000000..c495c881a8
--- /dev/null
+++ b/src/tests/elementary/efl_ui_test_spin_button.c
@@ -0,0 +1,210 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+#include <Efl_Ui.h>
+#include "efl_ui_suite.h"
+
+static Eo *win, *spin;
+
+static void
+spin_setup()
+{
+   win = win_add();
+
+   spin = efl_add(EFL_UI_SPIN_BUTTON_CLASS, win);
+   efl_content_set(win, spin);
+   efl_gfx_entity_geometry_set(win, EINA_RECT(0, 0, 200, 50));
+}
+
+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);
+}
+
+static void
+_set_flag_quit(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_loop_quit(efl_main_loop_get(), EINA_VALUE_EMPTY);
+}
+
+static void
+click_object(Efl_Part *obj)
+{
+   get_me_to_those_events(spin);
+
+   Evas *e = evas_object_evas_get(spin);
+   //this deletes the part
+   Eina_Rect r = efl_gfx_entity_geometry_get(obj);
+   evas_event_feed_mouse_move(e, r.x+r.w/2, r.y+r.h/2, 1234, NULL);
+   evas_event_feed_mouse_down(e, 1, 0, 1235, NULL);
+   evas_event_feed_mouse_up(e, 1, 0, 1236, NULL);
+   edje_object_message_signal_process(obj);
+}
+
+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);
+   changed = EINA_FALSE;
+   min_reached = EINA_FALSE;
+   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);
+   changed = EINA_FALSE;
+   min_reached = EINA_FALSE;
+   max_reached = EINA_FALSE;
+}
+EFL_END_TEST
+
+EFL_START_TEST (spin_value_inc)
+{
+   Eina_Bool changed = EINA_FALSE, min_reached = EINA_FALSE, max_reached = 
EINA_FALSE, delay_changed = EINA_FALSE;
+
+   efl_ui_range_limits_set(spin, 0.0, 3.0);
+   efl_ui_range_value_set(spin, 1.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_event_callback_add(spin, EFL_UI_SPIN_BUTTON_EVENT_DELAY_CHANGED, 
_set_flag_quit, &delay_changed);
+
+   click_object(efl_content_get(efl_part(spin, "efl.inc_button")));
+
+   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_loop_begin(efl_main_loop_get());
+   ck_assert_int_eq(delay_changed, EINA_TRUE);
+}
+EFL_END_TEST
+
+EFL_START_TEST (spin_value_inc_max)
+{
+   Eina_Bool changed = EINA_FALSE, min_reached = EINA_FALSE, max_reached = 
EINA_FALSE, delay_changed = EINA_FALSE;
+
+   efl_ui_range_limits_set(spin, 0.0, 3.0);
+   efl_ui_range_value_set(spin, 2.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_event_callback_add(spin, EFL_UI_SPIN_BUTTON_EVENT_DELAY_CHANGED, 
_set_flag_quit, &delay_changed);
+
+   click_object(efl_content_get(efl_part(spin, "efl.inc_button")));
+
+   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_loop_begin(efl_main_loop_get());
+   ck_assert_int_eq(delay_changed, EINA_TRUE);
+}
+EFL_END_TEST
+
+EFL_START_TEST (spin_value_dec_min)
+{
+   Eina_Bool changed = EINA_FALSE, min_reached = EINA_FALSE, max_reached = 
EINA_FALSE, delay_changed = EINA_FALSE;
+
+   efl_ui_range_limits_set(spin, 0.0, 3.0);
+   efl_ui_range_value_set(spin, 1.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_event_callback_add(spin, EFL_UI_SPIN_BUTTON_EVENT_DELAY_CHANGED, 
_set_flag_quit, &delay_changed);
+
+   click_object(efl_content_get(efl_part(spin, "efl.dec_button")));
+
+   ck_assert_int_eq(changed, EINA_TRUE);
+   ck_assert_int_eq(min_reached, EINA_TRUE);
+   ck_assert_int_eq(max_reached, EINA_FALSE);
+   changed = EINA_FALSE;
+   min_reached = EINA_FALSE;
+   max_reached = EINA_FALSE;
+
+   efl_loop_begin(efl_main_loop_get());
+   ck_assert_int_eq(delay_changed, EINA_TRUE);
+}
+EFL_END_TEST
+
+void efl_ui_test_spin_button(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);
+   tcase_add_test(tc, spin_value_inc);
+   tcase_add_test(tc, spin_value_inc_max);
+   tcase_add_test(tc, spin_value_dec_min);
+}
diff --git a/src/tests/elementary/meson.build b/src/tests/elementary/meson.build
index 17458f36e0..4dc1bd1305 100644
--- a/src/tests/elementary/meson.build
+++ b/src/tests/elementary/meson.build
@@ -144,6 +144,7 @@ efl_ui_suite_src = [
   'efl_ui_test_radio_group.c',
   'efl_ui_test_progressbar.c',
   'efl_ui_test_spin.c',
+  'efl_ui_test_spin_button.c',
 ]
 
 efl_ui_suite = executable('efl_ui_suite',

-- 


Reply via email to