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