#include "catch2/catch_test_macros.hpp" #include "catch2/matchers/catch_matchers.hpp" #include "rei-json/json.h" #include #include #include #include #include #include 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 '\"'"); } }