6 #define ARRAY_LEN(a) (sizeof(a)/sizeof(*a))
8 int cmpint(const void *a, const void *b)
10 return *(int*)a - *(int*)b;
13 int ivals[] = {0,1,2,3,4,5,6,7,8,9};
17 list *l = l_new(NULL);
19 assert(l_length(l) == 0);
20 assert(l_is_empty(l));
21 l_prepend(l, &ivals[0]);
22 assert(l_length(l) == 1);
23 assert(!l_is_empty(l));
25 l_remove_first(l); /* redundant */
26 assert(l_is_empty(l));
27 l_append(l, &ivals[0]);
28 assert(l_length(l) == 1);
30 l_remove_first(l); /* redundant */
31 assert(l_is_empty(l));
34 for (i = 0; i < 3; i++)
36 l_remove(l, l_first(l)->next);
37 assert(*(int*)l_first(l)->data == 0);
38 assert(*(int*)l_first(l)->next->data == 2);
40 assert(*(int*)l_last(l)->data == 2);
41 assert(*(int*)l_last(l)->prev->data == 0);
43 l_insert(l, l_first(l)->next, ivals+8);
44 assert(*(int*)l_first(l)->data == 0);
45 assert(*(int*)l_first(l)->next->data == 8);
46 assert(*(int*)l_first(l)->next->next->data == 2);
47 assert(l_length(l) == 3);
49 l_insert_after(l, l_first(l), ivals+7);
50 assert(*(int*)l_first(l)->data == 0);
51 assert(*(int*)l_first(l)->next->data == 7);
52 assert(*(int*)l_first(l)->next->next->data == 8);
53 assert(*(int*)l_first(l)->next->next->next->data == 2);
56 assert(*(int*)l_first(l)->data == 0);
57 assert(*(int*)l_first(l)->next->data == 2);
58 assert(*(int*)l_first(l)->next->next->data == 7);
59 assert(*(int*)l_first(l)->next->next->next->data == 8);
61 l_insert_after(l, l_first(l)->next, ivals+9);
63 assert(*(int*)l_first(l)->data == 0);
64 assert(*(int*)l_first(l)->next->data == 2);
65 assert(*(int*)l_first(l)->next->next->data == 7);
66 assert(*(int*)l_first(l)->next->next->next->data == 8);
67 assert(*(int*)l_first(l)->next->next->next->next->data == 9);
69 l_insert_after(l, l_first(l), ivals+4);
70 l_insert(l, l_last(l), ivals+4);
71 assert(l_find(l, ivals+4, cmpint) == l_first(l)->next);
72 assert(l_find_last(l, ivals+4, cmpint) == l_last(l)->prev);
76 for (i = 0; i < ARRAY_LEN(ivals); i++)
78 assert(l_length(l) == ARRAY_LEN(ivals));
79 assert(*(int*)l_last(l)->data == 9);
80 assert(*(int*)l_remove_last(l)->data == 9);
81 assert(*(int*)l_remove_last(l)->data == 8);