| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #include "iterator/unkeyed_iterator.h"
- #include <map>
- #include <vector>
- #include "xcode_gtest_helper.h"
- #include "iterator/end_aware_iterator.h"
- using iterator::end_aware_iterator;
- using iterator::unkeyed_iterator;
- using testing::Ne;
- TEST(UnkeyedIteratorTest, IteratorOnlyReturnsValues) {
- std::map<int, int> map{{1, 2}, {2, 3}};
- std::vector<int> const expected{2, 3};
- std::vector<int> const result{unkeyed_iterator{map.begin()},
- unkeyed_iterator{map.end()}};
- EXPECT_THAT(result, expected);
- }
- TEST(UnkeyedIteratorTest, CanModifyIteratedCollectionValues) {
- std::map<int, int> map{{1, 2}, {2, 3}};
- unkeyed_iterator uit{map.begin()};
- *uit = 4;
- EXPECT_THAT(map[1], 4);
- }
- TEST(UnkeyedIteratorTest, PreIncrementAdvancesIterator) {
- std::map<int, int> map{{1, 2}, {2, 3}};
- unkeyed_iterator it(map.begin());
- EXPECT_THAT(*it, 2);
- EXPECT_THAT(*++it, 3);
- EXPECT_THAT(*it, 3);
- }
- TEST(UnkeyedIteratorTest, PostIncrementReturnsCopyOfPrev) {
- std::map<int, int> map{{1, 2}, {2, 3}};
- unkeyed_iterator it(map.begin());
- EXPECT_THAT(*it, 2);
- EXPECT_THAT(*it++, 2);
- EXPECT_THAT(*it, 3);
- }
- TEST(UnkeyedIteratorTest, PreDecrementAdvancesIterator) {
- std::map<int, int> map{{1, 2}, {2, 3}};
- unkeyed_iterator it(++map.begin());
- EXPECT_THAT(*it, 3);
- EXPECT_THAT(*--it, 2);
- EXPECT_THAT(*it, 2);
- }
- TEST(UnkeyedIteratorTest, PostDecrementReturnsCopyOfPrev) {
- std::map<int, int> map{{1, 2}, {2, 3}};
- unkeyed_iterator it(++map.begin());
- EXPECT_THAT(*it, 3);
- EXPECT_THAT(*it--, 3);
- EXPECT_THAT(*it, 2);
- }
- TEST(UnkeyedIteratorTest, EqualityIsPassthrough) {
- std::map<int, int> map{{1, 2}, {2, 3}};
- EXPECT_THAT(++unkeyed_iterator(map.begin()), unkeyed_iterator(++map.begin()));
- EXPECT_THAT(unkeyed_iterator(map.begin()),
- Ne(unkeyed_iterator(++map.begin())));
- }
- TEST(UnkeyedIteratorTest, PropagatesAtEnd) {
- std::map<int, int> map{{1, 2}, {2, 3}};
- unkeyed_iterator end(end_aware_iterator(map.end(), map.end()));
- EXPECT_EQ(end, iterator::sentinel);
- }
- TEST(UnkeyedIteratorTest, CanPointToObject) {
- std::map<int, int> map{{1, 2}, {2, 3}};
- EXPECT_THAT(unkeyed_iterator(map.begin()).operator->(),
- &(map.begin()->second));
- }
|