mirror of
https://github.com/nlohmann/json.git
synced 2025-07-31 10:24:23 +03:00
Merge branch 'develop' into fix/1237
This commit is contained in:
@ -63,7 +63,7 @@ TEST_CASE("JSON patch")
|
||||
// is not an error, because "a" exists, and "b" will be added to
|
||||
// its value.
|
||||
CHECK_NOTHROW(doc1.patch(patch));
|
||||
CHECK(doc1.patch(patch) == R"(
|
||||
auto doc1_ans = R"(
|
||||
{
|
||||
"a": {
|
||||
"foo": 1,
|
||||
@ -72,7 +72,8 @@ TEST_CASE("JSON patch")
|
||||
}
|
||||
}
|
||||
}
|
||||
)"_json);
|
||||
)"_json;
|
||||
CHECK(doc1.patch(patch) == doc1_ans);
|
||||
|
||||
// It is an error in this document:
|
||||
json doc2 = R"({ "q": { "bar": 2 } })"_json;
|
||||
|
@ -1427,20 +1427,26 @@ TEST_CASE("regression tests")
|
||||
}
|
||||
})"_json;
|
||||
|
||||
CHECK_THROWS_AS(model.patch(R"([{"op": "move",
|
||||
"from": "/one/two/three",
|
||||
"path": "/a/b/c"}])"_json), json::out_of_range&);
|
||||
CHECK_THROWS_WITH(model.patch(R"([{"op": "move",
|
||||
"from": "/one/two/three",
|
||||
"path": "/a/b/c"}])"_json),
|
||||
auto p1 = R"([{"op": "move",
|
||||
"from": "/one/two/three",
|
||||
"path": "/a/b/c"}])"_json;
|
||||
CHECK_THROWS_AS(model.patch(p1), json::out_of_range&);
|
||||
|
||||
auto p2 = R"([{"op": "move",
|
||||
"from": "/one/two/three",
|
||||
"path": "/a/b/c"}])"_json;
|
||||
CHECK_THROWS_WITH(model.patch(p2),
|
||||
"[json.exception.out_of_range.403] key 'a' not found");
|
||||
|
||||
CHECK_THROWS_AS(model.patch(R"([{"op": "copy",
|
||||
auto p3 = R"([{"op": "copy",
|
||||
"from": "/one/two/three",
|
||||
"path": "/a/b/c"}])"_json;
|
||||
CHECK_THROWS_AS(model.patch(p3), json::out_of_range&);
|
||||
|
||||
auto p4 = R"([{"op": "copy",
|
||||
"from": "/one/two/three",
|
||||
"path": "/a/b/c"}])"_json), json::out_of_range&);
|
||||
CHECK_THROWS_WITH(model.patch(R"([{"op": "copy",
|
||||
"from": "/one/two/three",
|
||||
"path": "/a/b/c"}])"_json),
|
||||
"path": "/a/b/c"}])"_json;
|
||||
CHECK_THROWS_WITH(model.patch(p4),
|
||||
"[json.exception.out_of_range.403] key 'a' not found");
|
||||
}
|
||||
|
||||
|
@ -405,7 +405,7 @@ TEST_CASE("RFC 7159 examples")
|
||||
SECTION("13 Examples")
|
||||
{
|
||||
{
|
||||
CHECK_NOTHROW(json(R"(
|
||||
auto json_contents = R"(
|
||||
{
|
||||
"Image": {
|
||||
"Width": 800,
|
||||
@ -420,11 +420,13 @@ TEST_CASE("RFC 7159 examples")
|
||||
"IDs": [116, 943, 234, 38793]
|
||||
}
|
||||
}
|
||||
)"));
|
||||
)";
|
||||
|
||||
CHECK_NOTHROW(json(json_contents));
|
||||
}
|
||||
|
||||
{
|
||||
CHECK_NOTHROW(json(R"(
|
||||
auto json_contents = R"(
|
||||
[
|
||||
{
|
||||
"precision": "zip",
|
||||
@ -446,7 +448,8 @@ TEST_CASE("RFC 7159 examples")
|
||||
"Zip": "94085",
|
||||
"Country": "US"
|
||||
}
|
||||
])"));
|
||||
])";
|
||||
CHECK_NOTHROW(json(json_contents));
|
||||
}
|
||||
|
||||
CHECK(json::parse("\"Hello world!\"") == json("Hello world!"));
|
||||
@ -1343,13 +1346,11 @@ TEST_CASE("Big List of Naughty Strings")
|
||||
SECTION("roundtripping")
|
||||
{
|
||||
std::ifstream f("test/data/big-list-of-naughty-strings/blns.json");
|
||||
std::string line;
|
||||
|
||||
while (not f.eof())
|
||||
// read lines one by one, bail out on error or eof
|
||||
while (getline(f, line))
|
||||
{
|
||||
// read line
|
||||
std::string line;
|
||||
getline(f, line);
|
||||
|
||||
// trim whitespace
|
||||
line = trim(line);
|
||||
|
||||
|
@ -298,6 +298,19 @@ TEST_CASE("basic usage", "[udt]")
|
||||
CHECK(book == parsed_book);
|
||||
}
|
||||
|
||||
SECTION("via explicit calls to get_to")
|
||||
{
|
||||
udt::person person;
|
||||
udt::name name;
|
||||
|
||||
json person_json = big_json["contacts"][0]["person"];
|
||||
CHECK(person_json.get_to(person) == sfinae_addict);
|
||||
|
||||
// correct reference gets returned
|
||||
person_json["name"].get_to(name).m_val = "new name";
|
||||
CHECK(name.m_val == "new name");
|
||||
}
|
||||
|
||||
SECTION("implicit conversions")
|
||||
{
|
||||
const udt::contact_book parsed_book = big_json;
|
||||
|
Reference in New Issue
Block a user