|
@@ -6,9 +6,11 @@
|
|
|
#include "ranges.h"
|
|
#include "ranges.h"
|
|
|
#include "xcode_gtest_helper.h"
|
|
#include "xcode_gtest_helper.h"
|
|
|
|
|
|
|
|
|
|
+using iterator::recursive_iterator;
|
|
|
|
|
+
|
|
|
TEST(RecursiveIteratorMapVectorTest, IterDistanceIsSumOfInnerContainerSizes) {
|
|
TEST(RecursiveIteratorMapVectorTest, IterDistanceIsSumOfInnerContainerSizes) {
|
|
|
std::map<int, std::vector<int>> const obj{{1, {1, 2}}, {2, {3, 4, 5}}};
|
|
std::map<int, std::vector<int>> const obj{{1, {1, 2}}, {2, {3, 4, 5}}};
|
|
|
- auto rit = make_recursive_iterator(obj);
|
|
|
|
|
|
|
+ auto rit = recursive_iterator(obj);
|
|
|
|
|
|
|
|
EXPECT_EQ(ranges::distance(rit, iterator::sentinel), 5);
|
|
EXPECT_EQ(ranges::distance(rit, iterator::sentinel), 5);
|
|
|
}
|
|
}
|
|
@@ -17,7 +19,7 @@ TEST(RecursiveIteratorMapVectorTest, ElementsAreUnwrappedAsATuple) {
|
|
|
std::map<int, std::vector<int>> const obj{{1, {1, 2}}, {2, {3, 4, 5}}};
|
|
std::map<int, std::vector<int>> const obj{{1, {1, 2}}, {2, {3, 4, 5}}};
|
|
|
std::vector<std::tuple<int, int>> const expected{
|
|
std::vector<std::tuple<int, int>> const expected{
|
|
|
{1, 1}, {1, 2}, {2, 3}, {2, 4}, {2, 5}};
|
|
{1, 1}, {1, 2}, {2, 3}, {2, 4}, {2, 5}};
|
|
|
- auto rit = make_recursive_iterator(obj);
|
|
|
|
|
|
|
+ auto rit = recursive_iterator(obj);
|
|
|
|
|
|
|
|
EXPECT_EQ(
|
|
EXPECT_EQ(
|
|
|
(ranges::to<std::vector<std::tuple<int, int>>>(rit, iterator::sentinel)),
|
|
(ranges::to<std::vector<std::tuple<int, int>>>(rit, iterator::sentinel)),
|
|
@@ -26,7 +28,7 @@ TEST(RecursiveIteratorMapVectorTest, ElementsAreUnwrappedAsATuple) {
|
|
|
|
|
|
|
|
TEST(RecursiveIteratorMapVectorTest, CanMutatePointedToData) {
|
|
TEST(RecursiveIteratorMapVectorTest, CanMutatePointedToData) {
|
|
|
std::map<int, std::vector<int>> obj{{1, {1, 2}}, {2, {3, 4, 5}}};
|
|
std::map<int, std::vector<int>> obj{{1, {1, 2}}, {2, {3, 4, 5}}};
|
|
|
- auto rit = make_recursive_iterator(obj);
|
|
|
|
|
|
|
+ auto rit = recursive_iterator(obj);
|
|
|
std::get<1>(*rit) = 6;
|
|
std::get<1>(*rit) = 6;
|
|
|
EXPECT_EQ(obj[1][0], 6);
|
|
EXPECT_EQ(obj[1][0], 6);
|
|
|
}
|
|
}
|
|
@@ -34,7 +36,7 @@ TEST(RecursiveIteratorMapVectorTest, CanMutatePointedToData) {
|
|
|
TEST(RecursiveIteratorMapMapVectorTest, CanMutatePointedToData) {
|
|
TEST(RecursiveIteratorMapMapVectorTest, CanMutatePointedToData) {
|
|
|
std::map<int, std::map<int, std::vector<int>>> obj{{1, {{1, {1, 2}}}},
|
|
std::map<int, std::map<int, std::vector<int>>> obj{{1, {{1, {1, 2}}}},
|
|
|
{2, {{1, {3, 4, 5}}}}};
|
|
{2, {{1, {3, 4, 5}}}}};
|
|
|
- auto rit = make_recursive_iterator(obj);
|
|
|
|
|
|
|
+ auto rit = recursive_iterator(obj);
|
|
|
std::get<2>(*rit) = 6;
|
|
std::get<2>(*rit) = 6;
|
|
|
EXPECT_EQ(obj[1][1][0], 6);
|
|
EXPECT_EQ(obj[1][1][0], 6);
|
|
|
}
|
|
}
|
|
@@ -42,7 +44,7 @@ TEST(RecursiveIteratorMapMapVectorTest, CanMutatePointedToData) {
|
|
|
TEST(RecursiveIteratorVectorMapTest, IterDistanceIsSumOfInnerContainerSizes) {
|
|
TEST(RecursiveIteratorVectorMapTest, IterDistanceIsSumOfInnerContainerSizes) {
|
|
|
std::vector<std::map<int, int>> const obj{{{1, 1}, {2, 2}},
|
|
std::vector<std::map<int, int>> const obj{{{1, 1}, {2, 2}},
|
|
|
{{3, 3}, {4, 4}, {5, 5}}};
|
|
{{3, 3}, {4, 4}, {5, 5}}};
|
|
|
- auto rit = make_recursive_iterator(obj);
|
|
|
|
|
|
|
+ auto rit = recursive_iterator(obj);
|
|
|
|
|
|
|
|
EXPECT_EQ(ranges::distance(rit, iterator::sentinel), 5);
|
|
EXPECT_EQ(ranges::distance(rit, iterator::sentinel), 5);
|
|
|
}
|
|
}
|
|
@@ -52,7 +54,7 @@ TEST(RecursiveIteratorVectorMapTest, ElementsAreUnwrappedAsATuple) {
|
|
|
{{3, 3}, {4, 4}, {5, 5}}};
|
|
{{3, 3}, {4, 4}, {5, 5}}};
|
|
|
std::vector<std::pair<int, int>> const expected{
|
|
std::vector<std::pair<int, int>> const expected{
|
|
|
{1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}};
|
|
{1, 1}, {2, 2}, {3, 3}, {4, 4}, {5, 5}};
|
|
|
- auto rit = make_recursive_iterator(obj);
|
|
|
|
|
|
|
+ auto rit = recursive_iterator(obj);
|
|
|
|
|
|
|
|
EXPECT_EQ(
|
|
EXPECT_EQ(
|
|
|
(ranges::to<std::vector<std::pair<int, int>>>(rit, iterator::sentinel)),
|
|
(ranges::to<std::vector<std::pair<int, int>>>(rit, iterator::sentinel)),
|
|
@@ -62,7 +64,7 @@ TEST(RecursiveIteratorVectorMapTest, ElementsAreUnwrappedAsATuple) {
|
|
|
TEST(RecursiveIteratorVectorMapTest, CanMutatePointedToData) {
|
|
TEST(RecursiveIteratorVectorMapTest, CanMutatePointedToData) {
|
|
|
std::vector<std::map<int, int>> obj{{{1, 1}, {2, 2}},
|
|
std::vector<std::map<int, int>> obj{{{1, 1}, {2, 2}},
|
|
|
{{3, 3}, {4, 4}, {5, 5}}};
|
|
{{3, 3}, {4, 4}, {5, 5}}};
|
|
|
- auto rit = make_recursive_iterator(obj);
|
|
|
|
|
|
|
+ auto rit = recursive_iterator(obj);
|
|
|
std::get<1>(*rit) = 6;
|
|
std::get<1>(*rit) = 6;
|
|
|
EXPECT_EQ(obj[0][1], 6);
|
|
EXPECT_EQ(obj[0][1], 6);
|
|
|
}
|
|
}
|
|
@@ -71,7 +73,7 @@ TEST(RecursiveIteratorMapVecMapTest, IterDistanceIsSumOfInnerContainerSizes) {
|
|
|
std::map<int, std::vector<std::map<int, int>>> const obj{
|
|
std::map<int, std::vector<std::map<int, int>>> const obj{
|
|
|
{1, {{{1, 1}, {2, 2}}}}};
|
|
{1, {{{1, 1}, {2, 2}}}}};
|
|
|
std::vector<std::tuple<int, int, int>> const expected{{1, 1, 1}, {1, 2, 2}};
|
|
std::vector<std::tuple<int, int, int>> const expected{{1, 1, 1}, {1, 2, 2}};
|
|
|
- auto rit = make_recursive_iterator(obj);
|
|
|
|
|
|
|
+ auto rit = recursive_iterator(obj);
|
|
|
|
|
|
|
|
EXPECT_EQ(ranges::distance(rit, iterator::sentinel), expected.size());
|
|
EXPECT_EQ(ranges::distance(rit, iterator::sentinel), expected.size());
|
|
|
}
|
|
}
|
|
@@ -80,7 +82,7 @@ TEST(RecursiveIteratorMapVecMapTest, ElementsAreUnwrappedAsATuple) {
|
|
|
std::map<int, std::vector<std::map<int, int>>> const obj{
|
|
std::map<int, std::vector<std::map<int, int>>> const obj{
|
|
|
{1, {{{1, 1}, {2, 2}}}}};
|
|
{1, {{{1, 1}, {2, 2}}}}};
|
|
|
std::vector<std::tuple<int, int, int>> const expected{{1, 1, 1}, {1, 2, 2}};
|
|
std::vector<std::tuple<int, int, int>> const expected{{1, 1, 1}, {1, 2, 2}};
|
|
|
- auto rit = make_recursive_iterator(obj);
|
|
|
|
|
|
|
+ auto rit = recursive_iterator(obj);
|
|
|
|
|
|
|
|
EXPECT_EQ((ranges::to<std::vector<std::tuple<int, int, int>>>(
|
|
EXPECT_EQ((ranges::to<std::vector<std::tuple<int, int, int>>>(
|
|
|
rit, iterator::sentinel)),
|
|
rit, iterator::sentinel)),
|
|
@@ -89,7 +91,7 @@ TEST(RecursiveIteratorMapVecMapTest, ElementsAreUnwrappedAsATuple) {
|
|
|
|
|
|
|
|
TEST(RecursiveIteratorMapVecMapTest, CanMutatePointedToData) {
|
|
TEST(RecursiveIteratorMapVecMapTest, CanMutatePointedToData) {
|
|
|
std::map<int, std::vector<std::map<int, int>>> obj{{1, {{{1, 1}, {2, 2}}}}};
|
|
std::map<int, std::vector<std::map<int, int>>> obj{{1, {{{1, 1}, {2, 2}}}}};
|
|
|
- auto rit = make_recursive_iterator(obj);
|
|
|
|
|
|
|
+ auto rit = recursive_iterator(obj);
|
|
|
std::get<2>(*rit) = 4;
|
|
std::get<2>(*rit) = 4;
|
|
|
EXPECT_EQ(obj[1][0][1], 4);
|
|
EXPECT_EQ(obj[1][0][1], 4);
|
|
|
}
|
|
}
|
|
@@ -97,7 +99,7 @@ TEST(RecursiveIteratorMapVecMapTest, CanMutatePointedToData) {
|
|
|
TEST(RecursiveIteratorVecMapVecTest, IterDistanceIsSumOfInnerContainerSizes) {
|
|
TEST(RecursiveIteratorVecMapVecTest, IterDistanceIsSumOfInnerContainerSizes) {
|
|
|
std::vector<std::map<int, std::vector<int>>> const obj{
|
|
std::vector<std::map<int, std::vector<int>>> const obj{
|
|
|
{{1, {1, 2}}, {2, {3, 4, 5}}}, {{1, {3, 4}}}};
|
|
{{1, {1, 2}}, {2, {3, 4, 5}}}, {{1, {3, 4}}}};
|
|
|
- auto rit = make_recursive_iterator(obj);
|
|
|
|
|
|
|
+ auto rit = recursive_iterator(obj);
|
|
|
|
|
|
|
|
EXPECT_EQ(ranges::distance(rit, iterator::sentinel), 7);
|
|
EXPECT_EQ(ranges::distance(rit, iterator::sentinel), 7);
|
|
|
}
|
|
}
|
|
@@ -107,7 +109,7 @@ TEST(RecursiveIteratorVecMapVecTest, ElementsAreUnwrappedAsATuple) {
|
|
|
{{1, {1, 2}}, {2, {3, 4, 5}}}, {{1, {3, 4}}}};
|
|
{{1, {1, 2}}, {2, {3, 4, 5}}}, {{1, {3, 4}}}};
|
|
|
std::vector<std::tuple<int, int>> const expected{
|
|
std::vector<std::tuple<int, int>> const expected{
|
|
|
{1, 1}, {1, 2}, {2, 3}, {2, 4}, {2, 5}, {1, 3}, {1, 4}};
|
|
{1, 1}, {1, 2}, {2, 3}, {2, 4}, {2, 5}, {1, 3}, {1, 4}};
|
|
|
- auto rit = make_recursive_iterator(obj);
|
|
|
|
|
|
|
+ auto rit = recursive_iterator(obj);
|
|
|
|
|
|
|
|
EXPECT_EQ(
|
|
EXPECT_EQ(
|
|
|
(ranges::to<std::vector<std::tuple<int, int>>>(rit, iterator::sentinel)),
|
|
(ranges::to<std::vector<std::tuple<int, int>>>(rit, iterator::sentinel)),
|
|
@@ -117,7 +119,7 @@ TEST(RecursiveIteratorVecMapVecTest, ElementsAreUnwrappedAsATuple) {
|
|
|
TEST(RecursiveIteratorVecMapVecTest, CanMutatePointedToData) {
|
|
TEST(RecursiveIteratorVecMapVecTest, CanMutatePointedToData) {
|
|
|
std::vector<std::map<int, std::vector<int>>> obj{
|
|
std::vector<std::map<int, std::vector<int>>> obj{
|
|
|
{{1, {1, 2}}, {2, {3, 4, 5}}}, {{1, {3, 4}}}};
|
|
{{1, {1, 2}}, {2, {3, 4, 5}}}, {{1, {3, 4}}}};
|
|
|
- auto rit = make_recursive_iterator(obj);
|
|
|
|
|
|
|
+ auto rit = recursive_iterator(obj);
|
|
|
std::get<1>(*rit) = 6;
|
|
std::get<1>(*rit) = 6;
|
|
|
EXPECT_EQ(obj[0][1][0], 6);
|
|
EXPECT_EQ(obj[0][1][0], 6);
|
|
|
}
|
|
}
|