Replacing a value now releases the memory

This commit is contained in:
Benoit Blanchon
2018-11-12 18:28:34 +01:00
parent f375459d53
commit 720e6548c7
18 changed files with 335 additions and 132 deletions

32
test/JsonVariant/to.cpp Normal file
View File

@ -0,0 +1,32 @@
// ArduinoJson - arduinojson.org
// Copyright Benoit Blanchon 2014-2018
// MIT License
#include <ArduinoJson.h>
#include <stdint.h>
#include <catch.hpp>
static const char* null = 0;
TEST_CASE("JsonVariant::to<T>() releases string memory") {
DynamicJsonDocument doc;
JsonVariant variant = doc.to<JsonVariant>();
variant.set(std::string("hello"));
REQUIRE(doc.memoryUsage() == JSON_STRING_SIZE(6));
SECTION("JsonVariant") {
variant.to<JsonVariant>();
REQUIRE(doc.memoryUsage() == 0);
}
SECTION("JsonArray") {
variant.to<JsonArray>();
REQUIRE(doc.memoryUsage() == 0);
}
SECTION("JsonObject") {
variant.to<JsonObject>();
REQUIRE(doc.memoryUsage() == 0);
}
}