543 |
543 |
544 // verify key iterator |
544 // verify key iterator |
545 { |
545 { |
546 // collect the keys from the map iterator |
546 // collect the keys from the map iterator |
547 CxIterator keyiter = cxMapIteratorKeys(map); |
547 CxIterator keyiter = cxMapIteratorKeys(map); |
|
548 CX_TEST_ASSERT(keyiter.elem_size == sizeof(CxHashKey)); |
|
549 CX_TEST_ASSERT(keyiter.elem_count == map->size); |
548 CxHashKey *keys = calloc(map->size, sizeof(CxHashKey)); |
550 CxHashKey *keys = calloc(map->size, sizeof(CxHashKey)); |
549 cx_foreach(CxHashKey*, elem, keyiter) { |
551 cx_foreach(CxHashKey*, elem, keyiter) { |
550 keys[keyiter.index] = *elem; |
552 keys[keyiter.index] = *elem; |
551 } |
553 } |
552 CX_TEST_ASSERT(keyiter.index == map->size); |
554 CX_TEST_ASSERT(keyiter.index == map->size); |
562 // verify value iterator |
564 // verify value iterator |
563 { |
565 { |
564 // by using that the values in our test data are unique strings |
566 // by using that the values in our test data are unique strings |
565 // we can re-use a similar approach as above |
567 // we can re-use a similar approach as above |
566 CxIterator valiter = cxMapIteratorValues(map); |
568 CxIterator valiter = cxMapIteratorValues(map); |
|
569 CX_TEST_ASSERT(valiter.elem_size == map->item_size); |
|
570 CX_TEST_ASSERT(valiter.elem_count == map->size); |
567 char const** values = calloc(map->size, sizeof(char const*)); |
571 char const** values = calloc(map->size, sizeof(char const*)); |
568 cx_foreach(char const*, elem, valiter) { |
572 cx_foreach(char const*, elem, valiter) { |
569 values[valiter.index] = elem; |
573 values[valiter.index] = elem; |
570 } |
574 } |
571 CX_TEST_ASSERT(valiter.index == map->size); |
575 CX_TEST_ASSERT(valiter.index == map->size); |
584 } |
588 } |
585 |
589 |
586 // verify pair iterator |
590 // verify pair iterator |
587 { |
591 { |
588 CxIterator pairiter = cxMapIterator(map); |
592 CxIterator pairiter = cxMapIterator(map); |
|
593 CX_TEST_ASSERT(pairiter.elem_size == sizeof(CxMapEntry)); |
|
594 CX_TEST_ASSERT(pairiter.elem_count == map->size); |
589 struct test_map_kv *pairs = calloc(map->size, sizeof(struct test_map_kv)); |
595 struct test_map_kv *pairs = calloc(map->size, sizeof(struct test_map_kv)); |
590 cx_foreach(CxMapEntry*, entry, pairiter) { |
596 cx_foreach(CxMapEntry*, entry, pairiter) { |
591 CxHashKey const *key = entry->key; |
597 CxHashKey const *key = entry->key; |
592 pairs[pairiter.index].key = cx_strdup(cx_strn(key->data, key->len)).ptr; |
598 pairs[pairiter.index].key = cx_strdup(cx_strn(key->data, key->len)).ptr; |
593 pairs[pairiter.index].value = entry->value; |
599 pairs[pairiter.index].value = entry->value; |