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};
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 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);
55 l_sort(l, cmpint, NULL);
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);
62 l_sort(l, cmpint, NULL);
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, NULL) == l_first(l)->next);
72 assert(l_find_last(l, ivals+4, cmpint, NULL) == 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) == 9);
81 assert(*(int*)l_remove_last(l) == 8);