eo domain tests - make a start on them with some basic ones

this adds tests for some of the basic domain tests. doing the
inter-thread ones is going to be much more.... fun.
This commit is contained in:
Carsten Haitzler 2016-09-08 18:39:38 +09:00
parent be29f3f4ec
commit 150cc62a0d
4 changed files with 177 additions and 0 deletions

View File

@ -119,6 +119,8 @@ tests/eo/suite/eo_test_class_simple.c \
tests/eo/suite/eo_test_class_simple.h \
tests/eo/suite/eo_test_class_singleton.c \
tests/eo/suite/eo_test_class_singleton.h \
tests/eo/suite/eo_test_domain.c \
tests/eo/suite/eo_test_domain.h \
tests/eo/suite/eo_suite.c \
tests/eo/suite/eo_suite.h \
tests/eo/suite/eo_error_msgs.h \

View File

@ -0,0 +1,89 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "Eina.h"
#include "Eo.h"
#include "eo_test_domain.h"
#define MY_CLASS DOMAIN_CLASS
EAPI const Efl_Event_Description _EV_DOMAIN_A_CHANGED =
EFL_EVENT_DESCRIPTION("domain,a,changed");
static void
_a_set(Eo *obj EINA_UNUSED, void *class_data, int a)
{
Domain_Public_Data *pd = class_data;
printf("Set Begin\n");
pd->a = a;
sleep(1);
printf("Set End\n");
printf("Call Events\n");
efl_event_callback_legacy_call(obj, EV_DOMAIN_A_CHANGED, &pd->a);
printf("Call Events End\n");
}
static int
_a_get(Eo *obj EINA_UNUSED, void *class_data)
{
Domain_Public_Data *pd = class_data;
printf("Get Begin\n");
return pd->a;
}
//return obj = efl_add(DOMAIN_CLASS, NULL);
EFL_VOID_FUNC_BODYV(domain_recursive, EFL_FUNC_CALL(n), int n);
static void
_recursive(Eo *obj, void *class_data EINA_UNUSED, int n)
{
static int count = 0;
if (count < n)
{
count++;
domain_recursive(obj, n);
}
else
count = 0;
}
static void
_dbg_info_get(Eo *eo_obj, void *_pd EINA_UNUSED, Efl_Dbg_Info *root)
{
efl_dbg_info_get(efl_super(eo_obj, MY_CLASS), root);
Efl_Dbg_Info *group = EFL_DBG_INFO_LIST_APPEND(root, "Test list");
EFL_DBG_INFO_APPEND(group, "Test", EINA_VALUE_TYPE_INT, 8);
}
EFL_VOID_FUNC_BODYV(domain_a_set, EFL_FUNC_CALL(a), int a);
EFL_FUNC_BODY(domain_a_get, int, 0);
EFL_FUNC_BODY(domain_a_print, Eina_Bool, EINA_FALSE);
EFL_FUNC_BODY_CONST(domain_class_hi_print, Eina_Bool, EINA_FALSE);
EFL_VOID_FUNC_BODY(domain_pure_virtual);
EFL_VOID_FUNC_BODY(domain_no_implementation);
static Eina_Bool
_class_initializer(Efl_Class *klass)
{
EFL_OPS_DEFINE(ops,
EFL_OBJECT_OP_FUNC(domain_a_set, _a_set),
EFL_OBJECT_OP_FUNC(domain_a_get, _a_get),
EFL_OBJECT_OP_FUNC(domain_recursive, _recursive)
);
return efl_class_functions_set(klass, &ops);
}
static const Efl_Class_Description class_desc = {
EO_VERSION,
"Domain",
EFL_CLASS_TYPE_REGULAR,
sizeof(Domain_Public_Data),
_class_initializer,
NULL,
NULL
};
EFL_DEFINE_CLASS(domain_class_get, &class_desc, EO_CLASS, NULL)

View File

@ -0,0 +1,19 @@
#ifndef DOMAIN_H
#define DOMAIN_H
typedef struct
{
int a;
} Domain_Public_Data;
EAPI void domain_a_set(Eo *obj, int a);
EAPI int domain_a_get(Eo *obj);
EAPI void domain_recursive(Eo *obj, int n);
extern const Efl_Event_Description _EV_DOMAIN_A_CHANGED;
#define EV_DOMAIN_A_CHANGED (&(_EV_DOMAIN_A_CHANGED))
#define DOMAIN_CLASS domain_class_get()
const Efl_Class *domain_class_get(void);
#endif

View File

@ -9,6 +9,7 @@
#include "eo_suite.h"
#include "eo_test_class_simple.h"
#include "eo_test_class_singleton.h"
#include "eo_test_domain.h"
/* Loading this internal header for testing purposes. */
#include "eo_ptr_indirection.h"
@ -1354,6 +1355,71 @@ START_TEST(eo_rec_interface)
}
END_TEST
START_TEST(eo_domain)
{
Eo *obj, *objs;
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
efl_object_init();
fail_if(efl_domain_get() != EFL_ID_DOMAIN_MAIN);
fail_if(efl_domain_switch(EFL_ID_DOMAIN_THREAD) != EINA_TRUE);
fail_if(efl_domain_get() != EFL_ID_DOMAIN_THREAD);
fail_if(efl_domain_switch(EFL_ID_DOMAIN_MAIN) != EINA_TRUE);
fail_if(efl_domain_get() != EFL_ID_DOMAIN_MAIN);
fail_if(efl_domain_current_get() != EFL_ID_DOMAIN_MAIN);
fail_if(efl_domain_current_set(EFL_ID_DOMAIN_SHARED) != EINA_TRUE);
fail_if(efl_domain_current_get() != EFL_ID_DOMAIN_SHARED);
fail_if(efl_domain_current_set(EFL_ID_DOMAIN_MAIN) != EINA_TRUE);
fail_if(efl_domain_current_get() != EFL_ID_DOMAIN_MAIN);
fail_if(efl_domain_current_push(EFL_ID_DOMAIN_SHARED) != EINA_TRUE);
fail_if(efl_domain_current_get() != EFL_ID_DOMAIN_SHARED);
fail_if(efl_domain_current_push(EFL_ID_DOMAIN_THREAD) != EINA_TRUE);
fail_if(efl_domain_current_get() != EFL_ID_DOMAIN_THREAD);
efl_domain_current_pop();
fail_if(efl_domain_current_get() != EFL_ID_DOMAIN_SHARED);
efl_domain_current_pop();
fail_if(efl_domain_current_get() != EFL_ID_DOMAIN_MAIN);
objs = efl_add(DOMAIN_CLASS, NULL);
efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
obj = efl_add(DOMAIN_CLASS, NULL);
efl_domain_current_pop();
fail_if(efl_compatible(objs, obj) == EINA_TRUE);
domain_a_set(obj, 1234);
fail_if(domain_a_get(obj) != 1234);
domain_a_set(objs, 1234);
fail_if(domain_a_get(objs) != 1234);
efl_del(obj);
efl_del(objs);
efl_object_shutdown();
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
}
END_TEST
void eo_test_general(TCase *tc)
{
tcase_add_test(tc, eo_simple);
@ -1376,4 +1442,5 @@ void eo_test_general(TCase *tc)
tcase_add_test(tc, efl_name);
tcase_add_test(tc, eo_comment);
tcase_add_test(tc, eo_rec_interface);
tcase_add_test(tc, eo_domain);
}