2017-01-06 21:07:34 +01:00
|
|
|
// Copyright Benoit Blanchon 2014-2017
|
2014-10-23 23:39:22 +02:00
|
|
|
// MIT License
|
|
|
|
//
|
|
|
|
// Arduino JSON library
|
2017-03-25 22:05:06 +01:00
|
|
|
// https://bblanchon.github.io/ArduinoJson/
|
2016-01-07 22:35:12 +01:00
|
|
|
// If you like this project, please add a star!
|
2014-10-23 23:39:22 +02:00
|
|
|
|
2014-11-11 16:54:46 +01:00
|
|
|
#include <ArduinoJson.h>
|
2017-04-18 18:22:24 +02:00
|
|
|
#include <catch.hpp>
|
2014-10-21 21:11:30 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
TEST_CASE("JsonBuffer::parseObject()") {
|
|
|
|
DynamicJsonBuffer jb;
|
2014-10-21 21:11:30 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("EmptyObject") {
|
|
|
|
JsonObject& obj = jb.parseObject("{}");
|
|
|
|
REQUIRE(obj.success());
|
|
|
|
REQUIRE(obj.size() == 0);
|
2017-01-06 21:07:34 +01:00
|
|
|
}
|
2014-10-23 19:54:00 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("MissingOpeningBrace") {
|
|
|
|
JsonObject& obj = jb.parseObject("}");
|
|
|
|
REQUIRE_FALSE(obj.success());
|
2017-01-06 21:07:34 +01:00
|
|
|
}
|
2014-10-23 19:54:00 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("MissingClosingBrace") {
|
|
|
|
JsonObject& obj = jb.parseObject("{");
|
|
|
|
REQUIRE_FALSE(obj.success());
|
2017-01-06 21:07:34 +01:00
|
|
|
}
|
2014-10-23 19:54:00 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("MissingColonAndValue") {
|
|
|
|
JsonObject& obj = jb.parseObject("{\"key\"}");
|
|
|
|
REQUIRE_FALSE(obj.success());
|
2014-10-23 19:54:00 +02:00
|
|
|
}
|
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("MissingQuotesAndColonAndValue") {
|
|
|
|
JsonObject& obj = jb.parseObject("{key}");
|
|
|
|
REQUIRE_FALSE(obj.success());
|
2014-10-23 19:54:00 +02:00
|
|
|
}
|
2014-10-22 15:51:55 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("OneString") {
|
|
|
|
JsonObject& obj = jb.parseObject("{\"key\":\"value\"}");
|
|
|
|
REQUIRE(obj.success());
|
|
|
|
REQUIRE(obj.size() == 1);
|
|
|
|
REQUIRE(obj["key"] == "value");
|
|
|
|
}
|
2014-10-23 19:54:00 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("OneStringSingleQuotes") {
|
|
|
|
JsonObject& obj = jb.parseObject("{'key':'value'}");
|
|
|
|
REQUIRE(obj.success());
|
|
|
|
REQUIRE(obj.size() == 1);
|
|
|
|
REQUIRE(obj["key"] == "value");
|
|
|
|
}
|
2015-07-10 22:11:26 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("OneStringNoQuotes") {
|
|
|
|
JsonObject& obj = jb.parseObject("{key:value}");
|
|
|
|
REQUIRE(obj.success());
|
|
|
|
REQUIRE(obj.size() == 1);
|
|
|
|
REQUIRE(obj["key"] == "value");
|
|
|
|
}
|
2014-10-21 23:42:26 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("OneStringSpaceBeforeKey") {
|
|
|
|
JsonObject& obj = jb.parseObject("{ \"key\":\"value\"}");
|
|
|
|
REQUIRE(obj.success());
|
|
|
|
REQUIRE(obj.size() == 1);
|
|
|
|
REQUIRE(obj["key"] == "value");
|
|
|
|
}
|
2014-10-22 11:54:33 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("OneStringSpaceAfterKey") {
|
|
|
|
JsonObject& obj = jb.parseObject("{\"key\" :\"value\"}");
|
|
|
|
REQUIRE(obj.success());
|
|
|
|
REQUIRE(obj.size() == 1);
|
|
|
|
REQUIRE(obj["key"] == "value");
|
|
|
|
}
|
2014-10-21 23:42:26 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("OneStringSpaceBeforeValue") {
|
|
|
|
JsonObject& obj = jb.parseObject("{\"key\": \"value\"}");
|
|
|
|
REQUIRE(obj.success());
|
|
|
|
REQUIRE(obj.size() == 1);
|
|
|
|
REQUIRE(obj["key"] == "value");
|
|
|
|
}
|
2014-10-21 23:42:26 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("OneStringSpaceAfterValue") {
|
|
|
|
JsonObject& obj = jb.parseObject("{\"key\":\"value\" }");
|
|
|
|
REQUIRE(obj.success());
|
|
|
|
REQUIRE(obj.size() == 1);
|
|
|
|
REQUIRE(obj["key"] == "value");
|
|
|
|
}
|
2014-10-21 23:42:26 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
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");
|
|
|
|
}
|
2014-10-22 11:54:33 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
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");
|
|
|
|
}
|
2014-10-22 11:56:40 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
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");
|
|
|
|
}
|
2014-10-22 11:56:40 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("EndingWithAComma") {
|
|
|
|
JsonObject& obj = jb.parseObject("{\"key1\":\"value1\",}");
|
|
|
|
REQUIRE_FALSE(obj.success());
|
|
|
|
REQUIRE(obj.size() == 0);
|
|
|
|
}
|
2014-10-22 11:56:40 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
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);
|
|
|
|
}
|
2014-10-22 15:51:55 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
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);
|
|
|
|
}
|
2014-10-22 15:51:55 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
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);
|
|
|
|
}
|
2014-10-23 19:54:00 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
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);
|
|
|
|
}
|
2014-10-23 19:54:00 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("NullForKey") {
|
|
|
|
JsonObject& obj = jb.parseObject("null:\"value\"}");
|
|
|
|
REQUIRE_FALSE(obj.success());
|
|
|
|
}
|
2014-10-23 23:45:36 +02:00
|
|
|
}
|