| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- // Copyright Benoit Blanchon 2014-2017
- // MIT License
- //
- // Arduino JSON library
- // https://bblanchon.github.io/ArduinoJson/
- // If you like this project, please add a star!
- #include <ArduinoJson.h>
- #include <catch.hpp>
- TEST_CASE("JsonBuffer::parseObject()") {
- DynamicJsonBuffer jb;
- SECTION("EmptyObject") {
- JsonObject& obj = jb.parseObject("{}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 0);
- }
- SECTION("MissingOpeningBrace") {
- JsonObject& obj = jb.parseObject("}");
- REQUIRE_FALSE(obj.success());
- }
- SECTION("MissingClosingBrace") {
- JsonObject& obj = jb.parseObject("{");
- REQUIRE_FALSE(obj.success());
- }
- SECTION("MissingColonAndValue") {
- JsonObject& obj = jb.parseObject("{\"key\"}");
- REQUIRE_FALSE(obj.success());
- }
- SECTION("MissingQuotesAndColonAndValue") {
- JsonObject& obj = jb.parseObject("{key}");
- REQUIRE_FALSE(obj.success());
- }
- SECTION("OneString") {
- JsonObject& obj = jb.parseObject("{\"key\":\"value\"}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 1);
- REQUIRE(obj["key"] == "value");
- }
- SECTION("OneStringSingleQuotes") {
- JsonObject& obj = jb.parseObject("{'key':'value'}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 1);
- REQUIRE(obj["key"] == "value");
- }
- SECTION("OneStringNoQuotes") {
- JsonObject& obj = jb.parseObject("{key:value}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 1);
- REQUIRE(obj["key"] == "value");
- }
- SECTION("OneStringSpaceBeforeKey") {
- JsonObject& obj = jb.parseObject("{ \"key\":\"value\"}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 1);
- REQUIRE(obj["key"] == "value");
- }
- SECTION("OneStringSpaceAfterKey") {
- JsonObject& obj = jb.parseObject("{\"key\" :\"value\"}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 1);
- REQUIRE(obj["key"] == "value");
- }
- SECTION("OneStringSpaceBeforeValue") {
- JsonObject& obj = jb.parseObject("{\"key\": \"value\"}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 1);
- REQUIRE(obj["key"] == "value");
- }
- SECTION("OneStringSpaceAfterValue") {
- JsonObject& obj = jb.parseObject("{\"key\":\"value\" }");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 1);
- REQUIRE(obj["key"] == "value");
- }
- SECTION("TwoStrings") {
- JsonObject& obj =
- jb.parseObject("{\"key1\":\"value1\",\"key2\":\"value2\"}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 2);
- REQUIRE(obj["key1"] == "value1");
- REQUIRE(obj["key2"] == "value2");
- }
- SECTION("TwoStringsSpaceBeforeComma") {
- JsonObject& obj =
- jb.parseObject("{\"key1\":\"value1\" ,\"key2\":\"value2\"}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 2);
- REQUIRE(obj["key1"] == "value1");
- REQUIRE(obj["key2"] == "value2");
- }
- SECTION("TwoStringsSpaceAfterComma") {
- JsonObject& obj =
- jb.parseObject("{\"key1\":\"value1\" ,\"key2\":\"value2\"}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 2);
- REQUIRE(obj["key1"] == "value1");
- REQUIRE(obj["key2"] == "value2");
- }
- SECTION("EndingWithAComma") {
- JsonObject& obj = jb.parseObject("{\"key1\":\"value1\",}");
- REQUIRE_FALSE(obj.success());
- REQUIRE(obj.size() == 0);
- }
- SECTION("TwoIntergers") {
- JsonObject& obj = jb.parseObject("{\"key1\":42,\"key2\":-42}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 2);
- REQUIRE(obj["key1"] == 42);
- REQUIRE(obj["key2"] == -42);
- }
- SECTION("TwoDoubles") {
- JsonObject& obj = jb.parseObject("{\"key1\":12.345,\"key2\":-7E89}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 2);
- REQUIRE(obj["key1"] == 12.345);
- REQUIRE(obj["key2"] == -7E89);
- }
- SECTION("TwoBooleans") {
- JsonObject& obj = jb.parseObject("{\"key1\":true,\"key2\":false}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 2);
- REQUIRE(obj["key1"] == true);
- REQUIRE(obj["key2"] == false);
- }
- SECTION("TwoNulls") {
- JsonObject& obj = jb.parseObject("{\"key1\":null,\"key2\":null}");
- REQUIRE(obj.success());
- REQUIRE(obj.size() == 2);
- REQUIRE(obj["key1"].as<char*>() == 0);
- REQUIRE(obj["key2"].as<char*>() == 0);
- }
- SECTION("NullForKey") {
- JsonObject& obj = jb.parseObject("null:\"value\"}");
- REQUIRE_FALSE(obj.success());
- }
- }
|