forked from enlightenment/efl
Eo tests: Beginning of test output cleanup.
SVN revision: 83635
This commit is contained in:
parent
e5675179b4
commit
f9cf5bb374
|
@ -8,9 +8,71 @@
|
|||
#include "eo_suite.h"
|
||||
#include "eo_test_class_simple.h"
|
||||
|
||||
struct log_ctx {
|
||||
const char *msg;
|
||||
const char *fnc;
|
||||
Eina_Bool did;
|
||||
int expected_level;
|
||||
};
|
||||
|
||||
static struct log_ctx ctx;
|
||||
|
||||
static void
|
||||
_eo_test_print_cb(const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line, const char *fmt, void *data, va_list args EINA_UNUSED)
|
||||
{
|
||||
struct log_ctx *myctx = data;
|
||||
|
||||
ck_assert_int_eq(level, myctx->expected_level);
|
||||
if (myctx->msg)
|
||||
ck_assert_str_eq(myctx->msg, fmt);
|
||||
ck_assert_str_eq(myctx->fnc, fnc);
|
||||
myctx->did = EINA_TRUE;
|
||||
|
||||
#ifdef SHOW_LOG
|
||||
eina_log_print_cb_stderr(d, level, file, fnc, line, fmt, NULL, args);
|
||||
#else
|
||||
(void)d;
|
||||
(void)file;
|
||||
(void)line;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
_eo_test_safety_print_cb(const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line, const char *fmt, void *data, va_list args EINA_UNUSED)
|
||||
{
|
||||
struct log_ctx *myctx = data;
|
||||
va_list cp_args;
|
||||
const char *str;
|
||||
|
||||
va_copy(cp_args, args);
|
||||
str = va_arg(cp_args, const char *);
|
||||
va_end(cp_args);
|
||||
|
||||
ck_assert_int_eq(level, myctx->expected_level);
|
||||
ck_assert_str_eq(fmt, "%s");
|
||||
ck_assert_str_eq(myctx->msg, str);
|
||||
ck_assert_str_eq(myctx->fnc, fnc);
|
||||
myctx->did = EINA_TRUE;
|
||||
|
||||
#ifdef SHOW_LOG
|
||||
eina_log_print_cb_stderr(d, level, file, fnc, line, fmt, NULL, args);
|
||||
#else
|
||||
(void)d;
|
||||
(void)file;
|
||||
(void)line;
|
||||
#endif
|
||||
}
|
||||
|
||||
#define TEST_EO_ERROR(fn, _msg) \
|
||||
ctx.msg = _msg; \
|
||||
ctx.fnc = fn; \
|
||||
ctx.did = EINA_FALSE; \
|
||||
ctx.expected_level = EINA_LOG_LEVEL_ERR
|
||||
|
||||
START_TEST(eo_incomplete_desc)
|
||||
{
|
||||
eo_init();
|
||||
eina_log_print_cb_set(_eo_test_print_cb, &ctx);
|
||||
|
||||
const Eo_Class *klass;
|
||||
static Eo_Op TMP_BASE_ID = EO_NOOP;
|
||||
|
@ -45,49 +107,66 @@ START_TEST(eo_incomplete_desc)
|
|||
NULL
|
||||
};
|
||||
|
||||
TEST_EO_ERROR("_eo_class_check_op_descs", "Class '%s' has a non-zero ops count, but base_id is NULL.");
|
||||
klass = eo_class_new(&class_desc, NULL, NULL);
|
||||
fail_if(klass);
|
||||
fail_unless(ctx.did);
|
||||
|
||||
class_desc.ops.base_op_id = &TMP_BASE_ID;
|
||||
class_desc.ops.descs = NULL;
|
||||
|
||||
TEST_EO_ERROR("_eo_class_check_op_descs", "Class '%s' has a non-zero ops count, but there are no descs.");
|
||||
klass = eo_class_new(&class_desc, NULL, NULL);
|
||||
fail_if(klass);
|
||||
fail_unless(ctx.did);
|
||||
|
||||
class_desc.ops.descs = op_desc;
|
||||
class_desc.ops.count = TEST_SUB_ID_LAST + 1;
|
||||
|
||||
TEST_EO_ERROR("_eo_class_check_op_descs", "Found too few Ops description for class '%s'. Expected %lx descriptions, but found %lx.");
|
||||
klass = eo_class_new(&class_desc, NULL, NULL);
|
||||
fail_if(klass);
|
||||
fail_unless(ctx.did);
|
||||
|
||||
class_desc.ops.count = 0;
|
||||
|
||||
TEST_EO_ERROR("_eo_class_check_op_descs", "Found extra Ops description for class '%s'. Expected %lu descriptions, but found more.");
|
||||
klass = eo_class_new(&class_desc, NULL, NULL);
|
||||
fail_if(klass);
|
||||
fail_unless(ctx.did);
|
||||
|
||||
class_desc.ops.count = TEST_SUB_ID_LAST;
|
||||
class_desc.ops.descs = op_desc_wrong;
|
||||
|
||||
TEST_EO_ERROR("_eo_class_check_op_descs", "Wrong order in Ops description for class '%s'. Expected %lx and got %lx");
|
||||
klass = eo_class_new(&class_desc, NULL, NULL);
|
||||
fail_if(klass);
|
||||
fail_unless(ctx.did);
|
||||
|
||||
class_desc.ops.descs = op_desc;
|
||||
class_desc.name = NULL;
|
||||
|
||||
eina_log_print_cb_set(_eo_test_safety_print_cb, &ctx);
|
||||
|
||||
TEST_EO_ERROR("eo_class_new", "safety check failed: desc->name == NULL");
|
||||
klass = eo_class_new(&class_desc, NULL, NULL);
|
||||
fail_if(klass);
|
||||
fail_unless(ctx.did);
|
||||
|
||||
class_desc.name = "Simple";
|
||||
|
||||
|
||||
TEST_EO_ERROR("eo_class_new", "safety check failed: desc == NULL");
|
||||
klass = eo_class_new(NULL, NULL, NULL);
|
||||
fail_if(klass);
|
||||
fail_unless(ctx.did);
|
||||
|
||||
/* Should create a class. */
|
||||
klass = eo_class_new(&class_desc, EO_BASE_CLASS, NULL);
|
||||
fail_if(!klass);
|
||||
|
||||
(void) klass;
|
||||
eina_log_print_cb_set(eina_log_print_cb_stderr, NULL);
|
||||
|
||||
eo_shutdown();
|
||||
}
|
||||
|
@ -96,6 +175,7 @@ END_TEST
|
|||
START_TEST(eo_inherit_errors)
|
||||
{
|
||||
eo_init();
|
||||
eina_log_print_cb_set(_eo_test_print_cb, &ctx);
|
||||
|
||||
const Eo_Class *klass;
|
||||
const Eo_Class *klass_mixin;
|
||||
|
@ -140,15 +220,20 @@ START_TEST(eo_inherit_errors)
|
|||
klass_simple = eo_class_new(&class_desc_simple, EO_BASE_CLASS, NULL);
|
||||
fail_if(!klass_simple);
|
||||
|
||||
TEST_EO_ERROR("eo_class_new", "Non-regular classes ('%s') aren't allowed to inherit from regular classes ('%s').");
|
||||
klass = eo_class_new(&class_desc, klass_simple, NULL);
|
||||
fail_if(klass);
|
||||
fail_unless(ctx.did);
|
||||
|
||||
class_desc.type = EO_CLASS_TYPE_REGULAR;
|
||||
|
||||
TEST_EO_ERROR("eo_class_new", "Regular classes ('%s') aren't allowed to inherit from non-regular classes ('%s').");
|
||||
klass = eo_class_new(&class_desc, klass_mixin, NULL);
|
||||
fail_if(klass);
|
||||
fail_unless(ctx.did);
|
||||
|
||||
(void) klass;
|
||||
eina_log_print_cb_set(eina_log_print_cb_stderr, NULL);
|
||||
|
||||
eo_shutdown();
|
||||
}
|
||||
|
@ -157,6 +242,7 @@ END_TEST
|
|||
START_TEST(eo_inconsistent_mro)
|
||||
{
|
||||
eo_init();
|
||||
eina_log_print_cb_set(_eo_test_print_cb, &ctx);
|
||||
|
||||
const Eo_Class *klass;
|
||||
const Eo_Class *klass_mixin;
|
||||
|
@ -216,8 +302,10 @@ START_TEST(eo_inconsistent_mro)
|
|||
klass_mixin3 = eo_class_new(&class_desc_mixin3, klass_mixin, NULL);
|
||||
fail_if(!klass_mixin3);
|
||||
|
||||
TEST_EO_ERROR("_eo_class_mro_add", "Cannot create a consistent method resolution order for class '%s' because of '%s'.");
|
||||
klass = eo_class_new(&class_desc_simple, EO_BASE_CLASS, klass_mixin, klass_mixin2, NULL);
|
||||
fail_if(klass);
|
||||
fail_unless(ctx.did);
|
||||
|
||||
klass = eo_class_new(&class_desc_simple, EO_BASE_CLASS, klass_mixin2, klass_mixin, NULL);
|
||||
fail_if(!klass);
|
||||
|
@ -225,6 +313,8 @@ START_TEST(eo_inconsistent_mro)
|
|||
klass = eo_class_new(&class_desc_simple, EO_BASE_CLASS, klass_mixin2, klass_mixin3, NULL);
|
||||
fail_if(!klass);
|
||||
|
||||
eina_log_print_cb_set(eina_log_print_cb_stderr, NULL);
|
||||
|
||||
eo_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
|
@ -234,6 +324,7 @@ static void _stub_class_constructor(Eo_Class *klass EINA_UNUSED) {}
|
|||
START_TEST(eo_bad_interface)
|
||||
{
|
||||
eo_init();
|
||||
eina_log_print_cb_set(_eo_test_safety_print_cb, &ctx);
|
||||
|
||||
const Eo_Class *klass;
|
||||
|
||||
|
@ -248,8 +339,10 @@ START_TEST(eo_bad_interface)
|
|||
NULL
|
||||
};
|
||||
|
||||
TEST_EO_ERROR("eo_class_new", "safety check failed: !desc->data_size is false");
|
||||
klass = eo_class_new(&class_desc, NULL, NULL);
|
||||
fail_if(klass);
|
||||
fail_unless(ctx.did);
|
||||
|
||||
class_desc.data_size = 0;
|
||||
class_desc.class_constructor = _stub_class_constructor;
|
||||
|
@ -268,6 +361,8 @@ START_TEST(eo_bad_interface)
|
|||
klass = eo_class_new(&class_desc, NULL, NULL);
|
||||
fail_if(!klass);
|
||||
|
||||
eina_log_print_cb_set(eina_log_print_cb_stderr, NULL);
|
||||
|
||||
eo_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
|
@ -313,6 +408,7 @@ _const_ops_class_constructor(Eo_Class *klass)
|
|||
START_TEST(eo_op_types)
|
||||
{
|
||||
eo_init();
|
||||
eina_log_print_cb_set(_eo_test_print_cb, &ctx);
|
||||
|
||||
const Eo_Class *klass;
|
||||
|
||||
|
@ -327,15 +423,20 @@ START_TEST(eo_op_types)
|
|||
NULL
|
||||
};
|
||||
|
||||
TEST_EO_ERROR("eo_class_funcs_set", "Set function's op type (%x) is different than the one in the op description (%d) for op '%s:%s'. Func index: %lu");
|
||||
klass = eo_class_new(&class_desc, SIMPLE_CLASS, NULL);
|
||||
fail_if(!klass);
|
||||
|
||||
TEST_EO_ERROR("eo_class_name_get", NULL);
|
||||
ctx.expected_level = EINA_LOG_LEVEL_CRITICAL;
|
||||
/* Add class checks here... */
|
||||
Eo *obj = eo_add(klass, NULL);
|
||||
eo_do(obj, simple_a_set(7), simple_a_print(), simple_class_hi_print());
|
||||
|
||||
eo_unref(obj);
|
||||
|
||||
eina_log_print_cb_set(eina_log_print_cb_stderr, NULL);
|
||||
|
||||
eo_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
|
|
Loading…
Reference in New Issue