started fixing #323
This commit is contained in:
parent
a0ef5a194c
commit
2fa8ea0f74
5 changed files with 101 additions and 15 deletions
|
@ -109,8 +109,13 @@ TEST_CASE("JSON pointers")
|
|||
CHECK(j[json::json_pointer("/m~0n")] == j["m~n"]);
|
||||
|
||||
// unescaped access
|
||||
CHECK_THROWS_AS(j[json::json_pointer("/a/b")], std::out_of_range);
|
||||
CHECK_THROWS_WITH(j[json::json_pointer("/a/b")], "unresolved reference token 'b'");
|
||||
// access to nonexisting values yield object creation
|
||||
CHECK_NOTHROW(j[json::json_pointer("/a/b")] = 42);
|
||||
CHECK(j["a"]["b"] == json(42));
|
||||
CHECK_NOTHROW(j[json::json_pointer("/a/c/1")] = 42);
|
||||
CHECK(j["a"]["c"] == json({nullptr, 42}));
|
||||
CHECK_NOTHROW(j[json::json_pointer("/a/d/-")] = 42);
|
||||
CHECK(j["a"]["d"] == json::array({42}));
|
||||
// "/a/b" works for JSON {"a": {"b": 42}}
|
||||
CHECK(json({{"a", {{"b", 42}}}})[json::json_pointer("/a/b")] == json(42));
|
||||
|
||||
|
|
|
@ -482,4 +482,11 @@ TEST_CASE("regression tests")
|
|||
CHECK_NOTHROW(j << f);
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("issue #323 - add nested object capabilities to pointers")
|
||||
{
|
||||
json j;
|
||||
j["/this/that"_json_pointer] = 27;
|
||||
CHECK(j == json({{"this", {{"that", 27}}}}));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue