tests/elm: replace bespoke win/loop fast-forwarding with helper function

now we can consistently do event emissions inline in tests using much
simpler code

Reviewed-by: Chris Michael <cp.michael@samsung.com>
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9188
This commit is contained in:
Mike Blumenkrantz 2019-06-26 13:01:56 -04:00 committed by Marcel Hollerbach
parent 39833fe168
commit 4c15ef65dd
3 changed files with 42 additions and 84 deletions

View File

@ -95,13 +95,6 @@ EFL_START_TEST(efl_ui_win_test_object_focus)
EFL_END_TEST
static void
prepare_window_norendered(void *data EINA_UNUSED, Evas *e, void *event_info EINA_UNUSED)
{
efl_task_end(efl_app_main_get());
evas_event_callback_del(e, EVAS_CALLBACK_RENDER_POST, prepare_window_norendered);
}
static void
create_environment(Eo **win, Eo **rect)
{
@ -110,8 +103,7 @@ create_environment(Eo **win, Eo **rect)
efl_canvas_object_seat_focus_add(*rect, NULL);
efl_gfx_entity_geometry_set(*win, EINA_RECT(0, 0, 200, 200));
efl_gfx_entity_geometry_set(*rect, EINA_RECT(0, 0, 200, 200));
evas_event_callback_add(evas_object_evas_get(*win), EVAS_CALLBACK_RENDER_POST, prepare_window_norendered, NULL);
efl_loop_begin(efl_main_loop_get());
get_me_to_those_events(evas_object_evas_get(*win));
}
EFL_START_TEST(efl_ui_win_test_efl_input_interface_focus)

View File

@ -400,29 +400,14 @@ end_test()
return EINA_FALSE;
}
static void
mag_job(void *e)
{
evas_event_feed_mouse_out(e, 0, NULL);
evas_event_feed_mouse_in(e, 0, NULL);
evas_event_feed_mouse_move(e, 200, 100, 0, NULL);
evas_event_feed_mouse_down(e, 1, 0, 0, NULL);
real_timer_add(elm_config_longpress_timeout_get() + 0.1, end_test, NULL);
}
static void
norendered(void *data EINA_UNUSED, Evas *e, void *event_info EINA_UNUSED)
{
ecore_job_add(mag_job, e);
evas_event_callback_del(e, EVAS_CALLBACK_RENDER_POST, norendered);
}
EFL_START_TEST(elm_entry_magnifier)
{
Evas_Object *win, *entry;
Evas *e;
char buf[4096];
win = win_add_focused(NULL, "entry", ELM_WIN_BASIC);
e = evas_object_evas_get(win);
evas_object_size_hint_weight_set(win, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
entry = elm_entry_add(win);
@ -466,9 +451,13 @@ EFL_START_TEST(elm_entry_magnifier)
evas_object_show(win);
evas_object_resize(entry, 600, 400);
evas_object_resize(win, 600, 400);
evas_smart_objects_calculate(evas_object_evas_get(win));
evas_event_callback_add(evas_object_evas_get(win), EVAS_CALLBACK_RENDER_POST, norendered, NULL);
ecore_main_loop_begin();
get_me_to_those_events(e);
evas_event_feed_mouse_out(e, 0, NULL);
evas_event_feed_mouse_in(e, 0, NULL);
evas_event_feed_mouse_move(e, 200, 100, 0, NULL);
evas_event_feed_mouse_down(e, 1, 0, 0, NULL);
real_timer_add(elm_config_longpress_timeout_get() + 0.1, end_test, NULL);
}
EFL_END_TEST

View File

@ -41,35 +41,13 @@ EFL_START_TEST(elm_atspi_role_get)
}
EFL_END_TEST
static Evas_Object *fslider, *scroller;
static void
mag_job(void *e)
{
int x, y, w, h;
ck_assert_int_eq(elm_object_scroll_hold_get(scroller), 0);
evas_event_feed_mouse_in(e, 0, NULL);
evas_object_geometry_get(fslider, &x, &y, &w, &h);
evas_event_feed_mouse_move(e, x+w/2, y+h/2, 0, NULL);
//ensure that the scroller is on hold
ck_assert_int_eq(elm_object_scroll_hold_get(scroller), 1);
evas_event_feed_mouse_move(e, x+w+w/2, y+h+h/2, 0, NULL);
ck_assert_int_eq(elm_object_scroll_hold_get(scroller), 0);
ecore_main_loop_quit();
}
static void
norendered(void *data EINA_UNUSED, Evas *e, void *event_info EINA_UNUSED)
{
ecore_job_add(mag_job, e);
evas_event_callback_del(e, EVAS_CALLBACK_RENDER_POST, norendered);
}
EFL_START_TEST(elm_slider_in_scroller)
{
Evas_Object *win, *slider, *box;
Evas_Object *win, *slider, *box, *scroller, *fslider;
Evas *e;
win = win_add(NULL, "slider", ELM_WIN_BASIC);
e = evas_object_evas_get(win);
evas_object_size_hint_weight_set(win, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
scroller = elm_scroller_add(win);
@ -96,11 +74,18 @@ EFL_START_TEST(elm_slider_in_scroller)
evas_object_resize(win, 100, 100);
evas_object_show(win);
evas_smart_objects_calculate(evas_object_evas_get(win));
evas_event_callback_add(evas_object_evas_get(win), EVAS_CALLBACK_RENDER_POST, norendered, NULL);
get_me_to_those_events(scroller);
elm_run();
int x, y, w, h;
ck_assert_int_eq(elm_object_scroll_hold_get(scroller), 0);
evas_event_feed_mouse_in(e, 0, NULL);
evas_object_geometry_get(fslider, &x, &y, &w, &h);
evas_event_feed_mouse_move(e, x+w/2, y+h/2, 0, NULL);
//ensure that the scroller is on hold
ck_assert_int_eq(elm_object_scroll_hold_get(scroller), 1);
evas_event_feed_mouse_move(e, x+w+w/2, y+h+h/2, 0, NULL);
ck_assert_int_eq(elm_object_scroll_hold_get(scroller), 0);
}
EFL_END_TEST
@ -110,38 +95,19 @@ static void
slider_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
{
event_counter++;
if (event_counter == 2) ecore_main_loop_quit();
else evas_object_smart_callback_del(obj, "changed", slider_changed);
}
static void
slider_change(void *data)
{
int x, y, w, h;
int sx, sy, sw, sh;
Evas *e = evas_object_evas_get(data);
evas_object_geometry_get(elm_object_part_content_get(data, "elm.swallow.bar"), &x, &y, &w, &h);
evas_object_geometry_get(data, &sx, &sy, &sw, &sh);
evas_event_feed_mouse_in(e, 0, NULL);
evas_event_feed_mouse_move(e, x + (w / 2), y + (h / 2), 0, NULL);
evas_event_feed_mouse_down(e, 1, 0, 0, NULL);
evas_event_feed_mouse_move(e, sx + (sw / 2), sy + (sh / 2), 0, NULL);
evas_event_feed_mouse_up(e, 1, 0, 0, NULL);
}
static void
events_norendered(void *data, Evas *e, void *event_info EINA_UNUSED)
{
evas_event_callback_del(e, EVAS_CALLBACK_RENDER_POST, events_norendered);
ecore_job_add(slider_change, data);
if (event_counter == 1)
evas_object_smart_callback_del(obj, "changed", slider_changed);
else if (event_counter == 2)
ecore_main_loop_quit();
}
EFL_START_TEST(elm_slider_events)
{
Evas_Object *win, *slider;
Evas *e;
win = win_add(NULL, "slider", ELM_WIN_BASIC);
e = evas_object_evas_get(win);
slider = elm_slider_add(win);
evas_object_smart_callback_add(slider, "changed", slider_changed, NULL);
@ -151,8 +117,19 @@ EFL_START_TEST(elm_slider_events)
evas_object_resize(slider, 400, 100);
evas_object_resize(win, 400, 100);
edje_object_message_signal_process(elm_layout_edje_get(slider));
evas_smart_objects_calculate(evas_object_evas_get(win));
evas_event_callback_add(evas_object_evas_get(win), EVAS_CALLBACK_RENDER_POST, events_norendered, slider);
get_me_to_those_events(slider);
int x, y, w, h;
int sx, sy, sw, sh;
evas_object_geometry_get(elm_object_part_content_get(slider, "elm.swallow.bar"), &x, &y, &w, &h);
evas_object_geometry_get(slider, &sx, &sy, &sw, &sh);
evas_event_feed_mouse_in(e, 0, NULL);
evas_event_feed_mouse_move(e, x + (w / 2), y + (h / 2), 0, NULL);
evas_event_feed_mouse_down(e, 1, 0, 0, NULL);
evas_event_feed_mouse_move(e, sx + (sw / 2), sy + (sh / 2), 0, NULL);
evas_event_feed_mouse_up(e, 1, 0, 0, NULL);
ecore_main_loop_begin();
ck_assert_int_eq(event_counter, 2);
}