| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- //
- // recursive_iterator_single_level_test.cxx
- // iterator-test
- //
- // Created by Sam Jaffe on 8/11/20.
- // Copyright © 2020 Sam Jaffe. All rights reserved.
- //
- #include "iterator/recursive_iterator.h"
- #include <map>
- #include <vector>
- #include "ranges.h"
- #include "xcode_gtest_helper.h"
- using iterator::RecursiveIterator;
- using testing::ElementsAreArray;
- TEST(RecursiveIterator_Vec, IterDistanceIsContainerSize) {
- std::vector<int> const vec{1, 2, 3, 4, 5};
- auto rit = RecursiveIterator(vec);
- EXPECT_THAT(ranges::distance(rit, iterator::sentinel), vec.size());
- }
- TEST(RecursiveIterator_Vec, DataMatchesContainerIterator) {
- std::vector<int> const vec{1, 2, 3, 4, 5};
- EXPECT_THAT(vec | views::recursive | ranges::to<std::vector>(),
- ElementsAreArray(vec));
- }
- TEST(RecursiveIterator_Vec, CanMutatePointedToData) {
- std::vector<int> vec{1, 2, 3, 4, 5};
- auto rit = RecursiveIterator(vec);
- *rit = 6;
- EXPECT_THAT(vec[0], 6);
- }
- TEST(RecursiveIterator_Map, IterDistanceIsContainerSize) {
- std::map<int, int> const map{{1, 1}, {2, 2}, {3, 3}};
- auto rit = RecursiveIterator(map);
- EXPECT_THAT(ranges::distance(rit, iterator::sentinel), map.size());
- }
- TEST(RecursiveIterator_Map, DataMatchesContainerIterator) {
- std::map<int, int> const map{{1, 1}, {2, 2}, {3, 3}};
- EXPECT_THAT((map | views::recursive | ranges::to<std::map<int, int>>()), map);
- }
- TEST(RecursiveIterator_Map, CanMutatePointedToData) {
- std::map<int, int> map{{1, 1}, {2, 2}, {3, 3}};
- auto rit = RecursiveIterator(map);
- std::get<1>(*rit) = 4;
- EXPECT_THAT(map[1], 4);
- }
|