diff --git a/t/core/object_test.c b/t/core/object_test.c
index f39819cc1f59f6e634ca671dae0230bde3c95afd..b741b6cb6bb88b6f0b8e844cfc75c16207a20414 100644 (file)
--- a/t/core/object_test.c
+++ b/t/core/object_test.c
fail_unless(obj->type.size == test_type.size,
"after sdb_object_create(): type size mismatch; got: %zu; "
"expected: %zu", obj->type.size, test_type.size);
+ fail_unless(obj->type.init == obj_init_noop,
+ "after sdb_object_create(): type init = %p; exptected: %p",
+ obj->type.init, obj_init_noop);
+ fail_unless(obj->type.destroy == obj_destroy_noop,
+ "after sdb_object_create(): type destroy = %p; exptected: %p",
+ obj->type.destroy, obj_destroy_noop);
fail_unless(obj->ref_cnt == 1,
"after sdb_object_create(): obj->ref_cnt = %d; expected: 1",
obj->ref_cnt);
fail_unless(obj != NULL,
"sdb_object_create() fails without destroy callback");
sdb_object_deref(obj);
+
+ init_noop_called = 0;
+ obj = sdb_object_create_simple(name, sizeof(struct noop));
+ fail_unless(obj != NULL,
+ "sdb_object_create_simple() = NULL; expected: <obj>");
+ fail_unless(obj->type.size == sizeof(struct noop),
+ "sdb_object_create_simple() created object of size %zu; "
+ "expected: %zu", obj->type.size, sizeof(struct noop));
+ fail_unless(obj->type.init == NULL,
+ "sdb_object_create_simple() did not set init=NULL");
+ fail_unless(obj->type.destroy == NULL,
+ "sdb_object_create_simple() did not set destroy=NULL");
+ fail_unless(init_noop_called == 0,
+ "sdb_object_create_simple() unexpectedly called noop's init");
+ sdb_object_deref(obj);
+
+ obj = sdb_object_create_T(NULL, struct noop);
+ fail_unless(obj != NULL,
+ "sdb_object_create_simple() = NULL; expected: <obj>");
+ fail_unless(obj->type.size == sizeof(struct noop),
+ "sdb_object_create_simple() created object of size %zu; "
+ "expected: %zu", obj->type.size, sizeof(struct noop));
+ fail_unless(obj->type.init == NULL,
+ "sdb_object_create_simple() did not set init=NULL");
+ fail_unless(obj->type.destroy == NULL,
+ "sdb_object_create_simple() did not set destroy=NULL");
+ fail_unless(init_noop_called == 0,
+ "sdb_object_create_simple() unexpectedly called noop's init");
+ sdb_object_deref(obj);
}
END_TEST
}
END_TEST
+START_TEST(test_obj_cmp)
+{
+ sdb_object_t *obj1, *obj2, *obj3, *obj4;
+ int status;
+
+ obj1 = sdb_object_create("a", noop_type);
+ obj2 = sdb_object_create("b", noop_type);
+ obj3 = sdb_object_create("B", noop_type);
+ obj4 = sdb_object_create("c", noop_type);
+
+ status = sdb_object_cmp_by_name(obj1, obj2);
+ fail_unless(status == -1,
+ "sdb_object_cmp_by_name('a', 'b') = %d; expected: -1", status);
+ status = sdb_object_cmp_by_name(obj2, obj3);
+ fail_unless(status == 0,
+ "sdb_object_cmp_by_name('b', 'B') = %d; expected: 0", status);
+ status = sdb_object_cmp_by_name(obj4, obj3);
+ fail_unless(status == 1,
+ "sdb_object_cmp_by_name('c', 'B') = %d; expected: 1", status);
+ status = sdb_object_cmp_by_name(obj1, obj1);
+ fail_unless(status == 0,
+ "sdb_object_cmp_by_name('a', 'a') = %d; expected: 0", status);
+
+ sdb_object_deref(obj1);
+ sdb_object_deref(obj2);
+ sdb_object_deref(obj3);
+ sdb_object_deref(obj4);
+}
+END_TEST
+
Suite *
core_object_suite(void)
{
tcase_add_test(tc, test_obj_create);
tcase_add_test(tc, test_obj_wrapper);
tcase_add_test(tc, test_obj_ref);
+ tcase_add_test(tc, test_obj_cmp);
suite_add_tcase(s, tc);
return s;