tests/test_hash_map.c

changeset 1429
6e0c3a8a914a
parent 1388
edc34e904fe3
equal deleted inserted replaced
1428:0ac4aa1737fd 1429:6e0c3a8a914a
299 cxMapPut(map, "key 3", (void *) "val 3"); 299 cxMapPut(map, "key 3", (void *) "val 3");
300 cxMapPut(map, "key 4", (void *) "val 4"); 300 cxMapPut(map, "key 4", (void *) "val 4");
301 cxMapPut(map, "key 5", (void *) "val 5"); 301 cxMapPut(map, "key 5", (void *) "val 5");
302 cxMapPut(map, "key 6", (void *) "val 6"); 302 cxMapPut(map, "key 6", (void *) "val 6");
303 303
304 CxMapIterator iter = cxMapMutIterator(map); 304 CxMapIterator iter = cxMapIterator(map);
305 cx_foreach(CxMapEntry*, entry, iter) { 305 cx_foreach(CxMapEntry*, entry, iter) {
306 if (((const char *)entry->key->data)[4] % 2 == 1) cxIteratorFlagRemoval(iter); 306 if (((const char *)entry->key->data)[4] % 2 == 1) cxIteratorFlagRemoval(iter);
307 } 307 }
308 CX_TEST_ASSERT(cxMapSize(map) == 3); 308 CX_TEST_ASSERT(cxMapSize(map) == 3);
309 CX_TEST_ASSERT(iter.elem_count == 3); 309 CX_TEST_ASSERT(iter.elem_count == 3);
401 CX_TEST_ASSERT(0 == strcmp(v3, "val 3")); 401 CX_TEST_ASSERT(0 == strcmp(v3, "val 3"));
402 402
403 // now remove k1 via key iterator and k5 (val 5) via value iterator 403 // now remove k1 via key iterator and k5 (val 5) via value iterator
404 v1[0] = 'y'; // mark v1 and check that destr is not called for previous val 404 v1[0] = 'y'; // mark v1 and check that destr is not called for previous val
405 { 405 {
406 CxMapIterator iter = cxMapMutIteratorKeys(map); 406 CxMapIterator iter = cxMapIteratorKeys(map);
407 CX_TEST_ASSERT(iter.elem_count == 4); 407 CX_TEST_ASSERT(iter.elem_count == 4);
408 CX_TEST_ASSERT(cxMapSize(map) == 4); 408 CX_TEST_ASSERT(cxMapSize(map) == 4);
409 cx_foreach(CxHashKey*, key, iter) { 409 cx_foreach(CxHashKey*, key, iter) {
410 if (((char*)key->data)[4] == '1') cxIteratorFlagRemoval(iter); 410 if (((char*)key->data)[4] == '1') cxIteratorFlagRemoval(iter);
411 } 411 }
412 CX_TEST_ASSERT(iter.elem_count == 3); 412 CX_TEST_ASSERT(iter.elem_count == 3);
413 CX_TEST_ASSERT(cxMapSize(map) == 3); 413 CX_TEST_ASSERT(cxMapSize(map) == 3);
414 } 414 }
415 { 415 {
416 CxMapIterator iter = cxMapMutIteratorValues(map); 416 CxMapIterator iter = cxMapIteratorValues(map);
417 cx_foreach(struct test_destr_struct*, v, iter) { 417 cx_foreach(struct test_destr_struct*, v, iter) {
418 if (v->str[4] == '5') cxIteratorFlagRemoval(iter); 418 if (v->str[4] == '5') cxIteratorFlagRemoval(iter);
419 } 419 }
420 CX_TEST_ASSERT(iter.elem_count == 2); 420 CX_TEST_ASSERT(iter.elem_count == 2);
421 CX_TEST_ASSERT(cxMapSize(map) == 2); 421 CX_TEST_ASSERT(cxMapSize(map) == 2);
509 CxMap *map = cxEmptyMap; 509 CxMap *map = cxEmptyMap;
510 510
511 CxMapIterator it1 = cxMapIterator(map); 511 CxMapIterator it1 = cxMapIterator(map);
512 CxMapIterator it2 = cxMapIteratorValues(map); 512 CxMapIterator it2 = cxMapIteratorValues(map);
513 CxMapIterator it3 = cxMapIteratorKeys(map); 513 CxMapIterator it3 = cxMapIteratorKeys(map);
514 CxMapIterator it4 = cxMapMutIterator(map); 514 CxMapIterator it4 = cxMapIterator(map);
515 CxMapIterator it5 = cxMapMutIteratorValues(map); 515 CxMapIterator it5 = cxMapIteratorValues(map);
516 CxMapIterator it6 = cxMapMutIteratorKeys(map); 516 CxMapIterator it6 = cxMapIteratorKeys(map);
517 517
518 CX_TEST_DO { 518 CX_TEST_DO {
519 CX_TEST_ASSERT(!cxIteratorValid(it1)); 519 CX_TEST_ASSERT(!cxIteratorValid(it1));
520 CX_TEST_ASSERT(!cxIteratorValid(it2)); 520 CX_TEST_ASSERT(!cxIteratorValid(it2));
521 CX_TEST_ASSERT(!cxIteratorValid(it3)); 521 CX_TEST_ASSERT(!cxIteratorValid(it3));
538 CxMap *map = NULL; 538 CxMap *map = NULL;
539 539
540 CxMapIterator it1 = cxMapIterator(map); 540 CxMapIterator it1 = cxMapIterator(map);
541 CxMapIterator it2 = cxMapIteratorValues(map); 541 CxMapIterator it2 = cxMapIteratorValues(map);
542 CxMapIterator it3 = cxMapIteratorKeys(map); 542 CxMapIterator it3 = cxMapIteratorKeys(map);
543 CxMapIterator it4 = cxMapMutIterator(map); 543 CxMapIterator it4 = cxMapIterator(map);
544 CxMapIterator it5 = cxMapMutIteratorValues(map); 544 CxMapIterator it5 = cxMapIteratorValues(map);
545 CxMapIterator it6 = cxMapMutIteratorKeys(map); 545 CxMapIterator it6 = cxMapIteratorKeys(map);
546 546
547 CX_TEST_DO { 547 CX_TEST_DO {
548 CX_TEST_ASSERT(!cxIteratorValid(it1)); 548 CX_TEST_ASSERT(!cxIteratorValid(it1));
549 CX_TEST_ASSERT(!cxIteratorValid(it2)); 549 CX_TEST_ASSERT(!cxIteratorValid(it2));
550 CX_TEST_ASSERT(!cxIteratorValid(it3)); 550 CX_TEST_ASSERT(!cxIteratorValid(it3));

mercurial