4 #include "derp/common.h"
8 #include <gc/leak_detector.h>
11 #define ARRAY_LEN(a) (sizeof(a)/sizeof(*a))
13 int cmpint(const void *a, const void *b, void *aux)
16 return *(int*)a - *(int*)b;
19 int ivals[] = {0,1,2,3,4,5,6,7,8,9};
26 GC_debug_malloc_replacement,
27 GC_debug_realloc_replacement, GC_debug_free);
32 assert(l_length(l) == 0);
33 assert(l_is_empty(l));
34 l_prepend(l, &ivals[0]);
35 assert(l_length(l) == 1);
36 l_prepend(l, &ivals[0]);
37 assert(l_length(l) == 2);
38 assert(!l_is_empty(l));
41 l_remove_first(l); /* redundant */
42 assert(l_is_empty(l));
43 l_append(l, &ivals[0]);
44 assert(l_length(l) == 1);
46 assert(l_is_empty(l));
49 for (i = 0; i < 3; i++)
51 l_remove(l, l_first(l)->next);
52 assert(*(int*)l_first(l)->data == 0);
53 assert(*(int*)l_first(l)->next->data == 2);
55 assert(*(int*)l_last(l)->data == 2);
56 assert(*(int*)l_last(l)->prev->data == 0);
58 l_insert(l, l_first(l)->next, ivals+8);
59 assert(*(int*)l_first(l)->data == 0);
60 assert(*(int*)l_first(l)->next->data == 8);
61 assert(*(int*)l_first(l)->next->next->data == 2);
62 assert(l_length(l) == 3);
64 l_insert_after(l, l_first(l), ivals+7);
65 assert(*(int*)l_first(l)->data == 0);
66 assert(*(int*)l_first(l)->next->data == 7);
67 assert(*(int*)l_first(l)->next->next->data == 8);
68 assert(*(int*)l_first(l)->next->next->next->data == 2);
70 l_sort(l, cmpint, NULL);
71 assert(*(int*)l_first(l)->data == 0);
72 assert(*(int*)l_first(l)->next->data == 2);
73 assert(*(int*)l_first(l)->next->next->data == 7);
74 assert(*(int*)l_first(l)->next->next->next->data == 8);
76 l_insert_after(l, l_first(l)->next, ivals+9);
77 l_sort(l, cmpint, NULL);
78 assert(*(int*)l_first(l)->data == 0);
79 assert(*(int*)l_first(l)->next->data == 2);
80 assert(*(int*)l_first(l)->next->next->data == 7);
81 assert(*(int*)l_first(l)->next->next->next->data == 8);
82 assert(*(int*)l_first(l)->next->next->next->next->data == 9);
84 l_insert_after(l, l_first(l), ivals+4);
85 l_insert(l, l_last(l), ivals+4);
86 assert(l_find(l, ivals+4, cmpint, NULL) == l_first(l)->next);
87 assert(l_find_last(l, ivals+4, cmpint, NULL) == l_last(l)->prev);
90 assert(!l_find(l, ¬found, cmpint, NULL));
91 assert(!l_find_last(l, ¬found, cmpint, NULL));
95 for (i = 0; i < ARRAY_LEN(ivals); i++)
97 assert(l_length(l) == ARRAY_LEN(ivals));
98 assert(*(int*)l_last(l)->data == 9);
99 assert(*(int*)l_remove_last(l) == 9);
100 assert(*(int*)l_remove_last(l) == 8);
103 l_dtor(l, derp_free, NULL);
104 int *life = malloc(sizeof *life);