tests/test_hash_map.c

changeset 1480
83146195a1db
parent 1474
84de0ba791af
equal deleted inserted replaced
1479:ac1baaed2fd7 1480:83146195a1db
1151 CX_TEST_ASSERT(cxMapGet(s1, "k5") == NULL); 1151 CX_TEST_ASSERT(cxMapGet(s1, "k5") == NULL);
1152 CX_TEST_ASSERT(*((int*)cxMapGet(s1, "k6")) == 27); 1152 CX_TEST_ASSERT(*((int*)cxMapGet(s1, "k6")) == 27);
1153 } 1153 }
1154 cxMapFree(s1); 1154 cxMapFree(s1);
1155 cxMapFree(s2); 1155 cxMapFree(s2);
1156 }
1157
1158 CX_TEST(test_hash_map_simple_clones) {
1159 CxMap *a = cxHashMapCreateSimple(sizeof(int));
1160 cxMapPut(a, "k1", "v1");
1161 cxMapPut(a, "k2", "v2");
1162 cxMapPut(a, "k3", "v3");
1163 cxMapPut(a, "k4", "v4");
1164
1165 CxMap *b = cxHashMapCreateSimple(sizeof(int));
1166 cxMapPut(b, "k0", "v0");
1167 cxMapPut(b, "k2", "v2");
1168 cxMapPut(b, "k5", "v5");
1169
1170 CxMap *c = cxHashMapCreateSimple(sizeof(int));
1171 cxMapPut(c, "k3", "v3");
1172 cxMapPut(c, "k4", "v4");
1173 cxMapPut(c, "k5", "v5");
1174
1175
1176 CxHashKey k;
1177 CxList *kl1 = cxArrayListCreateSimple(sizeof(CxHashKey), 4);
1178 cxCollectionCompareFunc(kl1, cx_hash_key_cmp);
1179 k = CX_HASH_KEY("k0");
1180 cxListAdd(kl1, &k);
1181 k = CX_HASH_KEY("k2");
1182 cxListAdd(kl1, &k);
1183 k = CX_HASH_KEY("k5");
1184 cxListAdd(kl1, &k);
1185
1186 CxList *kl2 = cxArrayListCreateSimple(sizeof(CxHashKey), 4);
1187 cxCollectionCompareFunc(kl2, cx_hash_key_cmp);
1188 k = CX_HASH_KEY("k3");
1189 cxListAdd(kl2, &k);
1190 k = CX_HASH_KEY("k4");
1191 cxListAdd(kl2, &k);
1192 k = CX_HASH_KEY("k5");
1193 cxListAdd(kl2, &k);
1194
1195 CxMap *d1 = cxHashMapCreateSimple(CX_STORE_POINTERS);
1196 cxDefineAdvancedDestructor(d1, cxFree, (void*)cxDefaultAllocator);
1197 CxMap *d2 = cxHashMapCreateSimple(CX_STORE_POINTERS);
1198 cxDefineAdvancedDestructor(d2, cxFree, (void*)cxDefaultAllocator);
1199
1200 CX_TEST_DO {
1201 CX_TEST_ASSERT(0 == cxMapCloneSimple(d1, a));
1202 CX_TEST_ASSERT(!cxMapContains(d1, "k0"));
1203 CX_TEST_ASSERT(cxMapContains(d1, "k1"));
1204 CX_TEST_ASSERT(cxMapContains(d1, "k2"));
1205 CX_TEST_ASSERT(cxMapContains(d1, "k3"));
1206 CX_TEST_ASSERT(cxMapContains(d1, "k4"));
1207 CX_TEST_ASSERT(!cxMapContains(d1, "k5"));
1208
1209 CX_TEST_ASSERT(0 == cxMapListDifferenceSimple(d2, d1, kl1));
1210 CX_TEST_ASSERT(!cxMapContains(d2, "k0"));
1211 CX_TEST_ASSERT(cxMapContains(d2, "k1"));
1212 CX_TEST_ASSERT(!cxMapContains(d2, "k2"));
1213 CX_TEST_ASSERT(cxMapContains(d2, "k3"));
1214 CX_TEST_ASSERT(cxMapContains(d2, "k4"));
1215 CX_TEST_ASSERT(!cxMapContains(d2, "k5"));
1216
1217 cxMapClear(d1);
1218 CX_TEST_ASSERT(0 == cxMapListIntersectionSimple(d1, d2, kl2));
1219 CX_TEST_ASSERT(!cxMapContains(d1, "k0"));
1220 CX_TEST_ASSERT(!cxMapContains(d1, "k1"));
1221 CX_TEST_ASSERT(!cxMapContains(d1, "k2"));
1222 CX_TEST_ASSERT(cxMapContains(d1, "k3"));
1223 CX_TEST_ASSERT(cxMapContains(d1, "k4"));
1224
1225 CX_TEST_ASSERT(0 == cxMapUnionSimple(d1, b));
1226 CX_TEST_ASSERT(cxMapContains(d1, "k0"));
1227 CX_TEST_ASSERT(!cxMapContains(d1, "k1"));
1228 CX_TEST_ASSERT(cxMapContains(d1, "k2"));
1229 CX_TEST_ASSERT(cxMapContains(d1, "k3"));
1230 CX_TEST_ASSERT(cxMapContains(d1, "k4"));
1231 CX_TEST_ASSERT(cxMapContains(d1, "k5"));
1232
1233 cxMapClear(d2);
1234 CX_TEST_ASSERT(0 == cxMapDifferenceSimple(d2, d1, a));
1235 CX_TEST_ASSERT(cxMapContains(d2, "k0"));
1236 CX_TEST_ASSERT(!cxMapContains(d2, "k1"));
1237 CX_TEST_ASSERT(!cxMapContains(d2, "k2"));
1238 CX_TEST_ASSERT(!cxMapContains(d2, "k3"));
1239 CX_TEST_ASSERT(!cxMapContains(d2, "k4"));
1240 CX_TEST_ASSERT(cxMapContains(d2, "k5"));
1241
1242 cxMapClear(d1);
1243 CX_TEST_ASSERT(0 == cxMapIntersectionSimple(d1, d2, c));
1244 CX_TEST_ASSERT(!cxMapContains(d1, "k0"));
1245 CX_TEST_ASSERT(!cxMapContains(d1, "k1"));
1246 CX_TEST_ASSERT(!cxMapContains(d1, "k2"));
1247 CX_TEST_ASSERT(!cxMapContains(d1, "k3"));
1248 CX_TEST_ASSERT(!cxMapContains(d1, "k4"));
1249 CX_TEST_ASSERT(cxMapContains(d1, "k5"));
1250 }
1251
1252 cxMapFree(a);
1253 cxMapFree(b);
1254 cxMapFree(c);
1255 cxListFree(kl1);
1256 cxListFree(kl2);
1257 cxMapFree(d1);
1258 cxMapFree(d2);
1156 } 1259 }
1157 1260
1158 CX_TEST(test_empty_map_size) { 1261 CX_TEST(test_empty_map_size) {
1159 CX_TEST_DO { 1262 CX_TEST_DO {
1160 CX_TEST_ASSERT(cxEmptyMap->collection.size == 0); 1263 CX_TEST_ASSERT(cxEmptyMap->collection.size == 0);
1518 cx_test_register(suite, test_hash_map_intersection_non_empty_target); 1621 cx_test_register(suite, test_hash_map_intersection_non_empty_target);
1519 cx_test_register(suite, test_hash_map_list_intersection_non_empty_target); 1622 cx_test_register(suite, test_hash_map_list_intersection_non_empty_target);
1520 cx_test_register(suite, test_hash_map_union); 1623 cx_test_register(suite, test_hash_map_union);
1521 cx_test_register(suite, test_hash_map_union_ptr); 1624 cx_test_register(suite, test_hash_map_union_ptr);
1522 cx_test_register(suite, test_hash_map_union_alloc_fail); 1625 cx_test_register(suite, test_hash_map_union_alloc_fail);
1626 cx_test_register(suite, test_hash_map_simple_clones);
1523 cx_test_register(suite, test_empty_map_no_ops); 1627 cx_test_register(suite, test_empty_map_no_ops);
1524 cx_test_register(suite, test_empty_map_size); 1628 cx_test_register(suite, test_empty_map_size);
1525 cx_test_register(suite, test_empty_map_get); 1629 cx_test_register(suite, test_empty_map_get);
1526 cx_test_register(suite, test_empty_map_iterator); 1630 cx_test_register(suite, test_empty_map_iterator);
1527 cx_test_register(suite, test_null_map_iterator); 1631 cx_test_register(suite, test_null_map_iterator);

mercurial