rei-json/tests/parsing.cpp

51 lines
1.5 KiB
C++
Raw Permalink Normal View History

2024-11-11 16:36:37 +01:00
#include "rei-json/Object.h"
#include "rei-json/json.h"
#include <catch2/catch_test_macros.hpp>
#include <string>
TEST_CASE("Parsing json 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"
})";
auto json = rei::json::parse(jsonStr);
auto& objectJson = json.asObject();
2024-11-11 16:36:37 +01:00
REQUIRE(objectJson.getNumber("keyPositiveNumber") == 12);
REQUIRE(objectJson.getNumber("keyNegativeNumber") == -13);
REQUIRE(objectJson.getBool("keyBooleanTrue") == true);
REQUIRE(objectJson.getBool("keyBooleanFalse") == false);
REQUIRE(objectJson.getString("keyString") == "YEP");
REQUIRE(objectJson.getString("keyEmptyString") == "");
REQUIRE(objectJson.getObject("keyObject").getNumber("keyNumberOnObject") == 42);
REQUIRE(objectJson.hasNull("keyNull") == true);
REQUIRE(objectJson.hasNull("keyPositiveNumber") == false);
REQUIRE_THROWS(objectJson.getNumber("nonExistantKey"));
auto& arrayJson = objectJson.getArray("keyArray");
REQUIRE(arrayJson.getNumber(0) == 42);
REQUIRE(arrayJson.getString(1) == "elemString");
REQUIRE(arrayJson.getString(2) == "");
REQUIRE(arrayJson.getBool(3) == true);
REQUIRE(arrayJson.getBool(4) == false);
REQUIRE(arrayJson.hasNull(5));
REQUIRE_THROWS(arrayJson.getNumber(99));
}