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