eo: add testcase to check emission of events

This commit is contained in:
Marcel Hollerbach 2016-11-29 20:18:44 +01:00
parent 299471991c
commit d81025a66c
4 changed files with 101 additions and 0 deletions

View File

@ -143,6 +143,7 @@ tests/eo/suite/eo_test_class_behaviour_errors.c \
tests/eo/suite/eo_test_call_errors.c \
tests/eo/suite/eo_test_general.c \
tests/eo/suite/eo_test_value.c \
tests/eo/suite/eo_test_event.c \
tests/eo/suite/eo_test_threaded_calls.c \
tests/eo/suite/eo_test_init.c

View File

@ -13,6 +13,7 @@ static const Efl_Test_Case etc[] = {
{ "Eo call errors", eo_test_call_errors },
{ "Eo eina value", eo_test_value },
{ "Eo threaded eo calls", eo_test_threaded_calls },
{ "Eo event calls", eo_test_event},
{ NULL, NULL }
};

View File

@ -10,5 +10,6 @@ void eo_test_class_behaviour_errors(TCase *tc);
void eo_test_call_errors(TCase *tc);
void eo_test_value(TCase *tc);
void eo_test_threaded_calls(TCase *tc);
void eo_test_event(TCase *tc);
#endif /* _EO_SUITE_H */

View File

@ -0,0 +1,98 @@
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <stdio.h>
#include <Eo.h>
#include "eo_suite.h"
#include "eo_test_class_simple.h"
//Class definition with one event
EWAPI const Efl_Class *efl_test_event_class_get(void);
EWAPI extern const Efl_Event_Description _EFL_TEST_EVENT_EVENT_TESTER;
#define EFL_TEST_EVENT_EVENT_TESTER (&(_EFL_TEST_EVENT_EVENT_TESTER))
typedef struct {
Eina_Bool event1;
Eina_Bool event2;
Eina_Bool event3;
} Test_Data;
typedef struct {
int not_empty;
} Efl_Test_Event_Data;
static void
_cb3(void *data, const Efl_Event *event)
{
Test_Data *d = data;
d->event3 = EINA_TRUE;
}
static void
_cb2(void *data, const Efl_Event *event)
{
Test_Data *d = data;
d->event2 = EINA_TRUE;
}
static void
_cb1(void *data, const Efl_Event *event)
{
Test_Data *d = data;
d->event1 = EINA_TRUE;
efl_event_callback_add(event->object, EFL_TEST_EVENT_EVENT_TESTER, _cb3, data);
}
START_TEST(eo_event)
{
Test_Data data;
efl_object_init();
Eo *obj;
memset(&data, 0, sizeof(Test_Data));
obj = efl_add(efl_test_event_class_get(), NULL);
efl_event_callback_priority_add(obj, EFL_TEST_EVENT_EVENT_TESTER, EFL_CALLBACK_PRIORITY_BEFORE, _cb2, &data);
efl_event_callback_priority_add(obj, EFL_TEST_EVENT_EVENT_TESTER, EFL_CALLBACK_PRIORITY_BEFORE, _cb1, &data);
efl_event_callback_call(obj, EFL_TEST_EVENT_EVENT_TESTER, NULL);
ck_assert_int_ne(data.event1, 0);
ck_assert_int_ne(data.event2, 0);
ck_assert_int_ne(data.event3, 0);
efl_object_shutdown();
}
END_TEST
void eo_test_event(TCase *tc)
{
tcase_add_test(tc, eo_event);
}
//class implementation
EWAPI const Efl_Event_Description _EFL_TEST_EVENT_EVENT_TESTER =
EFL_EVENT_DESCRIPTION("tester");
static const Efl_Class_Description _efl_test_event_class_desc = {
EO_VERSION,
"Efl_Test_Event",
EFL_CLASS_TYPE_REGULAR,
sizeof(Efl_Test_Event_Data),
NULL,
NULL,
NULL
};
EFL_DEFINE_CLASS(efl_test_event_class_get, &_efl_test_event_class_desc, EFL_OBJECT_CLASS, NULL);