test(tree): add random insert test
							parent
							
								
									a6ed89d8cd
								
							
						
					
					
						commit
						d9402ced54
					
				|  | @ -0,0 +1,59 @@ | |||
| #include "acutest.h" | ||||
| #include "vieter_tree_internal.h" | ||||
| 
 | ||||
| #define TEST_SIZE(tree, size) \ | ||||
|     TEST_CHECK(vieter_tree_size(tree) == size); \ | ||||
|     TEST_MSG("Size: %zu", vieter_tree_size(tree)) | ||||
| 
 | ||||
| int uint64_t_compare(const void *a, const void *b) { | ||||
|     if ((*(uint64_t *)a) < (*(uint64_t *)b)) { | ||||
|         return -1; | ||||
|     } else if ((*(uint64_t *)a) > (*(uint64_t *)b)) { | ||||
|         return 1; | ||||
|     } else { | ||||
|         return 0; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void test_insert_random() { | ||||
|     const uint64_t n = 1000; | ||||
|     srand(0); | ||||
| 
 | ||||
|     vieter_tree *tree = vieter_tree_init(); | ||||
| 
 | ||||
|     uint64_t *numbers = malloc(n * sizeof(uint64_t)); | ||||
|     uint64_t num; | ||||
|     void *out = NULL; | ||||
| 
 | ||||
|     for (uint64_t i = 0; i < n; i++) { | ||||
|         num = rand(); | ||||
|         vieter_tree_insert(tree, num, (void *)num); | ||||
|         TEST_SIZE(tree, i + 1); | ||||
|         TEST_CHECK(vieter_tree_validate(tree)); | ||||
|         TEST_CHECK(vieter_tree_search(&out, tree, num) == vieter_tree_ok); | ||||
|         TEST_CHECK(out == (void *)num); | ||||
| 
 | ||||
|         out = NULL; | ||||
| 
 | ||||
|         numbers[i] = num; | ||||
|     } | ||||
| 
 | ||||
|     qsort(numbers, n, sizeof(uint64_t), uint64_t_compare); | ||||
| 
 | ||||
|     vieter_tree_iterator *iter = vieter_tree_iterator_from(tree); | ||||
|     out = NULL; | ||||
| 
 | ||||
|     for (uint64_t i = 0; i < n; i++) { | ||||
|         TEST_CHECK(vieter_tree_iterator_next(&out, iter) == vieter_tree_ok); | ||||
|         TEST_CHECK(out == (void *)numbers[i]); | ||||
|     } | ||||
| 
 | ||||
|     free(numbers); | ||||
|     vieter_tree_iterator_free(&iter); | ||||
|     vieter_tree_free(tree); | ||||
| } | ||||
| 
 | ||||
| TEST_LIST = { | ||||
|     {"tree insert random", test_insert_random}, | ||||
|     {NULL, NULL} | ||||
| }; | ||||
		Loading…
	
		Reference in New Issue