diff options
| author | sanine <sanine.not@pm.me> | 2025-10-24 13:40:15 -0500 | 
|---|---|---|
| committer | sanine <sanine.not@pm.me> | 2025-10-24 13:40:15 -0500 | 
| commit | 4167860e015a779f83a17bc8754c7070bdfba336 (patch) | |
| tree | e0dfc64edc44e5ad50a4dfa7988715c9a10f7ade /lichen.test.c | |
| parent | 24fbfb8c41c62b11506668a22074379115f57600 (diff) | |
add list prepend
Diffstat (limited to 'lichen.test.c')
| -rw-r--r-- | lichen.test.c | 66 | 
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() | 
