1 #include "derp/common.h"
7 #define ARRAY_LEN(a) (sizeof(a)/sizeof(*a))
9 int cmpint(const void *a, const void *b, void *aux)
12 return *(int*)a - *(int*)b;
15 int ivals[] = {0,1,2,3,4,5,6,7,8,9};
21 assert(l_length(l) == 0);
22 assert(l_is_empty(l));
23 l_prepend(l, &ivals[0]);
24 assert(l_length(l) == 1);
25 l_prepend(l, &ivals[0]);
26 assert(l_length(l) == 2);
27 assert(!l_is_empty(l));
30 l_remove_first(l); /* redundant */
31 assert(l_is_empty(l));
32 l_append(l, &ivals[0]);
33 assert(l_length(l) == 1);
35 assert(l_is_empty(l));
38 for (i = 0; i < 3; i++)
40 l_remove(l, l_first(l)->next);
41 assert(*(int*)l_first(l)->data == 0);
42 assert(*(int*)l_first(l)->next->data == 2);
44 assert(*(int*)l_last(l)->data == 2);
45 assert(*(int*)l_last(l)->prev->data == 0);
47 l_insert(l, l_first(l)->next, ivals+8);
48 assert(*(int*)l_first(l)->data == 0);
49 assert(*(int*)l_first(l)->next->data == 8);
50 assert(*(int*)l_first(l)->next->next->data == 2);
51 assert(l_length(l) == 3);
53 l_insert_after(l, l_first(l), ivals+7);
54 assert(*(int*)l_first(l)->data == 0);
55 assert(*(int*)l_first(l)->next->data == 7);
56 assert(*(int*)l_first(l)->next->next->data == 8);
57 assert(*(int*)l_first(l)->next->next->next->data == 2);
59 l_sort(l, cmpint, NULL);
60 assert(*(int*)l_first(l)->data == 0);
61 assert(*(int*)l_first(l)->next->data == 2);
62 assert(*(int*)l_first(l)->next->next->data == 7);
63 assert(*(int*)l_first(l)->next->next->next->data == 8);
65 l_insert_after(l, l_first(l)->next, ivals+9);
66 l_sort(l, cmpint, NULL);
67 assert(*(int*)l_first(l)->data == 0);
68 assert(*(int*)l_first(l)->next->data == 2);
69 assert(*(int*)l_first(l)->next->next->data == 7);
70 assert(*(int*)l_first(l)->next->next->next->data == 8);
71 assert(*(int*)l_first(l)->next->next->next->next->data == 9);
73 l_insert_after(l, l_first(l), ivals+4);
74 l_insert(l, l_last(l), ivals+4);
75 assert(l_find(l, ivals+4, cmpint, NULL) == l_first(l)->next);
76 assert(l_find_last(l, ivals+4, cmpint, NULL) == l_last(l)->prev);
79 assert(!l_find(l, ¬found, cmpint, NULL));
80 assert(!l_find_last(l, ¬found, cmpint, NULL));
84 for (i = 0; i < ARRAY_LEN(ivals); i++)
86 assert(l_length(l) == ARRAY_LEN(ivals));
87 assert(*(int*)l_last(l)->data == 9);
88 assert(*(int*)l_remove_last(l) == 9);
89 assert(*(int*)l_remove_last(l) == 8);
92 l_dtor(l, derp_free, NULL);
93 int *life = malloc(sizeof *life);