sots-engine/tests/game_design/test_json.cpp

26 lines
1,007 B
C++

// The tools' JSON reader.
#include "json_min.h"
#include "test_main.h"
TEST(json_min_reads_the_shapes_the_tools_need) {
json_min::Value v;
std::string err;
CHECK(json_min::parse(" {\"a\": [1, -2.5, \"x\\n\\u00e9\", null, true, false, {}], \"b\": {\"c\": \"d\"}} ", v, err));
CHECK(v.is_object());
CHECK(v["a"].is_array());
CHECK_EQ(v["a"].items.size(), std::size_t(7));
CHECK_EQ(v["a"].items[0].as_int(), 1);
CHECK(v["a"].items[1].num == -2.5);
CHECK_EQ(v["a"].items[2].str(), std::string("x\n\xc3\xa9"));
CHECK(v["a"].items[3].is_null());
CHECK(v["a"].items[4].as_bool());
CHECK(!v["a"].items[5].as_bool());
CHECK(v["a"].items[6].is_object());
CHECK_EQ(v["b"]["c"].str(), "d");
CHECK(v["missing"].is_null());
CHECK(!json_min::parse("[1, 2", v, err));
CHECK(!err.empty());
CHECK(!json_min::parse("{\"a\" 1}", v, err));
CHECK(!json_min::parse("[1] x", v, err));
CHECK_EQ(json_min::quote("a\"b\\c\n"), "\"a\\\"b\\\\c\\n\"");
}