]> git.ipfire.org Git - people/ms/strongswan.git/blame - Source/charon/testcases/linked_list_test.c
- removed memory allocation checks!!!
[people/ms/strongswan.git] / Source / charon / testcases / linked_list_test.c
CommitLineData
5ea75511
JH
1/**
2 * @file linked_list_test.c
3 *
4 * @brief Tests to test the Linked List type linked_list_t
5 *
6 */
7
8/*
9 * Copyright (C) 2005 Jan Hutter, Martin Willi
10 * Hochschule fuer Technik Rapperswil
11 *
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>.
16 *
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
20 * for more details.
21 */
22
23#include <string.h>
88878242
MW
24
25#include "linked_list_test.h"
5ea75511 26
94852e75 27#include <utils/linked_list.h>
5ea75511
JH
28
29 /*
30 * Description in header-file
31 */
32void test_linked_list(tester_t *tester)
33{
34 void *test_value = NULL;
35
36 linked_list_t *linked_list = linked_list_create();
1061c878
JH
37
38 tester->assert_true(tester,(linked_list->get_count(linked_list) == 0), "count check");
5ea75511
JH
39
40 linked_list->insert_first(linked_list,"one");
1061c878 41 tester->assert_true(tester,(linked_list->get_count(linked_list) == 1), "count check");
5ea75511
JH
42
43 linked_list->insert_first(linked_list,"two");
1061c878 44 tester->assert_true(tester,(linked_list->get_count(linked_list) == 2), "count check");
5ea75511
JH
45
46 linked_list->insert_first(linked_list,"three");
1061c878 47 tester->assert_true(tester,(linked_list->get_count(linked_list) == 3), "count check");
5ea75511
JH
48
49 linked_list->insert_first(linked_list,"four");
1061c878 50 tester->assert_true(tester,(linked_list->get_count(linked_list) == 4), "count check");
5ea75511
JH
51
52 linked_list->insert_first(linked_list,"five");
1061c878 53 tester->assert_true(tester,(linked_list->get_count(linked_list) == 5), "count check");
5ea75511
JH
54
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");
1061c878 57 tester->assert_true(tester,(linked_list->get_count(linked_list) == 5), "count check");
5ea75511
JH
58
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");
1061c878 61 tester->assert_true(tester,( linked_list->get_count(linked_list) == 5), "count check");
7c2228f1 62
5ea75511
JH
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");
1061c878 65 tester->assert_true(tester,(linked_list->get_count(linked_list) == 4), "count check");
5ea75511
JH
66
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");
1061c878 69 tester->assert_true(tester,(linked_list->get_count(linked_list) == 4), "count check");
5ea75511
JH
70
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");
1061c878 73 tester->assert_true(tester,(linked_list->get_count(linked_list) == 4), "count check");
5ea75511
JH
74
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");
1061c878 77 tester->assert_true(tester,(linked_list->get_count(linked_list) == 3), "count check");
5ea75511
JH
78
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");
1061c878 81 tester->assert_true(tester,(linked_list->get_count(linked_list) == 3), "count check");
5ea75511
JH
82
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");
1061c878 85 tester->assert_true(tester,(linked_list->get_count(linked_list) == 3), "count check");
5ea75511
JH
86
87 tester->assert_true(tester,(linked_list->destroy(linked_list) == SUCCESS), "destroy call check");
88}
7c2228f1
JH
89
90 /*
91 * Description in header-file
92 */
bfdc5c7c 93void test_linked_list_iterator(tester_t *tester)
7c2228f1 94{
e3dd1393
JH
95 void * value;
96
7c2228f1
JH
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");
103
bdb141cb
MW
104 iterator_t * iterator;
105 iterator_t * iterator2;
7c2228f1
JH
106
107
bfdc5c7c 108 tester->assert_true(tester,(linked_list->create_iterator(linked_list,&iterator,TRUE) == SUCCESS), "create_iterator for it 1 call check");
7c2228f1 109
e3dd1393
JH
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");
7c2228f1 113
e3dd1393
JH
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");
bfdc5c7c
JH
117
118 tester->assert_true(tester,(linked_list->create_iterator(linked_list,&iterator2,FALSE) == SUCCESS), "create_iterator for it 2 call check");
119
e3dd1393
JH
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");
123
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");
127
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");
131
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");
135
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");
139
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");
143
144 tester->assert_false(tester,iterator->has_next(iterator), "it 1 has_next value check");
145
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");
7c2228f1 149
bfdc5c7c
JH
150 tester->assert_true(tester,(iterator->destroy(iterator) == SUCCESS), "it 1 destroy call check");
151
152 tester->assert_true(tester,(iterator2->destroy(iterator2) == SUCCESS), "it 2 destroy call check");
153
154 linked_list->destroy(linked_list);
155}
156
157 /*
158 * Description in header-file
159 */
160void test_linked_list_insert_and_remove(tester_t *tester)
161{
e3dd1393 162 void *value;
bdb141cb 163 iterator_t * iterator;
bfdc5c7c
JH
164
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");
168
169 linked_list->insert_first(linked_list,"three");
170 linked_list->insert_first(linked_list,"four");
171 linked_list->insert_first(linked_list,"five");
172
173
174
175 linked_list->create_iterator(linked_list,&iterator,TRUE);
176
e3dd1393
JH
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");
bfdc5c7c 182
294faf7b 183 tester->assert_true(tester,(iterator->insert_before(iterator,"before_three") == SUCCESS), "insert_before call check");
e3dd1393
JH
184 iterator->current(iterator,&value);
185 tester->assert_true(tester,(strcmp((char *) value,"three") == 0), "current value check");
bfdc5c7c 186
e3dd1393 187
294faf7b 188 tester->assert_true(tester,(iterator->insert_after(iterator,"after_three") == SUCCESS), "insert_after call check");
e3dd1393
JH
189 iterator->current(iterator,&value);
190 tester->assert_true(tester,(strcmp((char *) value,"three") == 0), "current value check");
191
bfdc5c7c 192
12c3e4c8 193 tester->assert_true(tester,(iterator->remove(iterator) == SUCCESS), "remove call check");
e3dd1393
JH
194 iterator->current(iterator,&value);
195 tester->assert_true(tester,(strcmp((char *) value,"before_three") == 0), "current value check");
bfdc5c7c
JH
196
197 iterator->reset(iterator);
198
e3dd1393
JH
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");
bfdc5c7c
JH
207
208 iterator->destroy(iterator);
7c2228f1
JH
209
210 linked_list->destroy(linked_list);
211}