2 * @file linked_list_test.c
4 * @brief Tests to test the Linked List type linked_list_t
9 * Copyright (C) 2005 Jan Hutter, Martin Willi
10 * Hochschule fuer Technik Rapperswil
12 * This program is free software; you can redistribute it and/or modify it
13 * under the terms of the GNU General Public License as published by the
14 * Free Software Foundation; either version 2 of the License, or (at your
15 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
19 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
25 #include "linked_list_test.h"
27 #include <utils/linked_list.h>
30 * Description in header-file
32 void test_linked_list(tester_t
*tester
)
34 void *test_value
= NULL
;
36 linked_list_t
*linked_list
= linked_list_create();
38 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 0), "count check");
40 linked_list
->insert_first(linked_list
,"one");
41 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 1), "count check");
43 linked_list
->insert_first(linked_list
,"two");
44 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 2), "count check");
46 linked_list
->insert_first(linked_list
,"three");
47 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 3), "count check");
49 linked_list
->insert_first(linked_list
,"four");
50 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 4), "count check");
52 linked_list
->insert_first(linked_list
,"five");
53 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 5), "count check");
55 tester
->assert_true(tester
,(linked_list
->get_first(linked_list
,&test_value
) == SUCCESS
), "get_first call check");
56 tester
->assert_true(tester
,(strcmp((char *) test_value
,"five") == 0), "get_first value check");
57 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 5), "count check");
59 tester
->assert_true(tester
,(linked_list
->get_last(linked_list
,&test_value
) == SUCCESS
), "get_last call check");
60 tester
->assert_true(tester
,(strcmp((char *) test_value
,"one") == 0), "get_last value check");
61 tester
->assert_true(tester
,( linked_list
->get_count(linked_list
) == 5), "count check");
63 tester
->assert_true(tester
,(linked_list
->remove_first(linked_list
,&test_value
) == SUCCESS
), "remove_first call check");
64 tester
->assert_true(tester
,(strcmp((char *) test_value
,"five") == 0), "remove_first value check");
65 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 4), "count check");
67 tester
->assert_true(tester
,(linked_list
->get_first(linked_list
,&test_value
) == SUCCESS
), "get_first call check");
68 tester
->assert_true(tester
,(strcmp((char *) test_value
,"four") == 0), "get_first value check");
69 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 4), "count check");
71 tester
->assert_true(tester
,(linked_list
->get_last(linked_list
,&test_value
) == SUCCESS
), "get_last call check");
72 tester
->assert_true(tester
,(strcmp((char *) test_value
,"one") == 0), "get_last value check");
73 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 4), "count check");
75 tester
->assert_true(tester
,(linked_list
->remove_last(linked_list
,&test_value
) == SUCCESS
), "remove_last call check");
76 tester
->assert_true(tester
,(strcmp((char *) test_value
,"one") == 0), "remove_last value check");
77 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 3), "count check");
79 tester
->assert_true(tester
,(linked_list
->get_last(linked_list
,&test_value
) == SUCCESS
), "get_last call check");
80 tester
->assert_true(tester
,(strcmp((char *) test_value
,"two") == 0), "get_last value check");
81 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 3), "count check");
83 tester
->assert_true(tester
,(linked_list
->get_first(linked_list
,&test_value
) == SUCCESS
), "get_first call check");
84 tester
->assert_true(tester
,(strcmp((char *) test_value
,"four") == 0), "get_first value check");
85 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 3), "count check");
87 tester
->assert_true(tester
,(linked_list
->destroy(linked_list
) == SUCCESS
), "destroy call check");
91 * Description in header-file
93 void test_linked_list_iterator(tester_t
*tester
)
97 linked_list_t
*linked_list
= linked_list_create();
98 linked_list
->insert_first(linked_list
,"one");
99 linked_list
->insert_first(linked_list
,"two");
100 linked_list
->insert_first(linked_list
,"three");
101 linked_list
->insert_first(linked_list
,"four");
102 linked_list
->insert_first(linked_list
,"five");
104 linked_list_iterator_t
* iterator
;
105 linked_list_iterator_t
* iterator2
;
108 tester
->assert_true(tester
,(linked_list
->create_iterator(linked_list
,&iterator
,TRUE
) == SUCCESS
), "create_iterator for it 1 call check");
110 tester
->assert_true(tester
,iterator
->has_next(iterator
), "it 1 has_next value check");
111 iterator
->current(iterator
,&value
);
112 tester
->assert_true(tester
,(strcmp((char *) value
,"five") == 0), "it 1 current value check");
114 tester
->assert_true(tester
,iterator
->has_next(iterator
), "it 1 has_next value check");
115 iterator
->current(iterator
,&value
);
116 tester
->assert_true(tester
,(strcmp((char *) value
,"four") == 0), "it 1 current value check");
118 tester
->assert_true(tester
,(linked_list
->create_iterator(linked_list
,&iterator2
,FALSE
) == SUCCESS
), "create_iterator for it 2 call check");
120 tester
->assert_true(tester
,iterator2
->has_next(iterator2
), "it 2 has_next value check");
121 iterator2
->current(iterator2
,&value
);
122 tester
->assert_true(tester
,(strcmp((char *) value
,"one") == 0), "it 2 current value check");
124 tester
->assert_true(tester
,iterator
->has_next(iterator
), "it 1 has_next value check");
125 iterator
->current(iterator
,&value
);
126 tester
->assert_true(tester
,(strcmp((char *) value
,"three") == 0), "it 1 current value check");
128 tester
->assert_true(tester
,iterator2
->has_next(iterator2
), "it 2 has_next value check");
129 iterator2
->current(iterator2
,&value
);
130 tester
->assert_true(tester
,(strcmp((char *) value
,"two") == 0), "it 2 current value check");
132 tester
->assert_true(tester
,iterator
->has_next(iterator
), "it 1 has_next value check");
133 iterator
->current(iterator
,&value
);
134 tester
->assert_true(tester
,(strcmp((char *) value
,"two") == 0), "it 1 current value check");
136 tester
->assert_true(tester
,iterator2
->has_next(iterator2
), "it 2 has_next value check");
137 iterator2
->current(iterator2
,&value
);
138 tester
->assert_true(tester
,(strcmp((char *) value
,"three") == 0), "it 2 current value check");
140 tester
->assert_true(tester
,iterator
->has_next(iterator
), "it 1 has_next value check");
141 iterator
->current(iterator
,&value
);
142 tester
->assert_true(tester
,(strcmp((char *) value
,"one") == 0), "it 1 current value check");
144 tester
->assert_false(tester
,iterator
->has_next(iterator
), "it 1 has_next value check");
146 tester
->assert_true(tester
,iterator2
->has_next(iterator2
), "it 2 has_next value check");
147 tester
->assert_true(tester
,iterator2
->has_next(iterator2
), "it 2 has_next value check");
148 tester
->assert_false(tester
,iterator2
->has_next(iterator2
), "it 2 has_next value check");
150 tester
->assert_true(tester
,(iterator
->destroy(iterator
) == SUCCESS
), "it 1 destroy call check");
152 tester
->assert_true(tester
,(iterator2
->destroy(iterator2
) == SUCCESS
), "it 2 destroy call check");
154 linked_list
->destroy(linked_list
);
158 * Description in header-file
160 void test_linked_list_insert_and_remove(tester_t
*tester
)
163 linked_list_iterator_t
* iterator
;
165 linked_list_t
*linked_list
= linked_list_create();
166 linked_list
->insert_first(linked_list
,"one");
167 linked_list
->insert_first(linked_list
,"two");
169 linked_list
->insert_first(linked_list
,"three");
170 linked_list
->insert_first(linked_list
,"four");
171 linked_list
->insert_first(linked_list
,"five");
175 linked_list
->create_iterator(linked_list
,&iterator
,TRUE
);
177 iterator
->has_next(iterator
);
178 iterator
->has_next(iterator
);
179 iterator
->has_next(iterator
);
180 iterator
->current(iterator
,&value
);
181 tester
->assert_true(tester
,(strcmp((char *) value
,"three") == 0), "current value check");
183 tester
->assert_true(tester
,(iterator
->insert_before(iterator
,"before_three") == SUCCESS
), "insert_before call check");
184 iterator
->current(iterator
,&value
);
185 tester
->assert_true(tester
,(strcmp((char *) value
,"three") == 0), "current value check");
188 tester
->assert_true(tester
,(iterator
->insert_after(iterator
,"after_three") == SUCCESS
), "insert_after call check");
189 iterator
->current(iterator
,&value
);
190 tester
->assert_true(tester
,(strcmp((char *) value
,"three") == 0), "current value check");
193 tester
->assert_true(tester
,(iterator
->remove(iterator
) == SUCCESS
), "remove call check");
194 iterator
->current(iterator
,&value
);
195 tester
->assert_true(tester
,(strcmp((char *) value
,"before_three") == 0), "current value check");
197 iterator
->reset(iterator
);
199 iterator
->has_next(iterator
);
200 iterator
->has_next(iterator
);
201 iterator
->has_next(iterator
);
202 iterator
->current(iterator
,&value
);
203 tester
->assert_true(tester
,(strcmp((char *) value
,"before_three") == 0), "current value check");
204 iterator
->has_next(iterator
);
205 iterator
->current(iterator
,&value
);
206 tester
->assert_true(tester
,(strcmp((char *) value
,"after_three") == 0), "current value check");
208 iterator
->destroy(iterator
);
210 linked_list
->destroy(linked_list
);