| 12345678910111213141516171819202122232425262728293031323334353637 |
- #include "iterator/end_aware_iterator.hpp"
- #include <vector>
- #include <gmock/gmock.h>
- using end_aware_iterator =
- ::iterator::end_aware_iterator<std::vector<int>::iterator>;
- TEST(EndAwareIteratorTest, BeginWrapperIsEqualToBegin) {
- std::vector<int> v{1, 2, 3, 4, 5};
- EXPECT_THAT(*v.begin(), *end_aware_iterator(v.begin(), v.end()));
- }
- TEST(EndAwareIteratorTest, MutableActionsArePassthrough) {
- std::vector<int> v{1, 2, 3, 4, 5};
- *end_aware_iterator(v.begin(), v.end()) = -1;
- EXPECT_THAT(v[0], -1);
- }
- TEST(EndAwareIteratorTest, CanTellYouThatItsReachedEnd) {
- std::vector<int> v{1, 2, 3, 4, 5};
- end_aware_iterator it{v.end() - 1, v.end()};
- EXPECT_FALSE(it.done());
- ++it;
- EXPECT_THAT(it, end_aware_iterator(v.end(), v.end()));
- EXPECT_TRUE(it.done());
- }
- TEST(EndAwareIteratorTest, IncrementOnEndIsNoOp) {
- std::vector<int> v{1, 2, 3, 4, 5};
- end_aware_iterator it{v.end(), v.end()};
- end_aware_iterator const cp = it;
- ++it;
- EXPECT_THAT(it, cp);
- EXPECT_TRUE(it.done());
- }
|