mirror of
https://github.com/nlohmann/json.git
synced 2026-07-11 21:15:10 +00:00
Extend std::optional null regression coverage (assignment, get_to)
Adds two cases to the existing null-handling regression test for std::optional<T>: assignment (opt = json_null) throws for the same reason as direct construction, and get_to() correctly yields std::nullopt. Prompted by a review comment on #5246 asking for a fuller regression matrix; construction and get<optional<T>>() were already covered by #5247. Signed-off-by: Niels Lohmann <mail@nlohmann.me>
This commit is contained in:
@@ -1782,6 +1782,17 @@ TEST_CASE("std::optional")
|
||||
"[json.exception.type_error.302] type must be string, but is null", json::type_error&);
|
||||
CHECK_THROWS_WITH_AS(std::optional<int>(j_null),
|
||||
"[json.exception.type_error.302] type must be number, but is null", json::type_error&);
|
||||
|
||||
// Assignment goes through the same overload resolution as direct
|
||||
// construction, so it throws for the same reason.
|
||||
std::optional<std::string> opt_assign;
|
||||
CHECK_THROWS_WITH_AS(opt_assign = j_null,
|
||||
"[json.exception.type_error.302] type must be string, but is null", json::type_error&);
|
||||
|
||||
// get_to() is the correct way to obtain std::nullopt from a JSON null.
|
||||
std::optional<std::string> opt_get_to = "placeholder";
|
||||
j_null.get_to(opt_get_to);
|
||||
CHECK(opt_get_to == std::nullopt);
|
||||
}
|
||||
|
||||
SECTION("string")
|
||||
|
||||
Reference in New Issue
Block a user