| 123456789101112131415161718192021222324252627282930313233 |
- #include "iterator/join_iterator.hpp"
- #include <vector>
- #include <gmock/gmock.h>
- using join_iterator =
- iterator::joining_iterator<std::vector<std::vector<int>>::iterator>;
- TEST(JoinIteratorTest, FirstDereferencedElemIsTheFirstInTheChain) {
- std::vector<std::vector<int>> mv{{1, 2, 3}, {4, 5, 6}};
- EXPECT_THAT(*join_iterator(make_end_aware_iterator(mv)), mv[0][0]);
- }
- TEST(JoinIteratorTest, EmptyConstructorEqualsEnd) {
- std::vector<std::vector<int>> mv{{1, 2, 3}, {4, 5, 6}};
- join_iterator it({mv.end(), mv.end()}, {mv.back().end(), mv.back().end()});
- EXPECT_THAT(it, join_iterator());
- }
- TEST(JoinIteratorTest, MovesFromListToListWhenReachingEnd) {
- std::vector<std::vector<int>> mv{{1, 2, 3}, {4, 5, 6}};
- join_iterator it(make_end_aware_iterator(mv), {mv[0].end(), mv[0].end()});
- EXPECT_THAT(*++it, mv[1][0]);
- }
- TEST(JoinIteratorTest, IncrementEndIsNoOp) {
- std::vector<std::vector<int>> mv{{1, 2, 3}, {4, 5, 6}};
- join_iterator it({mv.end(), mv.end()}, {mv.back().end(), mv.back().end()});
- join_iterator const cp = it;
- ++it;
- EXPECT_THAT(it, cp);
- }
|