summaryrefslogtreecommitdiff
path: root/lichen.test.c
diff options
context:
space:
mode:
authorsanine <sanine.not@pm.me>2025-10-24 13:40:15 -0500
committersanine <sanine.not@pm.me>2025-10-24 13:40:15 -0500
commit4167860e015a779f83a17bc8754c7070bdfba336 (patch)
treee0dfc64edc44e5ad50a4dfa7988715c9a10f7ade /lichen.test.c
parent24fbfb8c41c62b11506668a22074379115f57600 (diff)
add list prepend
Diffstat (limited to 'lichen.test.c')
-rw-r--r--lichen.test.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/lichen.test.c b/lichen.test.c
index bca7d27..622f480 100644
--- a/lichen.test.c
+++ b/lichen.test.c
@@ -81,6 +81,72 @@ LILY_TEST("append to list") {
#include LILY_PUSH_TEST()
+LILY_TEST("prepend to list") {
+ struct li_ll_t *list = li_alloc_ll();
+ REQUIRE_NEQ(list, NULL, "%p");
+
+ int a = 1; int b = 2; int c = 3;
+
+ li_ll_prepend(list, &b);
+ CHECK_EQ(list->count, 1, "%d");
+ REQUIRE_NEQ(list->head, NULL, "%p");
+ CHECK_EQ(list->head->data, &b, "%p");
+ CHECK_EQ(list->head->next, NULL, "%p");
+
+ li_ll_prepend(list, &a);
+ CHECK_EQ(list->count, 2, "%d");
+ REQUIRE_NEQ(list->head->next, NULL, "%p");
+ CHECK_EQ(list->head->data, &a, "%p");
+ CHECK_EQ(list->head->next->data, &b, "%p");
+ CHECK_EQ(list->head->next->next, NULL, "%p");
+
+ li_ll_prepend(list, &c);
+ CHECK_EQ(list->count, 3, "%d");
+ REQUIRE_NEQ(list->head->next->next, NULL, "%p");
+ CHECK_EQ(list->head->data, &c, "%p");
+ CHECK_EQ(list->head->next->data, &a, "%p");
+ CHECK_EQ(list->head->next->next->data, &b, "%p");
+ CHECK_EQ(list->head->next->next->next, NULL, "%p");
+
+ li_free_ll(list, do_nothing);
+}
+#include LILY_PUSH_TEST()
+
+
+LILY_TEST("mix prepends and appends") {
+ struct li_ll_t *list = li_alloc_ll();
+ REQUIRE_NEQ(list, NULL, "%p");
+
+ int a = 1; int b = 2; int c = 3;
+
+ li_ll_prepend(list, &b);
+ CHECK_EQ(list->count, 1, "%d");
+ REQUIRE_NEQ(list->head, NULL, "%p");
+ CHECK_EQ(list->head->data, &b, "%p");
+ CHECK_EQ(list->head->next, NULL, "%p");
+
+ li_ll_prepend(list, &a);
+ CHECK_EQ(list->count, 2, "%d");
+ REQUIRE_NEQ(list->head->next, NULL, "%p");
+ CHECK_EQ(list->head->data, &a, "%p");
+ CHECK_EQ(list->head->next->data, &b, "%p");
+ CHECK_EQ(list->head->next->next, NULL, "%p");
+
+ li_ll_append(list, &c);
+ CHECK_EQ(list->count, 3, "%d");
+ REQUIRE_NEQ(list->head->next->next, NULL, "%p");
+ CHECK_EQ(list->head->data, &a, "%p");
+ CHECK_EQ(list->head->next->data, &b, "%p");
+ CHECK_EQ(list->head->next->next->data, &c, "%p");
+ CHECK_EQ(list->head->next->next->next, NULL, "%p");
+
+ li_free_ll(list, do_nothing);
+
+}
+#include LILY_PUSH_TEST()
+
+
+
#define LILY_FILE_END
#include LILY_REGISTER_TESTS()