diff --git a/t/utils/llist_test.c b/t/utils/llist_test.c
index 06b9970bfd1475d94990b97c640673bde1cef770..8a6052e8fcb5b5d06c4446f8b5745a87407df283 100644 (file)
--- a/t/utils/llist_test.c
+++ b/t/utils/llist_test.c
for (i = 0; i < SDB_STATIC_ARRAY_LEN(golden_data); ++i) {
sdb_object_t *check = sdb_llist_get(list, i);
fail_unless(check == &golden_data[i],
- "sdb_llist_get() = NULL; expected: %p",
- &golden_data[i]);
+ "sdb_llist_get() = %p; expected: %p",
+ check, &golden_data[i]);
fail_unless(check->ref_cnt == 3,
"sdb_llist_get() didn't increment reference count; got: %i; "
"expected: 3", check->ref_cnt);
}
END_TEST
+START_TEST(test_remove_by_name)
+{
+ /* "random" indexes */
+ int indexes[] = { 4, 5, 3, 6, 2, 0, 1 };
+ size_t i;
+
+ populate();
+
+ for (i = 0; i < SDB_STATIC_ARRAY_LEN(indexes); ++i) {
+ sdb_object_t *check;
+
+ fail_unless((size_t)indexes[i] < SDB_STATIC_ARRAY_LEN(golden_data),
+ "INTERNAL ERROR: invalid index %i", indexes[i]);
+
+ check = sdb_llist_remove_by_name(list, golden_data[indexes[i]].name);
+ fail_unless(check == &golden_data[indexes[i]],
+ "sdb_llist_remove_by_name() = %p; expected: %p",
+ check, &golden_data[indexes[i]]);
+ fail_unless(check->ref_cnt == 2,
+ "sdb_llist_remove_by_name() returned unexpected reference "
+ "count; got: %i; expected: 2", check->ref_cnt);
+
+ check = sdb_llist_remove_by_name(list, golden_data[indexes[i]].name);
+ fail_unless(check == NULL,
+ "sdb_llist_remove_by_name() did not remove the element");
+ }
+}
+END_TEST
+
static int
dummy_lookup(const sdb_object_t __attribute__((unused)) *obj,
const void __attribute__((unused)) *user_data)
tcase_add_test(tc, test_llist_insert);
tcase_add_test(tc, test_validate_insert);
tcase_add_test(tc, test_llist_get);
+ tcase_add_test(tc, test_remove_by_name);
tcase_add_test(tc, test_llist_search);
tcase_add_test(tc, test_llist_shift);
tcase_add_test(tc, test_llist_iter);