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.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9232
This commit is contained in:
Marcel Hollerbach 2019-07-07 18:14:13 +02:00
parent d5df7e459d
commit 52adb65aea
5 changed files with 214 additions and 0 deletions

View File

@ -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

View File

@ -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 }
};

View File

@ -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);

View File

@ -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);
}

View File

@ -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',