Files
ArduinoJson/test/JsonBuffer/parseObject.cpp

159 lines
4.2 KiB
C++
Raw Normal View History

// 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/
// If you like this project, please add a star!
2014-10-23 23:39:22 +02:00
#include <ArduinoJson.h>
#include <catch.hpp>
2014-10-21 21:11:30 +02:00
TEST_CASE("JsonBuffer::parseObject()") {
DynamicJsonBuffer jb;
2014-10-21 21:11:30 +02:00
SECTION("EmptyObject") {
JsonObject& obj = jb.parseObject("{}");
REQUIRE(obj.success());
REQUIRE(obj.size() == 0);
}
2014-10-23 19:54:00 +02:00
SECTION("MissingOpeningBrace") {
JsonObject& obj = jb.parseObject("}");
REQUIRE_FALSE(obj.success());
}
2014-10-23 19:54:00 +02:00
SECTION("MissingClosingBrace") {
JsonObject& obj = jb.parseObject("{");
REQUIRE_FALSE(obj.success());
}
2014-10-23 19:54:00 +02:00
SECTION("MissingColonAndValue") {
JsonObject& obj = jb.parseObject("{\"key\"}");
REQUIRE_FALSE(obj.success());
2014-10-23 19:54:00 +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
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
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");
}
2014-10-21 23:42:26 +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
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
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
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
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
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
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
SECTION("EndingWithAComma") {
JsonObject& obj = jb.parseObject("{\"key1\":\"value1\",}");
REQUIRE_FALSE(obj.success());
REQUIRE(obj.size() == 0);
}
2014-10-22 11:56:40 +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
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
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
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
SECTION("NullForKey") {
JsonObject& obj = jb.parseObject("null:\"value\"}");
REQUIRE_FALSE(obj.success());
}
2014-10-23 23:45:36 +02:00
}