@@ -131,7 +131,7 @@ void test_avltree_new(void)
131
131
{
132
132
AVLTree * tree ;
133
133
134
- tree = avltree_new (int_compare );
134
+ tree = avltree_new (( AVLTreeCompareFunc ) int_compare );
135
135
136
136
assert (tree != NULL );
137
137
assert (avltree_root_node (tree ) == NULL );
@@ -147,7 +147,7 @@ void test_avltree_insert_lookup(void)
147
147
/* Create a tree containing some values. Validate the
148
148
* tree is consistent at all stages. */
149
149
150
- tree = avltree_new (int_compare );
150
+ tree = avltree_new (( AVLTreeCompareFunc ) int_compare );
151
151
152
152
for (i = 0 ; i < 1000 ; ++ i ) {
153
153
key = (int * ) malloc (sizeof (int ));
@@ -166,45 +166,84 @@ void test_avltree_insert_lookup(void)
166
166
node = avltree_lookup_node (tree , & i );
167
167
assert (node != NULL );
168
168
}
169
+
170
+ /* Check that invalid nodes are not found */
171
+
172
+ i = -1 ;
173
+ assert (avltree_lookup_node (tree , & i ) == NULL );
174
+ i = 100000 ;
175
+ assert (avltree_lookup_node (tree , & i ) == NULL );
169
176
}
170
177
171
- void test_avltree_remove (void )
178
+ AVLTree * create_tree (void )
172
179
{
173
180
AVLTree * tree ;
174
- AVLTreeNode * node ;
175
- int i ;
176
181
int * key ;
182
+ int i ;
177
183
178
184
/* Create a tree and fill with nodes */
179
185
180
- tree = avltree_new (int_compare );
186
+ tree = avltree_new (( AVLTreeCompareFunc ) int_compare );
181
187
182
188
for (i = 0 ; i < 1000 ; ++ i ) {
183
189
key = (int * ) malloc (sizeof (int ));
184
190
* key = i ;
185
191
186
192
avltree_insert (tree , key , NULL );
187
-
188
- validate_tree (tree );
189
193
}
194
+
195
+ return tree ;
196
+ }
197
+
198
+ void test_avltree_free (void )
199
+ {
200
+ AVLTree * tree ;
201
+
202
+ /* Try freeing an empty tree */
203
+
204
+ tree = avltree_new ((AVLTreeCompareFunc ) int_compare );
205
+ avltree_free (tree );
206
+
207
+ /* Create a big tree and free it */
190
208
209
+ tree = create_tree ();
210
+ avltree_free (tree );
211
+ }
212
+
213
+ void test_avltree_remove (void )
214
+ {
215
+ AVLTree * tree ;
216
+ int i ;
217
+
218
+ tree = create_tree ();
219
+
220
+ /* Try removing invalid entries */
221
+
222
+ i = 100000 ;
223
+ assert (avltree_remove (tree , & i ) == 0 );
224
+ i = -1 ;
225
+ assert (avltree_remove (tree , & i ) == 0 );
191
226
192
227
/* Delete the nodes from the tree */
193
228
194
229
for (i = 0 ; i < 1000 ; ++ i ) {
195
- node = avltree_lookup_node (tree , & i );
196
-
197
- assert (node != NULL );
230
+ /* Remove this entry */
198
231
199
- avltree_remove_node ( tree , node );
232
+ assert ( avltree_remove ( tree , & i ) != 0 );
200
233
201
234
validate_tree (tree );
202
235
}
236
+
237
+ /* All entries removed, should be empty now */
238
+
239
+ assert (avltree_root_node (tree ) == NULL );
240
+
203
241
}
204
242
205
243
int main (int argc , char * argv [])
206
244
{
207
245
test_avltree_new ();
246
+ test_avltree_free ();
208
247
test_avltree_insert_lookup ();
209
248
test_avltree_remove ();
210
249
0 commit comments