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)); |