def test_set_properties(self):
        obj = JsonConverter.to_map(
            "{ \"value1\": 123, \"value2\": { \"value21\": 111, \"value22\": 222 }, \"value3\": [ 444, "
            "{ \"value311\": 555 } ] } "
        )

        values = AnyValueMap.from_tuples(
            "value1", "AAA",
            "value2", "BBB",
            "value3.1.value312", "CCC",
            "value3.3", "DDD",
            "value4.1", "EEE"
        )
        RecursiveObjectWriter.set_properties(obj, values)

        values = RecursiveObjectReader.get_properties(obj)
        assert 8 == len(values)
        assert "AAA" == values["value1"]
        assert "BBB", values["value2"]
        assert 444 == values["value3.0"]
        assert 555 == values["value3.1.value311"]
        assert "CCC", values["value3.1.value312"]
        assert None is values["value3.2"]
        assert "DDD" == values["value3.3"]
        assert "EEE" == values["value4.1"]
    def test_get_properties(self):
        obj = JsonConverter.to_map(
            "{ \"value1\": 123, \"value2\": { \"value21\": 111, \"value22\": 222 }, \"value3\": [ 444, "
            "{ \"value311\": 555 } ] } ")

        values = RecursiveObjectReader.get_properties(obj)
        assert 5 == len(values)
        assert 123 == values["value1"]
        assert 111 == values["value2.value21"]
        assert 222 == values["value2.value22"]
        assert 444 == values["value3.0"]
        assert 555 == values["value3.1.value311"]