| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #include "iterator/recursive_iterator.hpp"
- #include <vector>
- #include <gmock/gmock.h>
- TEST(RecursiveIteratorSingleVectorTest, IterDistanceIsContainerSize) {
- std::vector<int> 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, ElementsAreUnwrappedAsATuple) {
- std::vector<int> const vec{1, 2, 3, 4, 5};
- auto rit = make_recursive_iterator(vec);
-
- // TODO: Collapse into a container instead
- for (auto it = vec.begin(), end = vec.end(); it != end; ++it, ++rit) {
- EXPECT_THAT(*it, *rit);
- }
- }
- 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(RecursiveIteratorVectorVectorTest, IterDistanceIsSumOfInnerContainerSizes) {
- 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(RecursiveIteratorVectorVectorTest, ElementsAreUnwrappedAsATuple) {
- 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);
-
- // TODO: Collapse into a container instead
- for (auto it = expected.begin(), end = expected.end(); it != end; ++it, ++rit) {
- EXPECT_THAT(*it, *rit);
- }
- }
- TEST(RecursiveIteratorVectorVectorTest, CanMutatePointedToData) {
- std::vector<std::vector<int>> vec{{1, 2}, {3, 4, 5}};
- auto rit = make_recursive_iterator(vec);
- *rit = 6;
- EXPECT_THAT(vec[0][0], 6);
- }
- TEST(BoundedRecursiveIteratorVectorVectorTest, IterDistanceSumOnNLayersSize) {
- std::vector<std::vector<int>> const vec{{1, 2}, {3, 4, 5}};
- auto rit = make_recursive_iterator<1>(vec);
- decltype(rit) end{ };
-
- EXPECT_THAT(std::distance(rit, end), vec.size());
- }
- TEST(BoundedRecursiveIteratorVectorVectorTest, ElementsAreUnwrappedAsATuple) {
- std::vector<std::vector<int>> const vec{{1, 2}, {3, 4, 5}};
- auto rit = make_recursive_iterator<1>(vec);
- // TODO: Collapse into a container instead
- for (auto it = vec.begin(), end = vec.end(); it != end; ++it, ++rit) {
- EXPECT_THAT(*it, *rit);
- }
- }
|