7 #include "eobj_suite.h"
10 #include "class_simple.h"
12 START_TEST(eobj_simple)
15 Eobj *obj = eobj_add(EOBJ_BASE_CLASS, NULL);
22 START_TEST(eobj_xrefs)
25 Eobj *obj = eobj_add(SIMPLE_CLASS, NULL);
26 Eobj *obj2 = eobj_add(SIMPLE_CLASS, NULL);
27 Eobj *obj3 = eobj_add(SIMPLE_CLASS, NULL);
30 fail_if(eobj_ref_get(obj) != 2);
32 fail_if(eobj_ref_get(obj) != 3);
34 eobj_xunref(obj, obj2);
35 fail_if(eobj_ref_get(obj) != 2);
36 eobj_xunref(obj, obj3);
37 fail_if(eobj_ref_get(obj) != 1);
40 eobj_xunref(obj, obj3);
41 fail_if(eobj_ref_get(obj) != 1);
44 fail_if(eobj_ref_get(obj) != 2);
46 eobj_xunref(obj, obj3);
47 fail_if(eobj_ref_get(obj) != 2);
49 eobj_xunref(obj, obj2);
50 fail_if(eobj_ref_get(obj) != 1);
61 START_TEST(eobj_weak_reference)
65 Eobj *obj = eobj_add(SIMPLE_CLASS, NULL);
66 Eobj_Weak_Ref *wref = eobj_weak_ref_new(obj);
67 fail_if(!eobj_weak_ref_get(wref));
70 fail_if(eobj_weak_ref_get(wref));
72 eobj_weak_ref_free(wref);
74 obj = eobj_add(SIMPLE_CLASS, NULL);
75 wref = eobj_weak_ref_new(obj);
78 fail_if(!eobj_weak_ref_get(wref));
81 fail_if(eobj_weak_ref_get(wref));
84 fail_if(eobj_weak_ref_get(wref));
86 eobj_weak_ref_free(wref);
93 START_TEST(eobj_op_errors)
96 Eobj *obj = eobj_add(SIMPLE_CLASS, NULL);
98 /* Out of bounds op for a legal class. */
99 fail_if(eobj_do(obj, 0x00010111));
102 fail_if(eobj_do(obj, 0x0F010111));
104 fail_if(eobj_ref_get(obj) != 1);
107 fail_if(eobj_ref_get(obj) != 2);
110 fail_if(eobj_ref_get(obj) != 3);
113 fail_if(eobj_ref_get(obj) != 2);
116 fail_if(eobj_ref_get(obj) != 1);
124 _fake_free_func(void *data)
133 START_TEST(eobj_generic_data)
136 Eobj *obj = eobj_add(SIMPLE_CLASS, NULL);
139 eobj_do(obj, EOBJ_BASE_DATA_SET("test1", (void *) 1, NULL));
140 eobj_do(obj, EOBJ_BASE_DATA_GET("test1", &data));
141 fail_if(1 != (int) data);
142 eobj_do(obj, EOBJ_BASE_DATA_DEL("test1"));
143 eobj_do(obj, EOBJ_BASE_DATA_GET("test1", &data));
146 eobj_do(obj, EOBJ_BASE_DATA_SET("test1", (void *) 1, NULL));
147 eobj_do(obj, EOBJ_BASE_DATA_SET("test2", (void *) 2, NULL));
148 eobj_do(obj, EOBJ_BASE_DATA_GET("test1", &data));
149 fail_if(1 != (int) data);
150 eobj_do(obj, EOBJ_BASE_DATA_GET("test2", &data));
151 fail_if(2 != (int) data);
153 eobj_do(obj, EOBJ_BASE_DATA_GET("test2", &data));
154 fail_if(2 != (int) data);
155 eobj_do(obj, EOBJ_BASE_DATA_DEL("test2"));
156 eobj_do(obj, EOBJ_BASE_DATA_GET("test2", &data));
159 eobj_do(obj, EOBJ_BASE_DATA_GET("test1", &data));
160 fail_if(1 != (int) data);
161 eobj_do(obj, EOBJ_BASE_DATA_DEL("test1"));
162 eobj_do(obj, EOBJ_BASE_DATA_GET("test1", &data));
166 eobj_do(obj, EOBJ_BASE_DATA_SET("test3", &a, _fake_free_func));
167 eobj_do(obj, EOBJ_BASE_DATA_GET("test3", &data));
169 eobj_do(obj, EOBJ_BASE_DATA_GET("test3", NULL));
170 eobj_do(obj, EOBJ_BASE_DATA_DEL("test3"));
174 eobj_do(obj, EOBJ_BASE_DATA_SET("test3", &a, _fake_free_func));
175 eobj_do(obj, EOBJ_BASE_DATA_SET("test3", NULL, _fake_free_func));
179 eobj_do(obj, EOBJ_BASE_DATA_SET(NULL, &a, _fake_free_func));
180 eobj_do(obj, EOBJ_BASE_DATA_GET(NULL, &data));
182 eobj_do(obj, EOBJ_BASE_DATA_DEL(NULL));
185 eobj_do(obj, EOBJ_BASE_DATA_SET("test3", &a, _fake_free_func));
186 eobj_do(obj, EOBJ_BASE_DATA_SET("test3", NULL, NULL));
188 eobj_do(obj, EOBJ_BASE_DATA_SET("test3", &a, _fake_free_func));
197 void eobj_test_general(TCase *tc)
199 tcase_add_test(tc, eobj_generic_data);
200 tcase_add_test(tc, eobj_op_errors);
201 tcase_add_test(tc, eobj_simple);
202 tcase_add_test(tc, eobj_weak_reference);
203 tcase_add_test(tc, eobj_xrefs);