1 #include <CUnit/CUnit.h>
7 void test_list_new(void)
9 struct list
*l
= list_new();
11 CU_ASSERT_PTR_NOT_NULL_FATAL(l
);
12 CU_ASSERT_PTR_NULL(l
->first
);
13 CU_ASSERT_PTR_NULL(l
->last
);
18 void test_list_copy(void)
20 struct list
*l
= list_new();
23 list_append(l
, (void *)1);
24 list_append(l
, (void *)2);
25 list_append(l
, (void *)3);
29 CU_ASSERT_EQUAL(list_length(l
), list_length(m
));
30 CU_ASSERT_PTR_NOT_EQUAL(l
, m
);
32 for (struct list_item
*item_l
= l
->first
, *item_m
= m
->first
;
33 item_l
!= NULL
&& item_m
!= NULL
;
34 item_l
= item_l
->next
, item_m
= item_m
->next
) {
35 CU_ASSERT_PTR_EQUAL(item_l
->data
, item_m
->data
);
36 CU_ASSERT_PTR_NOT_EQUAL(item_l
, item_m
);
43 void test_list_free(void)
45 struct list
*l
= list_new();
47 list_append(l
, (void *)1);
48 list_append(l
, (void *)2);
49 list_append(l
, (void *)3);
53 CU_PASS("list_free() didn't crash");
56 void test_list_length(void)
58 struct list
*l
= list_new();
60 CU_ASSERT(list_length(l
) == 0);
62 list_append(l
, (void *)1);
63 CU_ASSERT(list_length(l
) == 1);
65 list_append(l
, (void *)2);
66 CU_ASSERT(list_length(l
) == 2);
68 list_append(l
, (void *)3);
69 CU_ASSERT(list_length(l
) == 3);
71 list_append(l
, (void *)4);
72 CU_ASSERT(list_length(l
) == 4);
77 void test_list_append(void)
79 struct list
*l
= list_new();
81 list_append(l
, (void *)1);
83 CU_ASSERT_PTR_EQUAL(l
->first
, l
->last
);
84 CU_ASSERT_PTR_NULL(l
->first
->previous
);
85 CU_ASSERT_PTR_NULL(l
->last
->next
);
87 CU_ASSERT_PTR_EQUAL(l
->first
->data
, (void *)1);
89 list_append(l
, (void *)2);
91 CU_ASSERT_PTR_NOT_EQUAL(l
->first
, l
->last
);
92 CU_ASSERT_PTR_EQUAL(l
->first
->next
, l
->last
);
93 CU_ASSERT_PTR_EQUAL(l
->last
->previous
, l
->first
);
94 CU_ASSERT_PTR_NULL(l
->first
->previous
);
95 CU_ASSERT_PTR_NULL(l
->last
->next
);
97 CU_ASSERT_PTR_EQUAL(l
->last
->data
, (void *)2);
99 list_append(l
, (void *)3);
101 CU_ASSERT_PTR_EQUAL(l
->first
->next
, l
->last
->previous
);
102 CU_ASSERT_PTR_EQUAL(l
->last
->previous
->previous
, l
->first
);
103 CU_ASSERT_PTR_NULL(l
->first
->previous
);
104 CU_ASSERT_PTR_NULL(l
->last
->next
);
106 CU_ASSERT_PTR_EQUAL(l
->last
->data
, (void *)3);
111 void test_list_delete_item(void)
113 struct list
*l
= list_new();
115 list_append(l
, (void *)1);
117 list_delete_item(l
, l
->first
);
119 CU_ASSERT_PTR_NULL(l
->first
);
120 CU_ASSERT_PTR_NULL(l
->last
);
122 list_append(l
, (void *)1);
123 list_append(l
, (void *)2);
124 list_append(l
, (void *)3);
126 list_delete_item(l
, l
->first
->next
);
128 CU_ASSERT_PTR_EQUAL(l
->first
->next
, l
->last
);
129 CU_ASSERT_PTR_EQUAL(l
->last
->previous
, l
->first
);
131 CU_ASSERT_PTR_EQUAL(l
->first
->data
, (void *)1)
132 CU_ASSERT_PTR_EQUAL(l
->last
->data
, (void *)3)
137 void test_list_delete(void)
139 struct list
*l
= list_new();
141 list_append(l
, (void *)1);
142 list_append(l
, (void *)2);
143 list_append(l
, (void *)3);
145 list_delete(l
, (void *)2);
147 CU_ASSERT_PTR_EQUAL(l
->first
->next
, l
->last
);
148 CU_ASSERT_PTR_EQUAL(l
->last
->previous
, l
->first
);
150 CU_ASSERT_PTR_EQUAL(l
->first
->data
, (void *)1)
151 CU_ASSERT_PTR_EQUAL(l
->last
->data
, (void *)3)
153 list_delete(l
, (void *)1);
154 list_delete(l
, (void *)3);
156 CU_ASSERT(list_length(l
) == 0);
158 list_delete(l
, (void *)4);
163 void test_list_find(void)
165 struct list
*l
= list_new();
167 list_append(l
, (void *)1);
168 list_append(l
, (void *)2);
169 list_append(l
, (void *)3);
171 CU_ASSERT_PTR_EQUAL(list_find(l
, (void *)2), l
->first
->next
);
172 CU_ASSERT_PTR_NULL(list_find(l
, (void *)4));
173 CU_ASSERT_PTR_NULL(list_find(l
, NULL
));
178 CU_TestInfo list_tests
[] = {
179 { "test_list_new", test_list_new
},
180 { "test_list_copy", test_list_copy
},
181 { "test_list_free", test_list_free
},
182 { "test_list_length", test_list_length
},
183 { "test_list_append", test_list_append
},
184 { "test_list_delete_item", test_list_delete_item
},
185 { "test_list_delete", test_list_delete
},
186 { "test_list_find", test_list_find
},