| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #include "iterator/recursive_iterator.hpp"
- #include <vector>
- #include <gmock/gmock.h>
- TEST(RecursiveIteratorVecTest, IterDistanceIsSumOfInnerContainerSizes) {
- std::vector<std::vector<std::vector<int>>> const vec{{{1, 2}}, {{3}, {4, 5}}};
- auto rit = make_recursive_iterator(vec);
- decltype(rit) end{};
- // TODO: Actually perform the summation?
- EXPECT_THAT(std::distance(rit, end), 5);
- }
- TEST(RecursiveIteratorVecTest, FlattensVectorDataLikeJoinIterator) {
- std::vector<std::vector<std::vector<int>>> const vec{{{1, 2}}, {{3}, {4, 5}}};
- std::vector<int> const expected{1, 2, 3, 4, 5};
- auto rit = make_recursive_iterator(vec);
- decltype(expected) result(rit, decltype(rit)());
- EXPECT_THAT(result, expected);
- }
- TEST(RecursiveIteratorVecTest, CanMutatePointedToData) {
- std::vector<std::vector<std::vector<int>>> vec{{{1, 2}}, {{3}, {4, 5}}};
- auto rit = make_recursive_iterator(vec);
- *rit = 6;
- EXPECT_THAT(vec[0][0][0], 6);
- }
- TEST(BoundedRecursiveIteratorVecTest, IterDistanceSumOnNLayersSize) {
- std::vector<std::vector<std::vector<int>>> const vec{{{1, 2}}, {{3}, {4, 5}}};
- auto rit = make_recursive_iterator<2>(vec);
- decltype(rit) end{};
- EXPECT_THAT(std::distance(rit, end), 3);
- }
- TEST(BoundedRecursiveIteratorVecTest, ElementsAreUnwrappedAsATuple) {
- std::vector<std::vector<std::vector<int>>> const vec{{{1, 2}}, {{3}, {4, 5}}};
- std::vector<std::vector<int>> const expected{{1, 2}, {3}, {4, 5}};
- auto rit = make_recursive_iterator<2>(vec);
- decltype(expected) result(rit, decltype(rit)());
- EXPECT_THAT(result, expected);
- }
- TEST(BoundedRecursiveIteratorVecTest, CanMutatePointedToData) {
- std::vector<std::vector<std::vector<int>>> vec{{{1, 2}}, {{3}, {4, 5}}};
- auto rit = make_recursive_iterator<2>(vec);
- rit->clear();
- EXPECT_THAT(vec[0][0], testing::IsEmpty());
- }
|