6 static void test_list_sl_new();
7 static void test_node_sl_new();
8 static void test_list_sl_add_beg();
9 static void test_list_sl_add_after();
10 static void test_list_sl_remove_beg();
11 static void test_list_sl_remove_after();
12 static void test_list_sl_print();
13 static void test_list_sl_destroy();
15 static void test_list_dl_new();
16 static void test_node_dl_new();
17 static void test_list_dl_add_beg();
18 static void test_list_dl_add_end();
19 static void test_list_dl_add_before();
20 static void test_list_dl_add_after();
21 static void test_list_dl_remove();
22 static void test_list_dl_print();
23 static void test_list_dl_destroy();
28 fprintf( stderr, "Running all tests for list.c\n" );
32 test_list_sl_add_beg();
33 test_list_sl_add_after();
34 test_list_sl_remove_beg();
35 test_list_sl_remove_after();
37 test_list_sl_destroy();
41 test_list_dl_add_beg();
42 test_list_dl_add_end();
43 test_list_dl_add_before();
44 test_list_dl_add_after();
45 test_list_dl_remove();
47 test_list_dl_destroy();
49 fprintf( stderr, "Done\n\n" );
55 /* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> SINGLY LINKED LIST <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< */
58 void test_list_sl_new()
60 fprintf( stderr, " Testing list_sl_new ... " );
66 assert( list != NULL );
67 assert( list->first == NULL );
69 fprintf( stderr, "OK\n" );
73 void test_node_sl_new()
75 fprintf( stderr, " Testing node_sl_new ... " );
81 assert( node != NULL );
82 assert( node->next == NULL );
83 assert( node->val == NULL );
85 fprintf( stderr, "OK\n" );
89 void test_list_sl_add_beg()
91 fprintf( stderr, " Testing list_sl_add_beg ... " );
93 char *array[3] = { "test1", "test2", "test3" };
100 for ( i = 0; i < 3; i++ )
102 node = node_sl_new();
104 node->val = array[ i ];
106 list_sl_add_beg( &list, &node );
111 for ( node = list->first; node != NULL; node = node->next )
113 assert( strcmp( array[ i ], ( char * ) node->val ) == 0 );
118 fprintf( stderr, "OK\n" );
122 void test_list_sl_add_after()
124 fprintf( stderr, " Testing list_sl_add_after ... " );
126 char *array[3] = { "test1", "test2", "test3" };
127 list_sl *list = NULL;
128 node_sl *node = NULL;
129 node_sl *new_node = NULL;
132 list = list_sl_new();
133 new_node = node_sl_new();
135 new_node->val = array[ 0 ];
137 list_sl_add_beg( &list, &new_node );
141 for ( i = 1; i < 3; i++ )
143 new_node = node_sl_new();
145 new_node->val = array[ i ];
147 list_sl_add_after( &node, &new_node );
154 for ( node = list->first; node != NULL; node = node->next )
156 assert( strcmp( array[ i ], ( char * ) node->val ) == 0 );
161 fprintf( stderr, "OK\n" );
165 void test_list_sl_remove_beg()
167 fprintf( stderr, " Testing list_sl_remove_beg ... " );
169 char *array[3] = { "test1", "test2", "test3" };
170 list_sl *list = NULL;
171 node_sl *node = NULL;
172 node_sl *new_node = NULL;
175 list = list_sl_new();
176 new_node = node_sl_new();
178 new_node->val = array[ 0 ];
180 list_sl_add_beg( &list, &new_node );
184 for ( i = 1; i < 3; i++ )
186 new_node = node_sl_new();
188 new_node->val = array[ i ];
190 list_sl_add_after( &node, &new_node );
199 while ( node != NULL )
201 assert( strcmp( ( char * ) node->val, array[ i ] ) == 0 );
203 list_sl_remove_beg( &list );
210 fprintf( stderr, "OK\n" );
214 void test_list_sl_remove_after()
216 fprintf( stderr, " Testing list_sl_remove_after ... " );
218 char *array[3] = { "test1", "test2", "test3" };
219 list_sl *list = NULL;
220 node_sl *node = NULL;
221 node_sl *new_node = NULL;
224 list = list_sl_new();
225 new_node = node_sl_new();
227 new_node->val = array[ 0 ];
229 list_sl_add_beg( &list, &new_node );
233 for ( i = 1; i < 3; i++ )
235 new_node = node_sl_new();
237 new_node->val = array[ i ];
239 list_sl_add_after( &node, &new_node );
244 assert( strcmp( ( char * ) list->first->next->val, "test2" ) == 0 );
246 list_sl_remove_after( &list->first );
248 assert( strcmp( ( char * ) list->first->next->val, "test3" ) == 0 );
250 fprintf( stderr, "OK\n" );
254 void test_list_sl_print()
256 fprintf( stderr, " Testing list_sl_print ... " );
258 list_sl *list = NULL;
259 node_sl *node1 = NULL;
260 node_sl *node2 = NULL;
261 node_sl *node3 = NULL;
263 list = list_sl_new();
265 node1 = node_sl_new();
266 node2 = node_sl_new();
267 node3 = node_sl_new();
269 node1->val = "TEST1";
270 node2->val = "TEST2";
271 node3->val = "TEST3";
273 list_sl_add_beg( &list, &node1 );
274 list_sl_add_beg( &list, &node2 );
275 list_sl_add_beg( &list, &node3 );
277 // list_sl_print( list );
279 fprintf( stderr, "OK\n" );
283 void test_list_sl_destroy()
285 fprintf( stderr, " Testing list_sl_destroy ... " );
287 char *array[3] = { "test1", "test2", "test3" };
288 list_sl *list = NULL;
289 node_sl *node = NULL;
292 list = list_sl_new();
294 for ( i = 0; i < 3; i++ )
296 node = node_sl_new();
298 node->val = array[ i ];
300 list_sl_add_beg( &list, &node );
303 list_sl_destroy( &list );
305 assert( list == NULL );
307 fprintf( stderr, "OK\n" );
311 /* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DOUBLY LINKED LIST <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< */
314 void test_list_dl_new()
316 fprintf( stderr, " Testing list_dl_new ... " );
318 list_dl *list = NULL;
320 list = list_dl_new();
322 assert( list->first == NULL );
323 assert( list->last == NULL );
325 fprintf( stderr, "OK\n" );
329 void test_node_dl_new()
331 fprintf( stderr, " Testing node_dl_new ... " );
333 node_dl *node = NULL;
335 node = node_dl_new();
337 assert( node->next == NULL );
338 assert( node->prev == NULL );
339 assert( node->val == NULL );
341 fprintf( stderr, "OK\n" );
345 void test_list_dl_add_beg()
347 fprintf( stderr, " Testing list_dl_add_beg ... " );
349 list_dl *list = list_dl_new();
350 node_dl *node1 = node_dl_new();
351 node_dl *node2 = node_dl_new();
352 node_dl *node3 = node_dl_new();
354 node1->val = "TEST1";
355 node2->val = "TEST2";
356 node3->val = "TEST3";
358 list_dl_add_beg( &list, &node1 );
360 assert( strcmp( list->first->val, "TEST1" ) == 0 );
362 list_dl_add_beg( &list, &node2 );
364 assert( strcmp( list->first->val, "TEST2" ) == 0 );
366 list_dl_add_beg( &list, &node3 );
368 assert( strcmp( list->first->val, "TEST3" ) == 0 );
370 fprintf( stderr, "OK\n" );
374 void test_list_dl_add_end()
376 fprintf( stderr, " Testing list_dl_add_end ... " );
378 list_dl *list = list_dl_new();
379 node_dl *node1 = node_dl_new();
380 node_dl *node2 = node_dl_new();
381 node_dl *node3 = node_dl_new();
383 node1->val = "TEST1";
384 node2->val = "TEST2";
385 node3->val = "TEST3";
387 list_dl_add_end( &list, &node1 );
389 assert( strcmp( list->last->val, "TEST1" ) == 0 );
391 list_dl_add_end( &list, &node2 );
393 assert( strcmp( list->last->val, "TEST2" ) == 0 );
395 list_dl_add_end( &list, &node3 );
397 assert( strcmp( list->last->val, "TEST3" ) == 0 );
399 fprintf( stderr, "OK\n" );
403 void test_list_dl_add_before()
405 fprintf( stderr, " Testing list_dl_add_before ... " );
407 list_dl *list = list_dl_new();
408 node_dl *node1 = node_dl_new();
409 node_dl *node2 = node_dl_new();
410 node_dl *node3 = node_dl_new();
412 node1->val = "TEST1";
413 node2->val = "TEST2";
414 node3->val = "TEST3";
416 list_dl_add_beg( &list, &node1 );
418 assert( strcmp( list->first->val, "TEST1" ) == 0 );
420 list_dl_add_before( &list, &node1, &node2 );
422 assert( strcmp( list->first->val, "TEST2" ) == 0 );
424 list_dl_add_before( &list, &node1, &node3 );
426 assert( strcmp( list->first->val, "TEST2" ) == 0 );
428 list_dl_add_before( &list, &node2, &node3 );
430 assert( strcmp( list->first->val, "TEST3" ) == 0 );
432 fprintf( stderr, "OK\n" );
436 void test_list_dl_add_after()
438 fprintf( stderr, " Testing list_dl_add_after ... " );
440 list_dl *list = list_dl_new();
441 node_dl *node1 = node_dl_new();
442 node_dl *node2 = node_dl_new();
443 node_dl *node3 = node_dl_new();
445 node1->val = "TEST1";
446 node2->val = "TEST2";
447 node3->val = "TEST3";
449 list_dl_add_beg( &list, &node1 );
451 assert( strcmp( list->first->val, "TEST1" ) == 0 );
453 list_dl_add_after( &list, &node1, &node2 );
455 assert( strcmp( list->last->val, "TEST2" ) == 0 );
457 list_dl_add_after( &list, &node1, &node3 );
459 assert( strcmp( list->last->val, "TEST2" ) == 0 );
461 list_dl_add_after( &list, &node2, &node3 );
463 assert( strcmp( list->last->val, "TEST3" ) == 0 );
465 fprintf( stderr, "OK\n" );
469 void test_list_dl_remove()
471 fprintf( stderr, " Testing list_dl_remove ... " );
473 list_dl *list = list_dl_new();
474 node_dl *node1 = node_dl_new();
475 node_dl *node2 = node_dl_new();
476 node_dl *node3 = node_dl_new();
478 node1->val = "TEST1";
479 node2->val = "TEST2";
480 node3->val = "TEST3";
482 list_dl_add_beg( &list, &node1 );
484 list_dl_add_after( &list, &node1, &node2 );
485 list_dl_add_after( &list, &node2, &node3 );
487 list_dl_remove( &list, &node3 );
488 assert( strcmp( list->last->val, "TEST2" ) == 0 );
490 list_dl_remove( &list, &node2 );
491 assert( strcmp( list->last->val, "TEST1" ) == 0 );
493 list_dl_remove( &list, &node1 );
495 assert( list->first == NULL );
496 assert( list->last == NULL );
498 fprintf( stderr, "OK\n" );
502 void test_list_dl_print()
504 fprintf( stderr, " Testing list_dl_print ... " );
506 list_dl *list = list_dl_new();
507 node_dl *node1 = node_dl_new();
508 node_dl *node2 = node_dl_new();
509 node_dl *node3 = node_dl_new();
511 node1->val = "TEST1";
512 node2->val = "TEST2";
513 node3->val = "TEST3";
515 list_dl_add_beg( &list, &node1 );
516 list_dl_add_beg( &list, &node2 );
517 list_dl_add_beg( &list, &node3 );
519 // list_dl_print( list );
521 fprintf( stderr, "OK\n" );
525 void test_list_dl_destroy()
527 fprintf( stderr, " Testing list_dl_destroy ... " );
529 list_dl *list = list_dl_new();
530 node_dl *node1 = node_dl_new();
531 node_dl *node2 = node_dl_new();
532 node_dl *node3 = node_dl_new();
534 node1->val = "TEST1";
535 node2->val = "TEST2";
536 node3->val = "TEST3";
538 list_dl_add_beg( &list, &node1 );
539 list_dl_add_beg( &list, &node2 );
540 list_dl_add_beg( &list, &node3 );
542 // list_dl_print( list );
544 list_dl_destroy( &list );
546 assert( list == NULL );
548 fprintf( stderr, "OK\n" );
552 /* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< */