tests: add explicit test for concentric loop usage

having multiple loops which interact is a valid use case that should be
tested to ensure functionality

Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Differential Revision: https://phab.enlightenment.org/D7868
This commit is contained in:
Mike Blumenkrantz 2019-02-01 15:11:04 -05:00 committed by Derek Foreman
parent 08b7974fa1
commit 21bdcf4265
1 changed files with 45 additions and 0 deletions

View File

@ -39,7 +39,52 @@ EFL_START_TEST(efl_app_test_efl_loop_register)
}
EFL_END_TEST
static void
efl_app_test_efl_loop_concentric_fail(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
{
ck_abort_msg("test timeout");
}
static void
loop_idle(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
{
static int num = 0;
if (num++ == 5) efl_loop_quit(efl_main_loop_get(), eina_value_int_init(0));
}
static void
loop_timer_tick(void *data, const Efl_Event *ev EINA_UNUSED)
{
efl_loop_iterate(data);
}
EFL_START_TEST(efl_app_test_efl_loop_concentric)
{
Eo *loop, *loop2, *timer, *timer2;
int exitcode;
loop = efl_main_loop_get();
efl_event_callback_add(loop, EFL_LOOP_EVENT_IDLE, loop_idle, NULL);
loop2 = efl_add(EFL_LOOP_CLASS, loop);
timer = efl_add(EFL_LOOP_TIMER_CLASS, loop2,
efl_loop_timer_interval_set(efl_added, 0.01),
efl_event_callback_add(efl_added, EFL_LOOP_TIMER_EVENT_TICK, loop_timer_tick, loop)
);
timer2 = efl_add(EFL_LOOP_TIMER_CLASS, loop,
efl_loop_timer_interval_set(efl_added, 0.5),
efl_event_callback_add(efl_added, EFL_LOOP_TIMER_EVENT_TICK, efl_app_test_efl_loop_concentric_fail, NULL)
);
exitcode = efl_loop_exit_code_process(efl_loop_begin(loop));
ck_assert_int_eq(exitcode, 0);
efl_del(timer2);
efl_del(timer);
efl_del(loop2);
}
EFL_END_TEST
void efl_app_test_efl_loop(TCase *tc)
{
tcase_add_test(tc, efl_app_test_efl_loop_register);
tcase_add_test(tc, efl_app_test_efl_loop_concentric);
}