test_ht.c (1261B)
1 #include "test_ht.h" 2 3 void test_ht_init() 4 { 5 ht h; 6 7 ht_init(&h); 8 CU_ASSERT(h.nelts == 0); 9 CU_ASSERT(h.nalloc == HT_DEFAULT_SIZE); 10 CU_ASSERT(h.entries != NULL); 11 12 ht_clear(&h); 13 14 ht_init_size(&h, 23); 15 CU_ASSERT(h.nelts == 0); 16 CU_ASSERT(h.nalloc == 23); 17 CU_ASSERT(h.entries != NULL); 18 19 ht_clear(&h); 20 } 21 22 void test_ht_insert() 23 { 24 ht h; 25 ht_init_size(&h, 16); 26 27 sd elts[17]; 28 29 size_t i; 30 for(i = 0; i < 17; i++) { 31 sd_init_u64(&elts[i], i); 32 ht_insert(&h, elts[i]); 33 CU_ASSERT(h.nelts == i+1); 34 } 35 36 sd tmp; 37 sd_init_u64(&tmp, 12); 38 ht_insert(&h, tmp); 39 CU_ASSERT(h.nelts == 17); 40 41 for(i = 0; i < 17; i++) sd_clear(&elts[i]); 42 43 ht_clear(&h); 44 } 45 46 void test_ht_lookup() 47 { 48 ht h; 49 ht_init_size(&h, 32); 50 51 sd elts[17]; 52 53 size_t i; 54 for(i = 0; i < 17; i++) { 55 sd_init_u64(&elts[i], 2*i); 56 ht_insert(&h, elts[i]); 57 } 58 59 sd nelts[2*17]; 60 for(i = 0; i < 2*17; i++) { 61 sd_init_u64(&nelts[i], i); 62 if(i % 2 == 0) { 63 int index = ht_lookup(&h, nelts[i]); 64 CU_ASSERT(index <= 17); 65 CU_ASSERT(index >= 0); 66 } else { 67 CU_ASSERT(ht_lookup(&h, nelts[i]) == HT_LOOKUP_NOT_FOUND); 68 } 69 } 70 71 for(i = 0; i < 17; i++) sd_clear(&elts[i]); 72 for(i = 0; i < 2*17; i++) sd_clear(&nelts[i]); 73 74 ht_clear(&h); 75 }