test_dict.c (1955B)
1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <assert.h> 4 #include "dict.h" 5 6 static void test_dict_init() { 7 size_t i; 8 dict_t d; 9 dict_init_size(&d, 20); 10 11 assert(d.nalloc == 20); 12 assert(d.nelts == 0); 13 assert(d.keys != NULL); 14 assert(d.values != NULL); 15 assert(d.nvalues != NULL); 16 assert(d.value_alloc != NULL); 17 18 for (i = 0; i < d.nalloc; i++) { 19 assert(d.nvalues[i] == 0); 20 assert(d.value_alloc[i] == 0); 21 assert(d.keys[i] == NULL); 22 assert(d.values[i] == NULL); 23 } 24 25 dict_clear(&d); 26 27 dict_init(&d); 28 29 assert(d.nalloc == DICT_DEFAULT_SIZE); 30 assert(d.nelts == 0); 31 assert(d.keys != NULL); 32 assert(d.values != NULL); 33 assert(d.nvalues != NULL); 34 assert(d.value_alloc != NULL); 35 36 for (i = 0; i < d.nalloc; i++) { 37 assert(d.nvalues[i] == 0); 38 assert(d.value_alloc[i] == 0); 39 assert(d.keys[i] == NULL); 40 assert(d.values[i] == NULL); 41 } 42 43 dict_clear(&d); 44 } 45 46 static void test_dict_insert() { 47 dict_t d; 48 dict_init_size(&d, 4); 49 50 sd_t elts[7]; 51 uint64_t values[7] = {1,2,3,4,5,6,7}; 52 size_t i; 53 for(i = 0; i < 7; i++) { 54 sd_init_u64(&elts[i], 2*i+1); 55 dict_insert(&d, elts[i], &values[i]); 56 } 57 58 assert(d.nelts == 7); 59 assert(d.nalloc >= 7); 60 61 for(i = 0; i < 7; i++) 62 sd_clear(&elts[i]); 63 dict_clear(&d); 64 } 65 66 static void test_dict_lookup() { 67 dict_t d; 68 dict_init_size(&d, 4); 69 70 sd_t elts[7]; 71 uint64_t values[7] = {1,2,3,4,5,6,7}; 72 size_t i; 73 for(i = 0; i < 7; i++) { 74 sd_init_u64(&elts[i], 2*i+1); 75 dict_insert(&d, elts[i], &values[i]); 76 } 77 78 sd_t pelt[2]; 79 sd_init_u64(&pelt[0], 5); 80 sd_init_u64(&pelt[1], 37); 81 82 for(i = 0; i < 7; i++) 83 assert(* (uint64_t*) dict_lookup(&d, elts[i]) == i+1); 84 85 assert(* (uint64_t*) dict_lookup(&d, pelt[0]) == 3); 86 assert(dict_lookup(&d, pelt[1]) == NULL); 87 88 for(i = 0; i < 7; i++) 89 sd_clear(&elts[i]); 90 dict_clear(&d); 91 } 92 93 94 int main() { 95 test_dict_init(); 96 test_dict_insert(); 97 test_dict_lookup(); 98 99 printf("test ok\n"); 100 }