added items() function #874
This commit is contained in:
parent
96b40b27a5
commit
78f8f837e6
5 changed files with 790 additions and 0 deletions
|
@ -727,3 +727,700 @@ TEST_CASE("iterator_wrapper")
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("items()")
|
||||
{
|
||||
SECTION("object")
|
||||
{
|
||||
SECTION("value")
|
||||
{
|
||||
json j = {{"A", 1}, {"B", 2}};
|
||||
int counter = 1;
|
||||
|
||||
for (auto i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "A");
|
||||
CHECK(i.value() == json(1));
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "B");
|
||||
CHECK(i.value() == json(2));
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
|
||||
SECTION("reference")
|
||||
{
|
||||
json j = {{"A", 1}, {"B", 2}};
|
||||
int counter = 1;
|
||||
|
||||
for (auto& i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "A");
|
||||
CHECK(i.value() == json(1));
|
||||
|
||||
// change the value
|
||||
i.value() = json(11);
|
||||
CHECK(i.value() == json(11));
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "B");
|
||||
CHECK(i.value() == json(2));
|
||||
|
||||
// change the value
|
||||
i.value() = json(22);
|
||||
CHECK(i.value() == json(22));
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
|
||||
// check if values where changed
|
||||
CHECK(j == json({{"A", 11}, {"B", 22}}));
|
||||
}
|
||||
|
||||
SECTION("const value")
|
||||
{
|
||||
json j = {{"A", 1}, {"B", 2}};
|
||||
int counter = 1;
|
||||
|
||||
for (const auto i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "A");
|
||||
CHECK(i.value() == json(1));
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "B");
|
||||
CHECK(i.value() == json(2));
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
|
||||
SECTION("const reference")
|
||||
{
|
||||
json j = {{"A", 1}, {"B", 2}};
|
||||
int counter = 1;
|
||||
|
||||
for (const auto& i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "A");
|
||||
CHECK(i.value() == json(1));
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "B");
|
||||
CHECK(i.value() == json(2));
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("const object")
|
||||
{
|
||||
SECTION("value")
|
||||
{
|
||||
const json j = {{"A", 1}, {"B", 2}};
|
||||
int counter = 1;
|
||||
|
||||
for (auto i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "A");
|
||||
CHECK(i.value() == json(1));
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "B");
|
||||
CHECK(i.value() == json(2));
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
|
||||
SECTION("reference")
|
||||
{
|
||||
const json j = {{"A", 1}, {"B", 2}};
|
||||
int counter = 1;
|
||||
|
||||
for (auto& i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "A");
|
||||
CHECK(i.value() == json(1));
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "B");
|
||||
CHECK(i.value() == json(2));
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
|
||||
SECTION("const value")
|
||||
{
|
||||
const json j = {{"A", 1}, {"B", 2}};
|
||||
int counter = 1;
|
||||
|
||||
for (const auto i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "A");
|
||||
CHECK(i.value() == json(1));
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "B");
|
||||
CHECK(i.value() == json(2));
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
|
||||
SECTION("const reference")
|
||||
{
|
||||
const json j = {{"A", 1}, {"B", 2}};
|
||||
int counter = 1;
|
||||
|
||||
for (const auto& i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "A");
|
||||
CHECK(i.value() == json(1));
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "B");
|
||||
CHECK(i.value() == json(2));
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("array")
|
||||
{
|
||||
SECTION("value")
|
||||
{
|
||||
json j = {"A", "B"};
|
||||
int counter = 1;
|
||||
|
||||
for (auto i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "0");
|
||||
CHECK(i.value() == "A");
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "1");
|
||||
CHECK(i.value() == "B");
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
|
||||
SECTION("reference")
|
||||
{
|
||||
json j = {"A", "B"};
|
||||
int counter = 1;
|
||||
|
||||
for (auto& i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "0");
|
||||
CHECK(i.value() == "A");
|
||||
|
||||
// change the value
|
||||
i.value() = "AA";
|
||||
CHECK(i.value() == "AA");
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "1");
|
||||
CHECK(i.value() == "B");
|
||||
|
||||
// change the value
|
||||
i.value() = "BB";
|
||||
CHECK(i.value() == "BB");
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
|
||||
// check if values where changed
|
||||
CHECK(j == json({"AA", "BB"}));
|
||||
}
|
||||
|
||||
SECTION("const value")
|
||||
{
|
||||
json j = {"A", "B"};
|
||||
int counter = 1;
|
||||
|
||||
for (const auto i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "0");
|
||||
CHECK(i.value() == "A");
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "1");
|
||||
CHECK(i.value() == "B");
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
|
||||
SECTION("const reference")
|
||||
{
|
||||
json j = {"A", "B"};
|
||||
int counter = 1;
|
||||
|
||||
for (const auto& i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "0");
|
||||
CHECK(i.value() == "A");
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "1");
|
||||
CHECK(i.value() == "B");
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("const array")
|
||||
{
|
||||
SECTION("value")
|
||||
{
|
||||
const json j = {"A", "B"};
|
||||
int counter = 1;
|
||||
|
||||
for (auto i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "0");
|
||||
CHECK(i.value() == "A");
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "1");
|
||||
CHECK(i.value() == "B");
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
|
||||
SECTION("reference")
|
||||
{
|
||||
const json j = {"A", "B"};
|
||||
int counter = 1;
|
||||
|
||||
for (auto& i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "0");
|
||||
CHECK(i.value() == "A");
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "1");
|
||||
CHECK(i.value() == "B");
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
|
||||
SECTION("const value")
|
||||
{
|
||||
const json j = {"A", "B"};
|
||||
int counter = 1;
|
||||
|
||||
for (const auto i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "0");
|
||||
CHECK(i.value() == "A");
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "1");
|
||||
CHECK(i.value() == "B");
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
|
||||
SECTION("const reference")
|
||||
{
|
||||
const json j = {"A", "B"};
|
||||
int counter = 1;
|
||||
|
||||
for (const auto& i : j.items())
|
||||
{
|
||||
switch (counter++)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
CHECK(i.key() == "0");
|
||||
CHECK(i.value() == "A");
|
||||
break;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
CHECK(i.key() == "1");
|
||||
CHECK(i.value() == "B");
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CHECK(counter == 3);
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("primitive")
|
||||
{
|
||||
SECTION("value")
|
||||
{
|
||||
json j = 1;
|
||||
int counter = 1;
|
||||
|
||||
for (auto i : j.items())
|
||||
{
|
||||
++counter;
|
||||
CHECK(i.key() == "");
|
||||
CHECK(i.value() == json(1));
|
||||
}
|
||||
|
||||
CHECK(counter == 2);
|
||||
}
|
||||
|
||||
SECTION("reference")
|
||||
{
|
||||
json j = 1;
|
||||
int counter = 1;
|
||||
|
||||
for (auto& i : j.items())
|
||||
{
|
||||
++counter;
|
||||
CHECK(i.key() == "");
|
||||
CHECK(i.value() == json(1));
|
||||
|
||||
// change value
|
||||
i.value() = json(2);
|
||||
}
|
||||
|
||||
CHECK(counter == 2);
|
||||
|
||||
// check if value has changed
|
||||
CHECK(j == json(2));
|
||||
}
|
||||
|
||||
SECTION("const value")
|
||||
{
|
||||
json j = 1;
|
||||
int counter = 1;
|
||||
|
||||
for (const auto i : j.items())
|
||||
{
|
||||
++counter;
|
||||
CHECK(i.key() == "");
|
||||
CHECK(i.value() == json(1));
|
||||
}
|
||||
|
||||
CHECK(counter == 2);
|
||||
}
|
||||
|
||||
SECTION("const reference")
|
||||
{
|
||||
json j = 1;
|
||||
int counter = 1;
|
||||
|
||||
for (const auto& i : j.items())
|
||||
{
|
||||
++counter;
|
||||
CHECK(i.key() == "");
|
||||
CHECK(i.value() == json(1));
|
||||
}
|
||||
|
||||
CHECK(counter == 2);
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("const primitive")
|
||||
{
|
||||
SECTION("value")
|
||||
{
|
||||
const json j = 1;
|
||||
int counter = 1;
|
||||
|
||||
for (auto i : j.items())
|
||||
{
|
||||
++counter;
|
||||
CHECK(i.key() == "");
|
||||
CHECK(i.value() == json(1));
|
||||
}
|
||||
|
||||
CHECK(counter == 2);
|
||||
}
|
||||
|
||||
SECTION("reference")
|
||||
{
|
||||
const json j = 1;
|
||||
int counter = 1;
|
||||
|
||||
for (auto& i : j.items())
|
||||
{
|
||||
++counter;
|
||||
CHECK(i.key() == "");
|
||||
CHECK(i.value() == json(1));
|
||||
}
|
||||
|
||||
CHECK(counter == 2);
|
||||
}
|
||||
|
||||
SECTION("const value")
|
||||
{
|
||||
const json j = 1;
|
||||
int counter = 1;
|
||||
|
||||
for (const auto i : j.items())
|
||||
{
|
||||
++counter;
|
||||
CHECK(i.key() == "");
|
||||
CHECK(i.value() == json(1));
|
||||
}
|
||||
|
||||
CHECK(counter == 2);
|
||||
}
|
||||
|
||||
SECTION("const reference")
|
||||
{
|
||||
const json j = 1;
|
||||
int counter = 1;
|
||||
|
||||
for (const auto& i : j.items())
|
||||
{
|
||||
++counter;
|
||||
CHECK(i.key() == "");
|
||||
CHECK(i.value() == json(1));
|
||||
}
|
||||
|
||||
CHECK(counter == 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue