forked from enlightenment/efl
parent
e787f5aeae
commit
ceca1938c4
|
@ -4,6 +4,7 @@ if (CHECK_ENABLED)
|
||||||
eobj_suite.c
|
eobj_suite.c
|
||||||
eobj_test_init.c
|
eobj_test_init.c
|
||||||
eobj_test_general.c
|
eobj_test_general.c
|
||||||
|
eobj_test_class_errors.c
|
||||||
class_simple.c
|
class_simple.c
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ struct _Eobj_Test_Case
|
||||||
static const Eobj_Test_Case etc[] = {
|
static const Eobj_Test_Case etc[] = {
|
||||||
{ "Eobj init", eobj_test_init },
|
{ "Eobj init", eobj_test_init },
|
||||||
{ "Eobj general", eobj_test_general },
|
{ "Eobj general", eobj_test_general },
|
||||||
|
{ "Eobj class errors", eobj_test_class_errors },
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
void eobj_test_init(TCase *tc);
|
void eobj_test_init(TCase *tc);
|
||||||
void eobj_test_general(TCase *tc);
|
void eobj_test_general(TCase *tc);
|
||||||
|
void eobj_test_class_errors(TCase *tc);
|
||||||
|
|
||||||
|
|
||||||
#endif /* _EOBJ_SUITE_H */
|
#endif /* _EOBJ_SUITE_H */
|
||||||
|
|
|
@ -0,0 +1,166 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "eobj_suite.h"
|
||||||
|
#include "Eobj.h"
|
||||||
|
|
||||||
|
#include "class_simple.h"
|
||||||
|
|
||||||
|
START_TEST(eobj_incomplete_desc)
|
||||||
|
{
|
||||||
|
eobj_init();
|
||||||
|
|
||||||
|
const Eobj_Class *klass;
|
||||||
|
static Eobj_Op TMP_BASE_ID = EOBJ_NOOP;
|
||||||
|
|
||||||
|
enum {
|
||||||
|
TEST_SUB_ID_FOO,
|
||||||
|
TEST_SUB_ID_FOO2,
|
||||||
|
TEST_SUB_ID_LAST
|
||||||
|
};
|
||||||
|
|
||||||
|
static const Eobj_Op_Description op_desc[] = {
|
||||||
|
EOBJ_OP_DESCRIPTION(TEST_SUB_ID_FOO, "i", "Foo"),
|
||||||
|
EOBJ_OP_DESCRIPTION(TEST_SUB_ID_FOO2, "i", "Foo2"),
|
||||||
|
EOBJ_OP_DESCRIPTION_SENTINEL
|
||||||
|
};
|
||||||
|
|
||||||
|
static const Eobj_Op_Description op_desc_wrong[] = {
|
||||||
|
EOBJ_OP_DESCRIPTION(TEST_SUB_ID_FOO2, "i", "Foo2"),
|
||||||
|
EOBJ_OP_DESCRIPTION(TEST_SUB_ID_FOO, "i", "Foo"),
|
||||||
|
EOBJ_OP_DESCRIPTION_SENTINEL
|
||||||
|
};
|
||||||
|
|
||||||
|
/* XXX: In real life this should be const, this is just for testing. */
|
||||||
|
static Eobj_Class_Description class_desc = {
|
||||||
|
"Simple",
|
||||||
|
EOBJ_CLASS_TYPE_REGULAR,
|
||||||
|
EOBJ_CLASS_DESCRIPTION_OPS(NULL, op_desc, 1),
|
||||||
|
NULL,
|
||||||
|
0,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
klass = eobj_class_new(&class_desc, NULL, NULL);
|
||||||
|
fail_if(klass);
|
||||||
|
|
||||||
|
class_desc.ops.base_op_id = &TMP_BASE_ID;
|
||||||
|
class_desc.ops.descs = NULL;
|
||||||
|
|
||||||
|
klass = eobj_class_new(&class_desc, NULL, NULL);
|
||||||
|
fail_if(klass);
|
||||||
|
|
||||||
|
class_desc.ops.descs = op_desc;
|
||||||
|
class_desc.ops.count = TEST_SUB_ID_LAST + 1;
|
||||||
|
|
||||||
|
klass = eobj_class_new(&class_desc, NULL, NULL);
|
||||||
|
fail_if(klass);
|
||||||
|
|
||||||
|
class_desc.ops.count = 0;
|
||||||
|
|
||||||
|
klass = eobj_class_new(&class_desc, NULL, NULL);
|
||||||
|
fail_if(klass);
|
||||||
|
|
||||||
|
class_desc.ops.count = TEST_SUB_ID_LAST;
|
||||||
|
class_desc.ops.descs = op_desc_wrong;
|
||||||
|
|
||||||
|
klass = eobj_class_new(&class_desc, NULL, NULL);
|
||||||
|
fail_if(klass);
|
||||||
|
|
||||||
|
class_desc.ops.descs = op_desc;
|
||||||
|
class_desc.name = NULL;
|
||||||
|
|
||||||
|
klass = eobj_class_new(&class_desc, NULL, NULL);
|
||||||
|
fail_if(klass);
|
||||||
|
|
||||||
|
class_desc.name = "Simple";
|
||||||
|
|
||||||
|
|
||||||
|
klass = eobj_class_new(NULL, NULL, NULL);
|
||||||
|
fail_if(klass);
|
||||||
|
|
||||||
|
/* Should create a class. */
|
||||||
|
klass = eobj_class_new(&class_desc, NULL, NULL);
|
||||||
|
fail_if(!klass);
|
||||||
|
|
||||||
|
(void) klass;
|
||||||
|
|
||||||
|
eobj_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(eobj_inherit_errors)
|
||||||
|
{
|
||||||
|
eobj_init();
|
||||||
|
|
||||||
|
const Eobj_Class *klass;
|
||||||
|
const Eobj_Class *klass_mixin;
|
||||||
|
const Eobj_Class *klass_simple;
|
||||||
|
|
||||||
|
static const Eobj_Class_Description class_desc_simple = {
|
||||||
|
"Simple",
|
||||||
|
EOBJ_CLASS_TYPE_REGULAR,
|
||||||
|
EOBJ_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
|
||||||
|
NULL,
|
||||||
|
0,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static const Eobj_Class_Description class_desc_mixin = {
|
||||||
|
"Mixin",
|
||||||
|
EOBJ_CLASS_TYPE_MIXIN,
|
||||||
|
EOBJ_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
|
||||||
|
NULL,
|
||||||
|
0,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static Eobj_Class_Description class_desc = {
|
||||||
|
"General",
|
||||||
|
EOBJ_CLASS_TYPE_MIXIN,
|
||||||
|
EOBJ_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
|
||||||
|
NULL,
|
||||||
|
0,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
klass_mixin = eobj_class_new(&class_desc_mixin, NULL, NULL);
|
||||||
|
fail_if(!klass_mixin);
|
||||||
|
|
||||||
|
klass_simple = eobj_class_new(&class_desc_simple, NULL, NULL);
|
||||||
|
fail_if(!klass_simple);
|
||||||
|
|
||||||
|
klass = eobj_class_new(&class_desc, klass_simple, NULL);
|
||||||
|
fail_if(klass);
|
||||||
|
|
||||||
|
class_desc.type = EOBJ_CLASS_TYPE_REGULAR;
|
||||||
|
|
||||||
|
klass = eobj_class_new(&class_desc, klass_mixin, NULL);
|
||||||
|
fail_if(klass);
|
||||||
|
|
||||||
|
(void) klass;
|
||||||
|
|
||||||
|
eobj_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
void eobj_test_class_errors(TCase *tc)
|
||||||
|
{
|
||||||
|
tcase_add_test(tc, eobj_incomplete_desc);
|
||||||
|
tcase_add_test(tc, eobj_inherit_errors);
|
||||||
|
}
|
Loading…
Reference in New Issue