// 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\""); }