// // 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.hpp" #include #include #include "xcode_gtest_helper.h" TEST(RecursiveIteratorSingleVectorTest, IterDistanceIsContainerSize) { std::vector const vec{1, 2, 3, 4, 5}; auto rit = make_recursive_iterator(vec); decltype(rit) end{}; EXPECT_THAT(std::distance(rit, end), vec.size()); } TEST(RecursiveIteratorSingleVectorTest, DataMatchesContainerIterator) { std::vector const vec{1, 2, 3, 4, 5}; auto rit = make_recursive_iterator(vec); decltype(vec) result(rit, decltype(rit)()); EXPECT_THAT(result, vec); } TEST(RecursiveIteratorSingleVectorTest, CanMutatePointedToData) { std::vector vec{1, 2, 3, 4, 5}; auto rit = make_recursive_iterator(vec); *rit = 6; EXPECT_THAT(vec[0], 6); } TEST(RecursiveIteratorSingleMapTest, IterDistanceIsContainerSize) { std::map const map{{1, 1}, {2, 2}, {3, 3}}; auto rit = make_recursive_iterator(map); decltype(rit) end{}; EXPECT_THAT(std::distance(rit, end), map.size()); } TEST(RecursiveIteratorSingleMapTest, DataMatchesContainerIterator) { std::map const map{{1, 1}, {2, 2}, {3, 3}}; auto rit = make_recursive_iterator(map); decltype(map) result(rit, decltype(rit)()); EXPECT_THAT(result, map); } TEST(RecursiveIteratorSingleMapTest, CanMutatePointedToData) { std::map map{{1, 1}, {2, 2}, {3, 3}}; auto rit = make_recursive_iterator(map); std::get<1>(*rit) = 4; EXPECT_THAT(map[1], 4); }