// // 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 #include #include "ranges.h" #include "xcode_gtest_helper.h" using iterator::RecursiveIterator; using testing::ElementsAreArray; TEST(RecursiveIteratorSingleVectorTest, IterDistanceIsContainerSize) { std::vector const vec{1, 2, 3, 4, 5}; auto rit = RecursiveIterator(vec); EXPECT_THAT(ranges::distance(rit, iterator::sentinel), vec.size()); } TEST(RecursiveIteratorSingleVectorTest, DataMatchesContainerIterator) { std::vector const vec{1, 2, 3, 4, 5}; EXPECT_THAT(vec | views::recursive | ranges::to(), ElementsAreArray(vec)); } TEST(RecursiveIteratorSingleVectorTest, CanMutatePointedToData) { std::vector vec{1, 2, 3, 4, 5}; auto rit = RecursiveIterator(vec); *rit = 6; EXPECT_THAT(vec[0], 6); } TEST(RecursiveIteratorSingleMapTest, IterDistanceIsContainerSize) { std::map const map{{1, 1}, {2, 2}, {3, 3}}; auto rit = RecursiveIterator(map); EXPECT_THAT(ranges::distance(rit, iterator::sentinel), map.size()); } TEST(RecursiveIteratorSingleMapTest, DataMatchesContainerIterator) { std::map const map{{1, 1}, {2, 2}, {3, 3}}; EXPECT_THAT((map | views::recursive | ranges::to>()), map); } TEST(RecursiveIteratorSingleMapTest, CanMutatePointedToData) { std::map map{{1, 1}, {2, 2}, {3, 3}}; auto rit = RecursiveIterator(map); std::get<1>(*rit) = 4; EXPECT_THAT(map[1], 4); }