tst_list.c revision 96f3e4ebd4c232776e35ae85a88f25b206e280af
bcb4e51a409d94ae670de96afb8483a4f7855294Stephan Bosch#include <stdio.h>
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen#include <string.h>
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen#include <lxc/lxc_list.h>
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainenint main(int argc, char *argv[])
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen{
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen struct lxc_list *iterator;
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen struct lxc_list head = lxc_init_list(&head);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen struct lxc_list l1 = lxc_init_list(&l1);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen struct lxc_list l2 = lxc_init_list(&l2);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen struct lxc_list l3 = lxc_init_list(&l3);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen struct lxc_list l4 = lxc_init_list(&l4);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen struct dummy {
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen int a;
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen };
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen struct dummy *elem;
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen struct dummy d1 = { .a = 1 };
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen struct dummy d2 = { .a = 2 };
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen struct dummy d3 = { .a = 3 };
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen struct dummy d4 = { .a = 4 };
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen if (!lxc_list_empty(&head)) {
4bed2aacac5ad4bb86ab034cd9adee8a565a4f1bTimo Sirainen fprintf(stderr, "expected empty list\n");
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen return -1;
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen }
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen l1.elem = &d1;
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen l2.elem = &d2;
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen l3.elem = &d3;
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen l4.elem = &d4;
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen lxc_list_add(&head, &l1);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen lxc_list_add(&head, &l2);
0cfdf8ba03034ffe98abe73c21fdb69e5c0a4509Timo Sirainen lxc_list_add(&head, &l3);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen lxc_list_add(&head, &l4);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen lxc_list_for_each(iterator, &head) {
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen elem = iterator->elem;
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen printf("elem has %d\n", elem->a);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen }
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen lxc_list_del(&l3);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen lxc_list_for_each(iterator, &head) {
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen elem = iterator->elem;
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen printf("elem has %d\n", elem->a);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen }
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen lxc_list_del(&l1);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen lxc_list_del(&l2);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen lxc_list_del(&l4);
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen if (!lxc_list_empty(&head)) {
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen fprintf(stderr, "expected empty list\n");
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen return -1;
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen }
ac26a4607cb12b156f6a42f1ead2881bedd43d94Timo Sirainen
0cfdf8ba03034ffe98abe73c21fdb69e5c0a4509Timo Sirainen lxc_list_for_each(iterator, &head) {
0cfdf8ba03034ffe98abe73c21fdb69e5c0a4509Timo Sirainen fprintf(stderr, "should not loop\n");
0cfdf8ba03034ffe98abe73c21fdb69e5c0a4509Timo Sirainen return -1;
0cfdf8ba03034ffe98abe73c21fdb69e5c0a4509Timo Sirainen }
0cfdf8ba03034ffe98abe73c21fdb69e5c0a4509Timo Sirainen
0cfdf8ba03034ffe98abe73c21fdb69e5c0a4509Timo Sirainen return 0;
0cfdf8ba03034ffe98abe73c21fdb69e5c0a4509Timo Sirainen}
0cfdf8ba03034ffe98abe73c21fdb69e5c0a4509Timo Sirainen