test_smallset.c (3830B)
1 #include "test_smallset.h" 2 3 void test_smallset_init() 4 { 5 smallset s; 6 smallset_init(&s, 17); 7 8 size_t i; 9 for(i = 0; i < (17+7)/8; i++) { 10 CU_ASSERT(s.data[i] == 0); 11 } 12 13 smallset_clear(&s); 14 } 15 16 void test_smallset_insert() 17 { 18 smallset s; 19 smallset_init(&s, 17); 20 21 smallset_insert(&s, 3); 22 23 CU_ASSERT(s.data[0] == 0x80 >> 3); 24 CU_ASSERT(s.data[1] == 0x00); 25 CU_ASSERT(s.data[2] == 0x00); 26 27 smallset_clear(&s); 28 } 29 30 void test_smallset_lookup() 31 { 32 smallset s; 33 smallset_init(&s, 17); 34 35 smallset_insert(&s, 3); 36 smallset_insert(&s, 15); 37 smallset_insert(&s, 4); 38 39 CU_ASSERT(smallset_lookup(&s, 0) == 0); 40 CU_ASSERT(smallset_lookup(&s, 1) == 0); 41 CU_ASSERT(smallset_lookup(&s, 2) == 0); 42 CU_ASSERT(smallset_lookup(&s, 3) != 0); 43 CU_ASSERT(smallset_lookup(&s, 4) != 0); 44 CU_ASSERT(smallset_lookup(&s, 5) == 0); 45 CU_ASSERT(smallset_lookup(&s, 6) == 0); 46 CU_ASSERT(smallset_lookup(&s, 7) == 0); 47 CU_ASSERT(smallset_lookup(&s, 8) == 0); 48 CU_ASSERT(smallset_lookup(&s, 9) == 0); 49 CU_ASSERT(smallset_lookup(&s, 10) == 0); 50 CU_ASSERT(smallset_lookup(&s, 11) == 0); 51 CU_ASSERT(smallset_lookup(&s, 12) == 0); 52 CU_ASSERT(smallset_lookup(&s, 13) == 0); 53 CU_ASSERT(smallset_lookup(&s, 14) == 0); 54 CU_ASSERT(smallset_lookup(&s, 15) != 0); 55 CU_ASSERT(smallset_lookup(&s, 16) == 0); 56 57 smallset_clear(&s); 58 } 59 60 void test_smallset_intersection() 61 { 62 smallset a, b, s; 63 smallset_init(&a, 17); 64 smallset_init(&b, 17); 65 smallset_init(&s, 17); 66 67 smallset_insert(&a, 3); 68 smallset_insert(&a, 4); 69 smallset_insert(&a, 15); 70 smallset_insert(&a, 5); 71 smallset_insert(&a, 7); 72 73 smallset_insert(&b, 3); 74 smallset_insert(&b, 4); 75 smallset_insert(&b, 15); 76 smallset_insert(&b, 6); 77 smallset_insert(&b, 9); 78 smallset_insert(&b, 10); 79 80 smallset_intersection(&s, &a, &b); 81 82 CU_ASSERT(smallset_lookup(&s, 0) == 0); 83 CU_ASSERT(smallset_lookup(&s, 1) == 0); 84 CU_ASSERT(smallset_lookup(&s, 2) == 0); 85 CU_ASSERT(smallset_lookup(&s, 3) != 0); 86 CU_ASSERT(smallset_lookup(&s, 4) != 0); 87 CU_ASSERT(smallset_lookup(&s, 5) == 0); 88 CU_ASSERT(smallset_lookup(&s, 6) == 0); 89 CU_ASSERT(smallset_lookup(&s, 7) == 0); 90 CU_ASSERT(smallset_lookup(&s, 8) == 0); 91 CU_ASSERT(smallset_lookup(&s, 9) == 0); 92 CU_ASSERT(smallset_lookup(&s, 10) == 0); 93 CU_ASSERT(smallset_lookup(&s, 11) == 0); 94 CU_ASSERT(smallset_lookup(&s, 12) == 0); 95 CU_ASSERT(smallset_lookup(&s, 13) == 0); 96 CU_ASSERT(smallset_lookup(&s, 14) == 0); 97 CU_ASSERT(smallset_lookup(&s, 15) != 0); 98 CU_ASSERT(smallset_lookup(&s, 16) == 0); 99 100 smallset_clear(&s); 101 } 102 103 void test_smallset_tonstr() 104 { 105 smallset s; 106 smallset_init(&s, 25); 107 108 char buffer[256]; 109 110 smallset_tonstr(buffer, 256, &s); 111 CU_ASSERT(strncmp(buffer, "{}", 2) == 0); 112 113 smallset_insert(&s, 1); 114 smallset_tonstr(buffer, 256, &s); 115 CU_ASSERT(strncmp(buffer, "{1}", 3) == 0); 116 117 smallset_insert(&s, 12); 118 smallset_tonstr(buffer, 256, &s); 119 CU_ASSERT(strncmp(buffer, "{1, 12}", 6) == 0); 120 121 smallset_clear(&s); 122 } 123 124 void test_smallset_getone() 125 { 126 smallset s; 127 smallset_init(&s, 17); 128 129 CU_ASSERT(smallset_getone(&s) == SMALLSET_IS_EMPTY); 130 131 smallset_insert(&s, 3); 132 smallset_insert(&s, 15); 133 smallset_insert(&s, 4); 134 135 CU_ASSERT(smallset_getone(&s) == 3); 136 137 smallset_clear(&s); 138 } 139 140 void test_smallset_empty() 141 { 142 smallset s; 143 smallset_init(&s, 17); 144 145 CU_ASSERT(smallset_getone(&s) == SMALLSET_IS_EMPTY); 146 147 smallset_insert(&s, 3); 148 smallset_insert(&s, 15); 149 smallset_insert(&s, 4); 150 151 CU_ASSERT(smallset_getone(&s) == 3); 152 153 smallset_empty(&s); 154 155 CU_ASSERT(smallset_getone(&s) == SMALLSET_IS_EMPTY); 156 157 smallset_clear(&s); 158 } 159 160 void test_smallset_cardinality() 161 { 162 smallset s; 163 smallset_init(&s, 7*50); 164 165 uint64_t i,j; 166 for(i = 0; i < 50; i++) { 167 for(j = 0; j < 7; j++) { 168 smallset_insert(&s, i*7 + j); 169 } 170 CU_ASSERT(smallset_cardinality(&s) == 7*(i+1)); 171 } 172 smallset_clear(&s); 173 }