forked from bblanchon/ArduinoJson
Clear the JsonObject or JsonArray in deserializeJson()
This commit is contained in:
@ -3,13 +3,14 @@
|
||||
# MIT License
|
||||
|
||||
add_executable(JsonParserTests
|
||||
JsonArray.cpp
|
||||
DynamicJsonArray.cpp
|
||||
DynamicJsonObject.cpp
|
||||
DynamicJsonVariant.cpp
|
||||
JsonError.cpp
|
||||
JsonObject.cpp
|
||||
JsonVariant.cpp
|
||||
nestingLimit.cpp
|
||||
StaticJsonArray.cpp
|
||||
StaticJsonObject.cpp
|
||||
StaticJsonVariant.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(JsonParserTests catch)
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include <ArduinoJson.h>
|
||||
#include <catch.hpp>
|
||||
|
||||
TEST_CASE("deserializeJson(JsonArray&)") {
|
||||
TEST_CASE("deserializeJson(DynamicJsonArray&)") {
|
||||
DynamicJsonArray arr;
|
||||
|
||||
SECTION("An empty array") {
|
||||
@ -350,4 +350,12 @@ TEST_CASE("deserializeJson(JsonArray&)") {
|
||||
REQUIRE(0 == object3["e"].as<int>());
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("Should clear the JsonArray") {
|
||||
deserializeJson(arr, "[1,2,3,4]");
|
||||
deserializeJson(arr, "[]");
|
||||
|
||||
REQUIRE(arr.size() == 0);
|
||||
REQUIRE(arr.memoryUsage() == JSON_ARRAY_SIZE(0));
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@
|
||||
#include <ArduinoJson.h>
|
||||
#include <catch.hpp>
|
||||
|
||||
TEST_CASE("deserializeJson(JsonObject&)") {
|
||||
TEST_CASE("deserializeJson(DynamicJsonObject&)") {
|
||||
DynamicJsonObject obj;
|
||||
|
||||
SECTION("An empty object") {
|
||||
@ -194,4 +194,11 @@ TEST_CASE("deserializeJson(JsonObject&)") {
|
||||
REQUIRE(err == JsonError::Ok);
|
||||
}
|
||||
}
|
||||
|
||||
SECTION("Should clear the JsonObject") {
|
||||
deserializeJson(obj, "{\"hello\":\"world\"}");
|
||||
deserializeJson(obj, "{}");
|
||||
REQUIRE(obj.size() == 0);
|
||||
REQUIRE(obj.memoryUsage() == JSON_OBJECT_SIZE(0));
|
||||
}
|
||||
}
|
@ -7,7 +7,7 @@
|
||||
|
||||
using namespace Catch::Matchers;
|
||||
|
||||
TEST_CASE("deserializeJson(JsonVariant&)") {
|
||||
TEST_CASE("deserializeJson(DynamicJsonVariant&)") {
|
||||
DynamicJsonVariant variant;
|
||||
|
||||
SECTION("EmptyObject") {
|
||||
@ -87,4 +87,12 @@ TEST_CASE("deserializeJson(JsonVariant&)") {
|
||||
REQUIRE(variant.is<char*>());
|
||||
REQUIRE_THAT(variant.as<char*>(), Equals("hello"));
|
||||
}
|
||||
|
||||
SECTION("Should clear the JsonVariant") {
|
||||
deserializeJson(variant, "[1,2,3]");
|
||||
deserializeJson(variant, "{}");
|
||||
|
||||
REQUIRE(variant.is<JsonObject>());
|
||||
REQUIRE(variant.memoryUsage() == JSON_OBJECT_SIZE(0));
|
||||
}
|
||||
}
|
@ -76,4 +76,15 @@ TEST_CASE("deserializeJson(StaticJsonArray&)") {
|
||||
// note: we use a string of 8 bytes to be sure that the StaticJsonBuffer
|
||||
// will not insert bytes to enforce alignement
|
||||
}
|
||||
|
||||
SECTION("Should clear the JsonArray") {
|
||||
StaticJsonArray<JSON_ARRAY_SIZE(4)> arr;
|
||||
char input[] = "[1,2,3,4]";
|
||||
|
||||
deserializeJson(arr, input);
|
||||
deserializeJson(arr, "[]");
|
||||
|
||||
REQUIRE(arr.size() == 0);
|
||||
REQUIRE(arr.memoryUsage() == JSON_ARRAY_SIZE(0));
|
||||
}
|
||||
}
|
||||
|
@ -66,4 +66,15 @@ TEST_CASE("deserializeJson(StaticJsonObject&)") {
|
||||
|
||||
REQUIRE(err != JsonError::Ok);
|
||||
}
|
||||
|
||||
SECTION("Should clear the JsonObject") {
|
||||
StaticJsonObject<JSON_OBJECT_SIZE(1)> obj;
|
||||
char input[] = "{\"hello\":\"world\"}";
|
||||
|
||||
deserializeJson(obj, input);
|
||||
deserializeJson(obj, "{}");
|
||||
|
||||
REQUIRE(obj.size() == 0);
|
||||
REQUIRE(obj.memoryUsage() == JSON_OBJECT_SIZE(0));
|
||||
}
|
||||
}
|
||||
|
35
test/JsonParser/StaticJsonVariant.cpp
Normal file
35
test/JsonParser/StaticJsonVariant.cpp
Normal file
@ -0,0 +1,35 @@
|
||||
// ArduinoJson - arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2018
|
||||
// MIT License
|
||||
|
||||
#include <ArduinoJson.h>
|
||||
#include <catch.hpp>
|
||||
|
||||
using namespace Catch::Matchers;
|
||||
|
||||
TEST_CASE("deserializeJson(StaticJsonVariant&)") {
|
||||
SECTION("Array") {
|
||||
StaticJsonVariant<JSON_ARRAY_SIZE(2)> variant;
|
||||
|
||||
char input[] = "[1,2]";
|
||||
JsonError err = deserializeJson(variant, input);
|
||||
|
||||
REQUIRE(err == JsonError::Ok);
|
||||
REQUIRE(variant.is<JsonArray>());
|
||||
REQUIRE(variant[0] == 1);
|
||||
REQUIRE(variant[1] == 2);
|
||||
REQUIRE(variant.memoryUsage() == JSON_ARRAY_SIZE(2));
|
||||
}
|
||||
|
||||
SECTION("Should clear the JsonVariant") {
|
||||
StaticJsonVariant<JSON_ARRAY_SIZE(2)> variant;
|
||||
char input[] = "[1,2]";
|
||||
deserializeJson(variant, input);
|
||||
|
||||
JsonError err = deserializeJson(variant, "{}");
|
||||
|
||||
REQUIRE(err == JsonError::Ok);
|
||||
REQUIRE(variant.is<JsonObject>());
|
||||
REQUIRE(variant.memoryUsage() == JSON_OBJECT_SIZE(0));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user