| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- //
- // recursive_iterator_single_level_test.cxx
- // iterator-test
- //
- // Created by Sam Jaffe on 8/11/20.
- // Copyright © 2020 Sam Jaffe. All rights reserved.
- //
- #include "iterator/recursive_iterator.h"
- #include <map>
- #include <vector>
- #include "ranges.h"
- #include "xcode_gtest_helper.h"
- TEST(RecursiveIteratorSingleVectorTest, IterDistanceIsContainerSize) {
- std::vector<int> const vec{1, 2, 3, 4, 5};
- auto rit = make_recursive_iterator(vec);
- EXPECT_THAT(ranges::distance(rit, iterator::sentinel), vec.size());
- }
- TEST(RecursiveIteratorSingleVectorTest, DataMatchesContainerIterator) {
- std::vector<int> const vec{1, 2, 3, 4, 5};
- auto rit = make_recursive_iterator(vec);
- EXPECT_THAT(ranges::to<std::vector<int>>(rit, iterator::sentinel), vec);
- }
- TEST(RecursiveIteratorSingleVectorTest, CanMutatePointedToData) {
- std::vector<int> vec{1, 2, 3, 4, 5};
- auto rit = make_recursive_iterator(vec);
- *rit = 6;
- EXPECT_THAT(vec[0], 6);
- }
- TEST(RecursiveIteratorSingleMapTest, IterDistanceIsContainerSize) {
- std::map<int, int> const map{{1, 1}, {2, 2}, {3, 3}};
- auto rit = make_recursive_iterator(map);
- EXPECT_THAT(ranges::distance(rit, iterator::sentinel), map.size());
- }
- TEST(RecursiveIteratorSingleMapTest, DataMatchesContainerIterator) {
- std::map<int, int> const map{{1, 1}, {2, 2}, {3, 3}};
- auto rit = make_recursive_iterator(map);
- EXPECT_THAT((ranges::to<std::map<int, int>>(rit, iterator::sentinel)), map);
- }
- TEST(RecursiveIteratorSingleMapTest, CanMutatePointedToData) {
- std::map<int, int> map{{1, 1}, {2, 2}, {3, 3}};
- auto rit = make_recursive_iterator(map);
- std::get<1>(*rit) = 4;
- EXPECT_THAT(map[1], 4);
- }
|