]>
git.ipfire.org Git - people/ms/strongswan.git/blob - Source/testing/linked_list_test.c
2 * @file linked_list_test.c
4 * @brief Tests for the linked_list_t class.
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(protected_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
->get_at_position(linked_list
,0,&test_value
) == SUCCESS
), "get_at_position call check");
76 tester
->assert_true(tester
,(strcmp((char *) test_value
,"four") == 0), "get_at_position value check");
78 tester
->assert_true(tester
,(linked_list
->get_at_position(linked_list
,1,&test_value
) == SUCCESS
), "get_at_position call check");
79 tester
->assert_true(tester
,(strcmp((char *) test_value
,"three") == 0), "get_at_position value check");
81 tester
->assert_true(tester
,(linked_list
->get_at_position(linked_list
,2,&test_value
) == SUCCESS
), "get_at_position call check");
82 tester
->assert_true(tester
,(strcmp((char *) test_value
,"two") == 0), "get_at_position value check");
84 tester
->assert_true(tester
,(linked_list
->get_at_position(linked_list
,3,&test_value
) == SUCCESS
), "get_at_position call check");
85 tester
->assert_true(tester
,(strcmp((char *) test_value
,"one") == 0), "get_at_position value check");
87 tester
->assert_false(tester
,(linked_list
->get_at_position(linked_list
,4,&test_value
) == SUCCESS
), "get_at_position call check");
88 tester
->assert_false(tester
,(linked_list
->remove_at_position(linked_list
,4,&test_value
) == SUCCESS
), "remove_at_position call check");
89 tester
->assert_false(tester
,(linked_list
->insert_at_position(linked_list
,5,test_value
) == SUCCESS
), "insert_at_position call 1 check");
91 tester
->assert_true(tester
,(linked_list
->insert_at_position(linked_list
,3,"six") == SUCCESS
), "insert_at_position call 2 check");
92 tester
->assert_true(tester
,(linked_list
->insert_at_position(linked_list
,3,"seven") == SUCCESS
), "insert_at_position call 3 check");
94 tester
->assert_true(tester
,(linked_list
->get_at_position(linked_list
,3,&test_value
) == SUCCESS
), "get_at_position call check");
95 tester
->assert_true(tester
,(strcmp((char *) test_value
,"seven") == 0), "get_at_position value 1 check");
97 tester
->assert_true(tester
,(linked_list
->get_at_position(linked_list
,4,&test_value
) == SUCCESS
), "get_at_position call check");
98 tester
->assert_true(tester
,(strcmp((char *) test_value
,"six") == 0), "get_at_position value 2 check");
100 tester
->assert_true(tester
,(linked_list
->get_at_position(linked_list
,5,&test_value
) == SUCCESS
), "get_at_position call check");
101 tester
->assert_true(tester
,(strcmp((char *) test_value
,"one") == 0), "get_at_position value 3 check");
103 tester
->assert_true(tester
,(linked_list
->remove_at_position(linked_list
,3,&test_value
) == SUCCESS
), "remove_at_position call check");
104 tester
->assert_true(tester
,(linked_list
->remove_at_position(linked_list
,3,&test_value
) == SUCCESS
), "remove_at_position call check");
107 tester
->assert_true(tester
,(linked_list
->remove_last(linked_list
,&test_value
) == SUCCESS
), "remove_last call check");
108 tester
->assert_true(tester
,(strcmp((char *) test_value
,"one") == 0), "remove_last value check");
109 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 3), "count check");
111 tester
->assert_true(tester
,(linked_list
->get_last(linked_list
,&test_value
) == SUCCESS
), "get_last call check");
112 tester
->assert_true(tester
,(strcmp((char *) test_value
,"two") == 0), "get_last value check");
113 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 3), "count check");
115 tester
->assert_true(tester
,(linked_list
->get_first(linked_list
,&test_value
) == SUCCESS
), "get_first call check");
116 tester
->assert_true(tester
,(strcmp((char *) test_value
,"four") == 0), "get_first value check");
117 tester
->assert_true(tester
,(linked_list
->get_count(linked_list
) == 3), "count check");
119 linked_list
->destroy(linked_list
);
123 * Description in header-file
125 void test_linked_list_iterator(protected_tester_t
*tester
)
129 linked_list_t
*linked_list
= linked_list_create();
130 linked_list
->insert_first(linked_list
,"one");
131 linked_list
->insert_first(linked_list
,"two");
132 linked_list
->insert_first(linked_list
,"three");
133 linked_list
->insert_first(linked_list
,"four");
134 linked_list
->insert_first(linked_list
,"five");
136 iterator_t
* iterator
;
137 iterator_t
* iterator2
;
140 iterator
= linked_list
->create_iterator(linked_list
,TRUE
);
142 tester
->assert_true(tester
,iterator
->has_next(iterator
), "it 1 has_next value check");
143 iterator
->current(iterator
,&value
);
144 tester
->assert_true(tester
,(strcmp((char *) value
,"five") == 0), "it 1 current value check");
146 tester
->assert_true(tester
,iterator
->has_next(iterator
), "it 1 has_next value check");
147 iterator
->current(iterator
,&value
);
148 tester
->assert_true(tester
,(strcmp((char *) value
,"four") == 0), "it 1 current value check");
150 iterator2
= linked_list
->create_iterator(linked_list
,FALSE
);
152 tester
->assert_true(tester
,iterator2
->has_next(iterator2
), "it 2 has_next value check");
153 iterator2
->current(iterator2
,&value
);
154 tester
->assert_true(tester
,(strcmp((char *) value
,"one") == 0), "it 2 current value check");
156 tester
->assert_true(tester
,iterator
->has_next(iterator
), "it 1 has_next value check");
157 iterator
->current(iterator
,&value
);
158 tester
->assert_true(tester
,(strcmp((char *) value
,"three") == 0), "it 1 current value check");
160 tester
->assert_true(tester
,iterator2
->has_next(iterator2
), "it 2 has_next value check");
161 iterator2
->current(iterator2
,&value
);
162 tester
->assert_true(tester
,(strcmp((char *) value
,"two") == 0), "it 2 current value check");
164 tester
->assert_true(tester
,iterator
->has_next(iterator
), "it 1 has_next value check");
165 iterator
->current(iterator
,&value
);
166 tester
->assert_true(tester
,(strcmp((char *) value
,"two") == 0), "it 1 current value check");
168 tester
->assert_true(tester
,iterator2
->has_next(iterator2
), "it 2 has_next value check");
169 iterator2
->current(iterator2
,&value
);
170 tester
->assert_true(tester
,(strcmp((char *) value
,"three") == 0), "it 2 current value check");
172 tester
->assert_true(tester
,iterator
->has_next(iterator
), "it 1 has_next value check");
173 iterator
->current(iterator
,&value
);
174 tester
->assert_true(tester
,(strcmp((char *) value
,"one") == 0), "it 1 current value check");
176 tester
->assert_false(tester
,iterator
->has_next(iterator
), "it 1 has_next value check");
178 tester
->assert_true(tester
,iterator2
->has_next(iterator2
), "it 2 has_next value check");
179 tester
->assert_true(tester
,iterator2
->has_next(iterator2
), "it 2 has_next value check");
180 tester
->assert_false(tester
,iterator2
->has_next(iterator2
), "it 2 has_next value check");
182 iterator
->destroy(iterator
);
183 iterator2
->destroy(iterator2
);
184 linked_list
->destroy(linked_list
);
188 * Description in header-file
190 void test_linked_list_insert_and_remove(protected_tester_t
*tester
)
193 iterator_t
* iterator
;
195 linked_list_t
*linked_list
= linked_list_create();
196 linked_list
->insert_first(linked_list
,"one");
197 linked_list
->insert_first(linked_list
,"two");
199 linked_list
->insert_first(linked_list
,"three");
200 linked_list
->insert_first(linked_list
,"four");
201 linked_list
->insert_first(linked_list
,"five");
205 iterator
= linked_list
->create_iterator(linked_list
,TRUE
);
207 iterator
->has_next(iterator
);
208 iterator
->has_next(iterator
);
209 iterator
->has_next(iterator
);
210 iterator
->current(iterator
,&value
);
211 tester
->assert_true(tester
,(strcmp((char *) value
,"three") == 0), "current value check");
213 iterator
->insert_before(iterator
,"before_three");
214 iterator
->current(iterator
,&value
);
215 tester
->assert_true(tester
,(strcmp((char *) value
,"three") == 0), "current value check");
218 iterator
->insert_after(iterator
,"after_three");
219 iterator
->current(iterator
,&value
);
220 tester
->assert_true(tester
,(strcmp((char *) value
,"three") == 0), "current value check");
223 tester
->assert_true(tester
,(iterator
->remove(iterator
) == SUCCESS
), "remove call check");
224 iterator
->current(iterator
,&value
);
225 tester
->assert_true(tester
,(strcmp((char *) value
,"before_three") == 0), "current value check");
227 iterator
->reset(iterator
);
229 iterator
->has_next(iterator
);
230 iterator
->has_next(iterator
);
231 iterator
->has_next(iterator
);
232 iterator
->current(iterator
,&value
);
233 tester
->assert_true(tester
,(strcmp((char *) value
,"before_three") == 0), "current value check");
234 iterator
->has_next(iterator
);
235 iterator
->current(iterator
,&value
);
236 tester
->assert_true(tester
,(strcmp((char *) value
,"after_three") == 0), "current value check");
238 iterator
->destroy(iterator
);
240 linked_list
->destroy(linked_list
);