#include "rei-json/json.h" #include #include #include #include TEST_CASE("Basic json") { auto objectJson = rei::json::JsonObject{}; objectJson .set("keyPositiveNumber", 12) .set("keyNegativeNumber", -13) .set("keyBooleanTrue", true) .set("keyBooleanFalse", false) .set("keyString", "YEP") .set("keyEmptyString", "") .setNull("keyNull"); rei::json::JsonObject obj{}; obj.set("keyNumberOnObject", 42); rei::json::JsonArray array{}; array.push(42); array.push("elemString"); array.push(""); array.push(true); array.push(false); array.pushNull(); objectJson.set("keyObject", std::move(obj)); objectJson.set("keyArray", std::move(array)); REQUIRE(objectJson.getNumber("keyPositiveNumber") == 12); REQUIRE(objectJson["keyPositiveNumber"].asNumber() == 12); REQUIRE(objectJson.getNumber("keyNegativeNumber") == -13); REQUIRE(objectJson["keyNegativeNumber"].asNumber() == -13); REQUIRE(objectJson.getBool("keyBooleanTrue") == true); REQUIRE(objectJson["keyBooleanTrue"].asBool() == true); REQUIRE(objectJson.getBool("keyBooleanFalse") == false); REQUIRE(objectJson["keyBooleanFalse"].asBool() == false); REQUIRE(objectJson.getString("keyString") == "YEP"); REQUIRE(objectJson["keyString"].asString() == "YEP"); REQUIRE(objectJson.getString("keyEmptyString") == ""); REQUIRE(objectJson["keyEmptyString"].asString() == ""); REQUIRE(objectJson.getObject("keyObject").getNumber("keyNumberOnObject") == 42); REQUIRE(objectJson["keyObject"].asObject()["keyNumberOnObject"].asNumber() == 42); REQUIRE(objectJson.hasNull("keyNull") == true); REQUIRE(objectJson["keyNull"].isNull() == true); REQUIRE(objectJson.hasNull("keyPositiveNumber") == false); REQUIRE(objectJson["keyPositiveNumber"].isNull() == false); REQUIRE_THROWS(objectJson.getNumber("nonExistantKey")); REQUIRE_THROWS(objectJson["nonExistantKey"]); auto& arrayJson = objectJson.getArray("keyArray"); REQUIRE(arrayJson.getNumber(0) == 42); REQUIRE(arrayJson[0].asNumber() == 42); REQUIRE(arrayJson.getString(1) == "elemString"); REQUIRE(arrayJson[1].asString() == "elemString"); REQUIRE(arrayJson.getString(2) == ""); REQUIRE(arrayJson[2].asString() == ""); REQUIRE(arrayJson.getBool(3) == true); REQUIRE(arrayJson[3].asBool() == true); REQUIRE(arrayJson.getBool(4) == false); REQUIRE(arrayJson[4].asBool() == false); REQUIRE(arrayJson.hasNull(5)); REQUIRE(arrayJson[5].isNull() == true); REQUIRE_THROWS(arrayJson.getNumber(99)); REQUIRE_THROWS(arrayJson[99].asNumber()); objectJson.remove("keyString"); REQUIRE_THROWS(objectJson.getString("keyString") == "YEP"); arrayJson.remove(0); REQUIRE(arrayJson[0].isNumber() == false); REQUIRE(arrayJson[0].isString() == true); REQUIRE(arrayJson[0].asString() == "elemString"); }