summaryrefslogtreecommitdiff
path: root/json4cpp/tests/src/unit-diagnostic-positions-only.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'json4cpp/tests/src/unit-diagnostic-positions-only.cpp')
-rw-r--r--json4cpp/tests/src/unit-diagnostic-positions-only.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/json4cpp/tests/src/unit-diagnostic-positions-only.cpp b/json4cpp/tests/src/unit-diagnostic-positions-only.cpp
new file mode 100644
index 0000000000..735376514a
--- /dev/null
+++ b/json4cpp/tests/src/unit-diagnostic-positions-only.cpp
@@ -0,0 +1,44 @@
+// __ _____ _____ _____
+// __| | __| | | | JSON for Modern C++ (supporting code)
+// | | |__ | | | | | | version 3.12.0
+// |_____|_____|_____|_|___| https://github.com/nlohmann/json
+//
+// SPDX-FileCopyrightText: 2013-2026 Niels Lohmann <https://nlohmann.me>
+// SPDX-License-Identifier: MIT
+
+#include "doctest_compatibility.h"
+
+#ifdef JSON_DIAGNOSTICS
+ #undef JSON_DIAGNOSTICS
+#endif
+
+#define JSON_DIAGNOSTICS 0
+#define JSON_DIAGNOSTIC_POSITIONS 1
+#include <nlohmann/json.hpp>
+
+using json = nlohmann::json;
+
+TEST_CASE("Better diagnostics with positions only")
+{
+ SECTION("invalid type")
+ {
+ const std::string json_invalid_string = R"(
+ {
+ "address": {
+ "street": "Fake Street",
+ "housenumber": "1"
+ }
+ }
+ )";
+ json j = json::parse(json_invalid_string);
+ CHECK_THROWS_WITH_AS(j.at("address").at("housenumber").get<int>(),
+ "[json.exception.type_error.302] (bytes 108-111) type must be number, but is string", json::type_error);
+ }
+
+ SECTION("invalid type without positions")
+ {
+ const json j = "foo";
+ CHECK_THROWS_WITH_AS(j.get<int>(),
+ "[json.exception.type_error.302] type must be number, but is string", json::type_error);
+ }
+}