7 #include "eobj_suite.h"
10 #include "class_simple.h"
12 START_TEST(eobj_incomplete_desc)
16 const Eobj_Class *klass;
17 static Eobj_Op TMP_BASE_ID = EOBJ_NOOP;
25 static const Eobj_Op_Description op_desc[] = {
26 EOBJ_OP_DESCRIPTION(TEST_SUB_ID_FOO, "i", "Foo"),
27 EOBJ_OP_DESCRIPTION(TEST_SUB_ID_FOO2, "i", "Foo2"),
28 EOBJ_OP_DESCRIPTION_SENTINEL
31 static const Eobj_Op_Description op_desc_wrong[] = {
32 EOBJ_OP_DESCRIPTION(TEST_SUB_ID_FOO2, "i", "Foo2"),
33 EOBJ_OP_DESCRIPTION(TEST_SUB_ID_FOO, "i", "Foo"),
34 EOBJ_OP_DESCRIPTION_SENTINEL
37 /* XXX: In real life this should be const, this is just for testing. */
38 static Eobj_Class_Description class_desc = {
40 EOBJ_CLASS_TYPE_REGULAR,
41 EOBJ_CLASS_DESCRIPTION_OPS(NULL, op_desc, 1),
50 klass = eobj_class_new(&class_desc, NULL, NULL);
53 class_desc.ops.base_op_id = &TMP_BASE_ID;
54 class_desc.ops.descs = NULL;
56 klass = eobj_class_new(&class_desc, NULL, NULL);
59 class_desc.ops.descs = op_desc;
60 class_desc.ops.count = TEST_SUB_ID_LAST + 1;
62 klass = eobj_class_new(&class_desc, NULL, NULL);
65 class_desc.ops.count = 0;
67 klass = eobj_class_new(&class_desc, NULL, NULL);
70 class_desc.ops.count = TEST_SUB_ID_LAST;
71 class_desc.ops.descs = op_desc_wrong;
73 klass = eobj_class_new(&class_desc, NULL, NULL);
76 class_desc.ops.descs = op_desc;
77 class_desc.name = NULL;
79 klass = eobj_class_new(&class_desc, NULL, NULL);
82 class_desc.name = "Simple";
85 klass = eobj_class_new(NULL, NULL, NULL);
88 /* Should create a class. */
89 klass = eobj_class_new(&class_desc, NULL, NULL);
98 START_TEST(eobj_inherit_errors)
102 const Eobj_Class *klass;
103 const Eobj_Class *klass_mixin;
104 const Eobj_Class *klass_simple;
106 static const Eobj_Class_Description class_desc_simple = {
108 EOBJ_CLASS_TYPE_REGULAR,
109 EOBJ_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
118 static const Eobj_Class_Description class_desc_mixin = {
120 EOBJ_CLASS_TYPE_MIXIN,
121 EOBJ_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
130 static Eobj_Class_Description class_desc = {
132 EOBJ_CLASS_TYPE_MIXIN,
133 EOBJ_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
142 klass_mixin = eobj_class_new(&class_desc_mixin, NULL, NULL);
143 fail_if(!klass_mixin);
145 klass_simple = eobj_class_new(&class_desc_simple, NULL, NULL);
146 fail_if(!klass_simple);
148 klass = eobj_class_new(&class_desc, klass_simple, NULL);
151 class_desc.type = EOBJ_CLASS_TYPE_REGULAR;
153 klass = eobj_class_new(&class_desc, klass_mixin, NULL);
162 void eobj_test_class_errors(TCase *tc)
164 tcase_add_test(tc, eobj_incomplete_desc);
165 tcase_add_test(tc, eobj_inherit_errors);