aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libstrongswan/tests/test_linked_list_enumerator.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/libstrongswan/tests/test_linked_list_enumerator.c b/src/libstrongswan/tests/test_linked_list_enumerator.c
index 1342aec8a..d44f7ab9f 100644
--- a/src/libstrongswan/tests/test_linked_list_enumerator.c
+++ b/src/libstrongswan/tests/test_linked_list_enumerator.c
@@ -219,7 +219,7 @@ END_TEST
START_TEST(test_replace)
{
enumerator_t *enumerator;
- intptr_t x;
+ intptr_t x, y;
int round;
round = 1;
@@ -227,7 +227,8 @@ START_TEST(test_replace)
while (enumerator->enumerate(enumerator, &x))
{
ck_assert_int_eq(round, x);
- list->replace(list, enumerator, (void*)(uintptr_t)(6 - round));
+ y = (intptr_t)list->replace(list, enumerator, (void*)(intptr_t)(6 - round));
+ ck_assert_int_eq(round, y);
round++;
}
list->reset_enumerator(list, enumerator);
@@ -241,6 +242,20 @@ START_TEST(test_replace)
}
END_TEST
+START_TEST(test_replace_first)
+{
+ enumerator_t *enumerator;
+ intptr_t x;
+
+ enumerator = list->create_enumerator(list);
+ x = (intptr_t)list->replace(list, enumerator, (void*)6);
+ ck_assert_int_eq(x, 0);
+ ck_assert(enumerator->enumerate(enumerator, &x));
+ ck_assert_int_eq(x, 1);
+ enumerator->destroy(enumerator);
+}
+END_TEST
+
START_TEST(test_remove_at)
{
enumerator_t *enumerator;
@@ -350,6 +365,7 @@ Suite *linked_list_enumerator_suite_create()
tc = tcase_create("modify");
tcase_add_checked_fixture(tc, setup_list, teardown_list);
tcase_add_test(tc, test_replace);
+ tcase_add_test(tc, test_replace_first);
tcase_add_test(tc, test_remove_at);
tcase_add_test(tc, test_remove_at_ends);
suite_add_tcase(s, tc);