6 #define ARRAY_LEN(a) (sizeof(a)/sizeof(*a))
8 int cmpint(const void *a, const void *b, void *aux)
11 return *(int*)a - *(int*)b;
14 int ivals[] = {0,1,2,3,4,5,6,7,8,9};
18 list *l = l_new(NULL);
20 assert(l_length(l) == 0);
21 assert(l_is_empty(l));
22 l_prepend(l, &ivals[0]);
23 assert(l_length(l) == 1);
24 assert(!l_is_empty(l));
26 l_remove_first(l); /* redundant */
27 assert(l_is_empty(l));
28 l_append(l, &ivals[0]);
29 assert(l_length(l) == 1);
31 l_remove_first(l); /* redundant */
32 assert(l_is_empty(l));
35 for (i = 0; i < 3; i++)
37 l_remove(l, l_first(l)->next);
38 assert(*(int*)l_first(l)->data == 0);
39 assert(*(int*)l_first(l)->next->data == 2);
41 assert(*(int*)l_last(l)->data == 2);
42 assert(*(int*)l_last(l)->prev->data == 0);
44 l_insert(l, l_first(l)->next, ivals+8);
45 assert(*(int*)l_first(l)->data == 0);
46 assert(*(int*)l_first(l)->next->data == 8);
47 assert(*(int*)l_first(l)->next->next->data == 2);
48 assert(l_length(l) == 3);
50 l_insert_after(l, l_first(l), ivals+7);
51 assert(*(int*)l_first(l)->data == 0);
52 assert(*(int*)l_first(l)->next->data == 7);
53 assert(*(int*)l_first(l)->next->next->data == 8);
54 assert(*(int*)l_first(l)->next->next->next->data == 2);
56 l_sort(l, cmpint, NULL);
57 assert(*(int*)l_first(l)->data == 0);
58 assert(*(int*)l_first(l)->next->data == 2);
59 assert(*(int*)l_first(l)->next->next->data == 7);
60 assert(*(int*)l_first(l)->next->next->next->data == 8);
62 l_insert_after(l, l_first(l)->next, ivals+9);
63 l_sort(l, cmpint, NULL);
64 assert(*(int*)l_first(l)->data == 0);
65 assert(*(int*)l_first(l)->next->data == 2);
66 assert(*(int*)l_first(l)->next->next->data == 7);
67 assert(*(int*)l_first(l)->next->next->next->data == 8);
68 assert(*(int*)l_first(l)->next->next->next->next->data == 9);
70 l_insert_after(l, l_first(l), ivals+4);
71 l_insert(l, l_last(l), ivals+4);
72 assert(l_find(l, ivals+4, cmpint, NULL) == l_first(l)->next);
73 assert(l_find_last(l, ivals+4, cmpint, NULL) == l_last(l)->prev);
77 for (i = 0; i < ARRAY_LEN(ivals); i++)
79 assert(l_length(l) == ARRAY_LEN(ivals));
80 assert(*(int*)l_last(l)->data == 9);
81 assert(*(int*)l_remove_last(l)->data == 9);
82 assert(*(int*)l_remove_last(l)->data == 8);