mirror of
https://codeberg.org/vyn/rei-json.git
synced 2025-07-01 17:43:18 +00:00
84 lines
1.5 KiB
C++
84 lines
1.5 KiB
C++
|
#include "catch2/catch_test_macros.hpp"
|
||
|
#include "catch2/matchers/catch_matchers.hpp"
|
||
|
#include "rei-json/json.h"
|
||
|
#include <catch2/catch_all.hpp>
|
||
|
#include <exception>
|
||
|
#include <print>
|
||
|
#include <stdexcept>
|
||
|
#include <string>
|
||
|
#include <utility>
|
||
|
|
||
|
TEST_CASE("Parsing errors") {
|
||
|
SECTION("Root object") {
|
||
|
std::string jsonStr = R"(
|
||
|
"keyArray": [
|
||
|
42,
|
||
|
"elemString",
|
||
|
"",
|
||
|
true,
|
||
|
false,
|
||
|
null
|
||
|
],
|
||
|
"keyBooleanFalse": false,
|
||
|
"keyBooleanTrue": true,
|
||
|
"keyEmptyString": "",
|
||
|
"keyNegativeNumber": -13,
|
||
|
"keyNull": null,
|
||
|
"keyObject": {
|
||
|
"keyNumberOnObject": 42
|
||
|
},
|
||
|
"keyPositiveNumber": 12,
|
||
|
"keyString": "YEP"
|
||
|
})";
|
||
|
REQUIRE_THROWS_WITH(rei::json::parse(jsonStr), "2:1: Expected JSON object or array");
|
||
|
}
|
||
|
|
||
|
SECTION("Missing comma") {
|
||
|
std::string jsonStr = R"({
|
||
|
"keyArray": [
|
||
|
42,
|
||
|
"elemString",
|
||
|
"",
|
||
|
true,
|
||
|
false,
|
||
|
null
|
||
|
],
|
||
|
"keyBooleanFalse": false,
|
||
|
"keyBooleanTrue": true
|
||
|
"keyEmptyString": "",
|
||
|
"keyNegativeNumber": -13,
|
||
|
"keyNull": null,
|
||
|
"keyObject": {
|
||
|
"keyNumberOnObject": 42
|
||
|
},
|
||
|
"keyPositiveNumber": 12,
|
||
|
"keyString": "YEP"
|
||
|
})";
|
||
|
REQUIRE_THROWS_WITH(rei::json::parse(jsonStr), "12:1: Expected comma (',') or object ending ('}')");
|
||
|
}
|
||
|
|
||
|
SECTION("Missing object key quote") {
|
||
|
std::string jsonStr = R"({
|
||
|
"keyArray": [
|
||
|
42,
|
||
|
"elemString",
|
||
|
"",
|
||
|
true,
|
||
|
false,
|
||
|
null
|
||
|
],
|
||
|
"keyBooleanFalse": false,
|
||
|
keyBooleanTrue": true,
|
||
|
"keyEmptyString": "",
|
||
|
"keyNegativeNumber": -13,
|
||
|
"keyNull": null,
|
||
|
"keyObject": {
|
||
|
"keyNumberOnObject": 42
|
||
|
},
|
||
|
"keyPositiveNumber": 12,
|
||
|
"keyString": "YEP"
|
||
|
})";
|
||
|
REQUIRE_THROWS_WITH(rei::json::parse(jsonStr), "11:1: Expected '\"'");
|
||
|
}
|
||
|
}
|