X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftest%2Ftest-list.c;h=f6da1a70533ad8a53a09b38b4901a13f1006ba8d;hb=b6e676ce41508e2aeea22202fc8f234126177f52;hp=27105047656ddc3847357fb1f910dc05a5a22c9b;hpb=3b18ae6866043ac4d96ee9bcada1a42469c80129;p=elogind.git diff --git a/src/test/test-list.c b/src/test/test-list.c index 271050476..f6da1a705 100644 --- a/src/test/test-list.c +++ b/src/test/test-list.c @@ -29,15 +29,36 @@ 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]); } + i = 0; + LIST_FOREACH_OTHERS(item, cursor, &items[2]) { + i++; + assert_se(cursor != &items[2]); + } + assert_se(i == ELEMENTSOF(items)-1); + + i = 0; + LIST_FOREACH_OTHERS(item, cursor, &items[0]) { + i++; + assert_se(cursor != &items[0]); + } + assert_se(i == ELEMENTSOF(items)-1); + + i = 0; + LIST_FOREACH_OTHERS(item, cursor, &items[3]) { + i++; + assert_se(cursor != &items[3]); + } + assert_se(i == ELEMENTSOF(items)-1); + assert_se(!LIST_JUST_US(item, head)); assert_se(items[0].item_next == NULL); @@ -50,13 +71,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 +88,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 +99,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 +110,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 +119,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; }