|
|
@@ -6,6 +6,24 @@
|
|
|
|
|
|
#include <gmock/gmock.h>
|
|
|
|
|
|
+TEST(RecursiveIteratorMapTest, PreIncrementAdvancesIterator) {
|
|
|
+ std::map<int, std::map<int, std::map<int, int>>> const map{
|
|
|
+ {1, {{1, {{1, 1}}}}}, {2, {{2, {{2, 2}}}, {3, {{3, 3}, {4, 4}}}}}};
|
|
|
+ auto rit = make_recursive_iterator(map);
|
|
|
+ EXPECT_THAT(std::get<3>(*rit), 1);
|
|
|
+ EXPECT_THAT(std::get<3>(*++rit), 2);
|
|
|
+ EXPECT_THAT(std::get<3>(*rit), 2);
|
|
|
+}
|
|
|
+
|
|
|
+TEST(RecursiveIteratorMapTest, PostIncrementReturnsCopyOfPrev) {
|
|
|
+ std::map<int, std::map<int, std::map<int, int>>> const map{
|
|
|
+ {1, {{1, {{1, 1}}}}}, {2, {{2, {{2, 2}}}, {3, {{3, 3}, {4, 4}}}}}};
|
|
|
+ auto rit = make_recursive_iterator(map);
|
|
|
+ EXPECT_THAT(std::get<3>(*rit), 1);
|
|
|
+ EXPECT_THAT(std::get<3>(*rit++), 1);
|
|
|
+ EXPECT_THAT(std::get<3>(*rit), 2);
|
|
|
+}
|
|
|
+
|
|
|
TEST(RecursiveIteratorMapTest, IterDistanceIsSumOfInnerContainerSizes) {
|
|
|
std::map<int, std::map<int, std::map<int, int>>> const map{
|
|
|
{1, {{1, {{1, 1}}}}}, {2, {{2, {{2, 2}}}, {3, {{3, 3}, {4, 4}}}}}};
|
|
|
@@ -33,6 +51,24 @@ TEST(RecursiveIteratorMapTest, CanMutatePointedToData) {
|
|
|
EXPECT_THAT(map[1][1][1], 4);
|
|
|
}
|
|
|
|
|
|
+TEST(BoundRecursiveIteratorMapTest, PreIncrementAdvancesIterator) {
|
|
|
+ std::map<int, std::map<int, std::map<int, int>>> map{
|
|
|
+ {1, {{1, {{1, 1}}}}}, {2, {{2, {{2, 2}}}, {3, {{3, 3}, {4, 4}}}}}};
|
|
|
+ auto rit = make_recursive_iterator<2>(map);
|
|
|
+ EXPECT_THAT(std::get<2>(*rit), map[1][1]);
|
|
|
+ EXPECT_THAT(std::get<2>(*++rit), map[2][2]);
|
|
|
+ EXPECT_THAT(std::get<2>(*rit), map[2][2]);
|
|
|
+}
|
|
|
+
|
|
|
+TEST(BoundRecursiveIteratorMapTest, PostIncrementReturnsCopyOfPrev) {
|
|
|
+ std::map<int, std::map<int, std::map<int, int>>> map{
|
|
|
+ {1, {{1, {{1, 1}}}}}, {2, {{2, {{2, 2}}}, {3, {{3, 3}, {4, 4}}}}}};
|
|
|
+ auto rit = make_recursive_iterator<2>(map);
|
|
|
+ EXPECT_THAT(std::get<2>(*rit), map[1][1]);
|
|
|
+ EXPECT_THAT(std::get<2>(*rit++), map[1][1]);
|
|
|
+ EXPECT_THAT(std::get<2>(*rit), map[2][2]);
|
|
|
+}
|
|
|
+
|
|
|
TEST(BoundRecursiveIteratorMapTest, IterDistanceSumOnNLayersSize) {
|
|
|
std::map<int, std::map<int, std::map<int, int>>> const map{
|
|
|
{1, {{1, {{1, 1}}}}}, {2, {{2, {{2, 2}}}, {3, {{3, 3}, {4, 4}}}}}};
|