eo: add a tcase for testing forwarders

this just adds the newly introduced semantics from cedric.
This commit is contained in:
Marcel Hollerbach 2019-12-11 10:23:33 +01:00
parent 330b72bc6a
commit 5cb8e4a3e7
1 changed files with 35 additions and 0 deletions

View File

@ -185,12 +185,47 @@ EFL_START_TEST(eo_event_generation_bug)
}
EFL_END_TEST
static void
_inc_when_called(void *data, const Efl_Event *ev EINA_UNUSED)
{
int *called = (int*)data;
*called += 1;
}
EFL_START_TEST(eo_event_fowarder_test)
{
Eo *obj1, *obj2;
int called = 0;
obj1 = efl_add_ref(efl_test_event_class_get(), NULL);
obj2 = efl_add_ref(efl_test_event_class_get(), NULL);
efl_event_callback_add(obj2, EFL_TEST_EVENT_EVENT_TESTER, _inc_when_called, &called);
efl_event_callback_forwarder_priority_add(obj1, EFL_TEST_EVENT_EVENT_TESTER, EFL_CALLBACK_PRIORITY_BEFORE, obj2);
efl_event_callback_call(obj1, EFL_TEST_EVENT_EVENT_TESTER, NULL);
ck_assert_int_eq(called, 1);
called = 0;
//call it a second time with another forwarder
efl_event_callback_forwarder_priority_add(obj1, EFL_TEST_EVENT_EVENT_TESTER, EFL_CALLBACK_PRIORITY_BEFORE, obj2);
efl_event_callback_call(obj1, EFL_TEST_EVENT_EVENT_TESTER, NULL);
ck_assert_int_eq(called, 1); //we still should only emit it once
called = 0;
//delete it, nothing should happen now
efl_event_callback_forwarder_del(obj1, EFL_TEST_EVENT_EVENT_TESTER, obj2);
efl_event_callback_call(obj1, EFL_TEST_EVENT_EVENT_TESTER, NULL);
ck_assert_int_eq(called, 0);
}
EFL_END_TEST
void eo_test_event(TCase *tc)
{
tcase_add_test(tc, eo_event);
tcase_add_test(tc, eo_event_call_in_call);
tcase_add_test(tc, eo_event_generation_bug);
tcase_add_test(tc, eo_event_fowarder_test);
}