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 void myfree(void *a, void *aux)
20 int ivals[] = {0,1,2,3,4,5,6,7,8,9};
26 assert(l_length(l) == 0);
27 assert(l_is_empty(l));
28 l_prepend(l, &ivals[0]);
29 assert(l_length(l) == 1);
30 l_prepend(l, &ivals[0]);
31 assert(l_length(l) == 2);
32 assert(!l_is_empty(l));
35 l_remove_first(l); /* redundant */
36 assert(l_is_empty(l));
37 l_append(l, &ivals[0]);
38 assert(l_length(l) == 1);
40 assert(l_is_empty(l));
43 for (i = 0; i < 3; i++)
45 l_remove(l, l_first(l)->next);
46 assert(*(int*)l_first(l)->data == 0);
47 assert(*(int*)l_first(l)->next->data == 2);
49 assert(*(int*)l_last(l)->data == 2);
50 assert(*(int*)l_last(l)->prev->data == 0);
52 l_insert(l, l_first(l)->next, ivals+8);
53 assert(*(int*)l_first(l)->data == 0);
54 assert(*(int*)l_first(l)->next->data == 8);
55 assert(*(int*)l_first(l)->next->next->data == 2);
56 assert(l_length(l) == 3);
58 l_insert_after(l, l_first(l), ivals+7);
59 assert(*(int*)l_first(l)->data == 0);
60 assert(*(int*)l_first(l)->next->data == 7);
61 assert(*(int*)l_first(l)->next->next->data == 8);
62 assert(*(int*)l_first(l)->next->next->next->data == 2);
64 l_sort(l, cmpint, NULL);
65 assert(*(int*)l_first(l)->data == 0);
66 assert(*(int*)l_first(l)->next->data == 2);
67 assert(*(int*)l_first(l)->next->next->data == 7);
68 assert(*(int*)l_first(l)->next->next->next->data == 8);
70 l_insert_after(l, l_first(l)->next, ivals+9);
71 l_sort(l, cmpint, NULL);
72 assert(*(int*)l_first(l)->data == 0);
73 assert(*(int*)l_first(l)->next->data == 2);
74 assert(*(int*)l_first(l)->next->next->data == 7);
75 assert(*(int*)l_first(l)->next->next->next->data == 8);
76 assert(*(int*)l_first(l)->next->next->next->next->data == 9);
78 l_insert_after(l, l_first(l), ivals+4);
79 l_insert(l, l_last(l), ivals+4);
80 assert(l_find(l, ivals+4, cmpint, NULL) == l_first(l)->next);
81 assert(l_find_last(l, ivals+4, cmpint, NULL) == l_last(l)->prev);
84 assert(!l_find(l, ¬found, cmpint, NULL));
85 assert(!l_find_last(l, ¬found, cmpint, NULL));
89 for (i = 0; i < ARRAY_LEN(ivals); i++)
91 assert(l_length(l) == ARRAY_LEN(ivals));
92 assert(*(int*)l_last(l)->data == 9);
93 assert(*(int*)l_remove_last(l) == 9);
94 assert(*(int*)l_remove_last(l) == 8);
97 l_dtor(l, myfree, NULL);
98 int *life = malloc(sizeof *life);