assoc.test.c (1403B)
1 #include <stdbool.h> 2 #include <assert.h> 3 #include <stdio.h> 4 5 #include "symbol.h" 6 #include "assoc.h" 7 8 bool 9 test_get_after_set_is_id() 10 { 11 symbol k = intern("k"); 12 13 assoc *a = new_assoc(); 14 assoc_set(a, k, (void*)123); 15 bool res = (assoc_get(a, k) == (void*)123); 16 free_assoc(a); 17 return res; 18 } 19 20 bool 21 test_amount_of_keys() 22 { 23 symbol k = intern("k"); 24 symbol l = intern("l"); 25 symbol m = intern("m"); 26 assoc *a = new_assoc(); 27 28 assoc_set(a, k, (void*)1); 29 assoc_set(a, l, (void*)2); 30 assoc_set(a, m, (void*)3); 31 32 bool res = (get_amount_of_keys(a) == 3); 33 34 free_assoc(a); 35 36 return res; 37 } 38 39 bool 40 test_keys() 41 { 42 symbol k = intern("k"); 43 symbol l = intern("l"); 44 symbol m = intern("m"); 45 assoc *a = new_assoc(); 46 47 assoc_set(a, k, (void*)1); 48 assoc_set(a, l, (void*)2); 49 assoc_set(a, m, (void*)3); 50 51 symbol *keys = get_keys(a); 52 size_t num_keys = get_amount_of_keys(a); 53 54 bool res = true; 55 for (size_t i = 0; i < num_keys; i++) { 56 res &= ( 57 keys[i] == k || 58 keys[i] == l || 59 keys[i] == m 60 ); 61 62 res &= (assoc_get(a, keys[i]) != NULL); 63 } 64 65 free_assoc(a); 66 67 return res; 68 } 69 70 void 71 test_many_keys() 72 { 73 assoc *a = new_assoc(); 74 char k[2] = "a"; 75 for (char c = 'a'; c <= 'z'; c++) { 76 k[0] = c; 77 assoc_set(a, intern(k), (void*)1); 78 } 79 assert(get_amount_of_keys(a) == 26); 80 } 81 82 int 83 main() 84 { 85 assert(test_get_after_set_is_id()); 86 assert(test_amount_of_keys()); 87 assert(test_keys()); 88 test_many_keys(); 89 return 0; 90 }