diff --git a/src/Makefile_Eo.am b/src/Makefile_Eo.am index 1e200f3e94..e9556329f8 100644 --- a/src/Makefile_Eo.am +++ b/src/Makefile_Eo.am @@ -84,6 +84,7 @@ tests/eo/suite/eo_suite.c \ tests/eo/suite/eo_suite.h \ tests/eo/suite/eo_test_class_errors.c \ tests/eo/suite/eo_test_general.c \ +tests/eo/suite/eo_test_value.c \ tests/eo/suite/eo_test_init.c tests_eo_eo_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \ -DTESTS_BUILD_DIR=\"$(top_builddir)/src/tests/eo\" \ diff --git a/src/tests/eo/suite/eo_suite.c b/src/tests/eo/suite/eo_suite.c index 5194b32ad8..9d040d32cc 100644 --- a/src/tests/eo/suite/eo_suite.c +++ b/src/tests/eo/suite/eo_suite.c @@ -20,6 +20,7 @@ static const Eo_Test_Case etc[] = { { "Eo init", eo_test_init }, { "Eo general", eo_test_general }, { "Eo class errors", eo_test_class_errors }, + { "Eo eina value", eo_test_value }, { NULL, NULL } }; diff --git a/src/tests/eo/suite/eo_suite.h b/src/tests/eo/suite/eo_suite.h index 9d79f42f8e..c26db968be 100644 --- a/src/tests/eo/suite/eo_suite.h +++ b/src/tests/eo/suite/eo_suite.h @@ -6,6 +6,6 @@ void eo_test_init(TCase *tc); void eo_test_general(TCase *tc); void eo_test_class_errors(TCase *tc); - +void eo_test_value(TCase *tc); #endif /* _EO_SUITE_H */ diff --git a/src/tests/eo/suite/eo_test_class_simple.c b/src/tests/eo/suite/eo_test_class_simple.c index e21c54f74f..f691bda293 100644 --- a/src/tests/eo/suite/eo_test_class_simple.c +++ b/src/tests/eo/suite/eo_test_class_simple.c @@ -39,10 +39,20 @@ _class_hi_print(const Eo_Class *klass, va_list *list) printf("Hi Print %s\n", eo_class_name_get(klass)); } +static void +_dbg_info_get(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list) +{ + Eo_Dbg_Info *root = (Eo_Dbg_Info *) va_arg(*list, Eo_Dbg_Info *); + eo_do_super(eo_obj, MY_CLASS, eo_dbg_info_get(root)); + Eo_Dbg_Info *group = EO_DBG_INFO_LIST_APPEND(root, "Test list"); + EO_DBG_INFO_APPEND(group, "Test", EINA_VALUE_TYPE_INT, 8); +} + static void _class_constructor(Eo_Class *klass) { const Eo_Op_Func_Description func_desc[] = { + EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_DBG_INFO_GET), _dbg_info_get), EO_OP_FUNC(SIMPLE_ID(SIMPLE_SUB_ID_A_SET), _a_set), EO_OP_FUNC(SIMPLE_ID(SIMPLE_SUB_ID_A_PRINT), _a_print), EO_OP_FUNC_CLASS(SIMPLE_ID(SIMPLE_SUB_ID_CLASS_HI_PRINT), _class_hi_print), diff --git a/src/tests/eo/suite/eo_test_value.c b/src/tests/eo/suite/eo_test_value.c new file mode 100644 index 0000000000..71f2a00d99 --- /dev/null +++ b/src/tests/eo/suite/eo_test_value.c @@ -0,0 +1,54 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include "Eo.h" +#include "eo_suite.h" +#include "eo_test_class_simple.h" + +START_TEST(eo_value) +{ + eo_init(); + char *str, *str2; + Eina_Value_List eo_list; + + Eina_Value val2, eo_val; + void *tmpp = NULL; + Eo_Dbg_Info *eo_dbg_info, *tmp_dbg_info; + Eo *obj = eo_add(SIMPLE_CLASS, NULL); + + eo_dbg_info = EO_DBG_INFO_LIST_APPEND(NULL, "Root"); + fail_if(!eo_do(obj, eo_dbg_info_get(eo_dbg_info))); + fail_if(!eo_dbg_info); + ck_assert_str_eq(eo_dbg_info->name, "Root"); + str = eina_value_to_string(&eo_dbg_info->value); + ck_assert_str_eq(str, "[[8]]"); + + eina_value_copy(&eo_dbg_info->value, &val2); + str2 = eina_value_to_string(&val2); + ck_assert_str_eq(str, str2); + + eina_value_get(&val2, &eo_val); + eina_value_pget(&eo_val, &tmpp); + fail_if(!tmpp); + eina_value_free(&val2); + + eina_value_setup(&val2, EINA_VALUE_TYPE_INT); + fail_if(eina_value_convert(&eo_dbg_info->value, &val2)); + eina_value_free(&val2); + + free(str); + free(str2); + eo_dbg_info_free(eo_dbg_info); + eo_unref(obj); + + eo_shutdown(); +} +END_TEST + +void eo_test_value(TCase *tc) +{ + tcase_add_test(tc, eo_value); +}