tests/test_hash_map.c

changeset 850
b2bc48c2b251
parent 785
bb18daa62d5f
child 853
d4baf4dd55c3
equal deleted inserted replaced
849:edb9f875b7f9 850:b2bc48c2b251
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;

mercurial