X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftest%2Ftest-list.c;h=e9d47f050359720e6284e22b22226a6bf8bf79cd;hb=764aad6258eec3bd4ae62ea341ea507bd69ce628;hp=27105047656ddc3847357fb1f910dc05a5a22c9b;hpb=3b18ae6866043ac4d96ee9bcada1a42469c80129;p=elogind.git diff --git a/src/test/test-list.c b/src/test/test-list.c index 271050476..e9d47f050 100644 --- a/src/test/test-list.c +++ b/src/test/test-list.c @@ -29,13 +29,13 @@ int main(int argc, const char *argv[]) { list_item items[4]; list_item *cursor; - LIST_HEAD_INIT(list_item, head); + LIST_HEAD_INIT(head); assert_se(head == NULL); for (i = 0; i < ELEMENTSOF(items); i++) { - LIST_INIT(list_item, item, &items[i]); + LIST_INIT(item, &items[i]); assert_se(LIST_JUST_US(item, &items[i])); - LIST_PREPEND(list_item, item, head, &items[i]); + LIST_PREPEND(item, head, &items[i]); } assert_se(!LIST_JUST_US(item, head)); @@ -50,13 +50,13 @@ int main(int argc, const char *argv[]) { assert_se(items[2].item_prev == &items[3]); assert_se(items[3].item_prev == NULL); - LIST_FIND_HEAD(list_item, item, &items[0], cursor); + LIST_FIND_HEAD(item, &items[0], cursor); assert_se(cursor == &items[3]); - LIST_FIND_TAIL(list_item, item, &items[3], cursor); + LIST_FIND_TAIL(item, &items[3], cursor); assert_se(cursor == &items[0]); - LIST_REMOVE(list_item, item, head, &items[1]); + LIST_REMOVE(item, head, &items[1]); assert_se(LIST_JUST_US(item, &items[1])); assert_se(items[0].item_next == NULL); @@ -67,7 +67,7 @@ int main(int argc, const char *argv[]) { assert_se(items[2].item_prev == &items[3]); assert_se(items[3].item_prev == NULL); - LIST_INSERT_AFTER(list_item, item, head, &items[3], &items[1]); + LIST_INSERT_AFTER(item, head, &items[3], &items[1]); assert_se(items[0].item_next == NULL); assert_se(items[2].item_next == &items[0]); assert_se(items[1].item_next == &items[2]); @@ -78,7 +78,7 @@ int main(int argc, const char *argv[]) { assert_se(items[1].item_prev == &items[3]); assert_se(items[3].item_prev == NULL); - LIST_REMOVE(list_item, item, head, &items[0]); + LIST_REMOVE(item, head, &items[0]); assert_se(LIST_JUST_US(item, &items[0])); assert_se(items[2].item_next == NULL); @@ -89,7 +89,7 @@ int main(int argc, const char *argv[]) { assert_se(items[1].item_prev == &items[3]); assert_se(items[3].item_prev == NULL); - LIST_REMOVE(list_item, item, head, &items[1]); + LIST_REMOVE(item, head, &items[1]); assert_se(LIST_JUST_US(item, &items[1])); assert_se(items[2].item_next == NULL); @@ -98,12 +98,36 @@ int main(int argc, const char *argv[]) { assert_se(items[2].item_prev == &items[3]); assert_se(items[3].item_prev == NULL); - LIST_REMOVE(list_item, item, head, &items[2]); + LIST_REMOVE(item, head, &items[2]); assert_se(LIST_JUST_US(item, &items[2])); assert_se(LIST_JUST_US(item, head)); - LIST_REMOVE(list_item, item, head, &items[3]); + LIST_REMOVE(item, head, &items[3]); assert_se(LIST_JUST_US(item, &items[3])); + assert_se(head == NULL); + + for (i = 0; i < ELEMENTSOF(items); i++) { + assert_se(LIST_JUST_US(item, &items[i])); + LIST_APPEND(item, head, &items[i]); + } + + assert_se(!LIST_JUST_US(item, head)); + + assert_se(items[0].item_next == &items[1]); + assert_se(items[1].item_next == &items[2]); + assert_se(items[2].item_next == &items[3]); + assert_se(items[3].item_next == NULL); + + assert_se(items[0].item_prev == NULL); + assert_se(items[1].item_prev == &items[0]); + assert_se(items[2].item_prev == &items[1]); + assert_se(items[3].item_prev == &items[2]); + + for (i = 0; i < ELEMENTSOF(items); i++) + LIST_REMOVE(item, head, &items[i]); + + assert_se(head == NULL); + return 0; }