5 #include "derp/common.h"
8 #define ARRAY_LEN(a) (sizeof(a)/sizeof(*a))
10 int cmpint(const void *a, const void *b, void *aux)
13 return *(int*)a - *(int*)b;
16 int ivals[] = {0,1,2,3,4,5,6,7,8,9};
24 assert(l_length(l) == 0);
25 assert(l_is_empty(l));
26 l_prepend(l, &ivals[0]);
27 assert(l_length(l) == 1);
28 l_prepend(l, &ivals[0]);
29 assert(l_length(l) == 2);
30 assert(!l_is_empty(l));
33 l_remove_first(l); /* redundant */
34 assert(l_is_empty(l));
35 l_append(l, &ivals[0]);
36 assert(l_length(l) == 1);
38 assert(l_is_empty(l));
41 for (i = 0; i < 3; i++)
43 l_remove(l, l_first(l)->next);
44 assert(*(int*)l_first(l)->data == 0);
45 assert(*(int*)l_first(l)->next->data == 2);
47 assert(*(int*)l_last(l)->data == 2);
48 assert(*(int*)l_last(l)->prev->data == 0);
50 l_insert(l, l_first(l)->next, ivals+8);
51 assert(*(int*)l_first(l)->data == 0);
52 assert(*(int*)l_first(l)->next->data == 8);
53 assert(*(int*)l_first(l)->next->next->data == 2);
54 assert(l_length(l) == 3);
56 l_insert_after(l, l_first(l), ivals+7);
57 assert(*(int*)l_first(l)->data == 0);
58 assert(*(int*)l_first(l)->next->data == 7);
59 assert(*(int*)l_first(l)->next->next->data == 8);
60 assert(*(int*)l_first(l)->next->next->next->data == 2);
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);
68 l_insert_after(l, l_first(l)->next, ivals+9);
69 l_sort(l, cmpint, NULL);
70 assert(*(int*)l_first(l)->data == 0);
71 assert(*(int*)l_first(l)->next->data == 2);
72 assert(*(int*)l_first(l)->next->next->data == 7);
73 assert(*(int*)l_first(l)->next->next->next->data == 8);
74 assert(*(int*)l_first(l)->next->next->next->next->data == 9);
76 l_insert_after(l, l_first(l), ivals+4);
77 l_insert(l, l_last(l), ivals+4);
78 assert(l_find(l, ivals+4, cmpint, NULL) == l_first(l)->next);
79 assert(l_find_last(l, ivals+4, cmpint, NULL) == l_last(l)->prev);
82 assert(!l_find(l, ¬found, cmpint, NULL));
83 assert(!l_find_last(l, ¬found, cmpint, NULL));
87 for (i = 0; i < ARRAY_LEN(ivals); i++)
89 assert(l_length(l) == ARRAY_LEN(ivals));
90 assert(*(int*)l_last(l)->data == 9);
91 assert(*(int*)l_remove_last(l) == 9);
92 assert(*(int*)l_remove_last(l) == 8);
95 l_dtor(l, derp_free, NULL);
96 int *life = GC_MALLOC(sizeof *life);