forked from bblanchon/ArduinoJson
Fixed uninitialized variant in JsonDocument
This commit is contained in:
@ -14,6 +14,8 @@ HEAD
|
|||||||
* Added `nesting()` to `JsonArray`, `JsonDocument`, `JsonObject`, and `JsonVariant`
|
* Added `nesting()` to `JsonArray`, `JsonDocument`, `JsonObject`, and `JsonVariant`
|
||||||
* Replaced `JsonDocument::nestingLimit` with an additional parameter
|
* Replaced `JsonDocument::nestingLimit` with an additional parameter
|
||||||
to `deserializeJson()` and `deserializeMsgPack()`
|
to `deserializeJson()` and `deserializeMsgPack()`
|
||||||
|
* Fixed uninitialized variant in `JsonDocument`
|
||||||
|
* Added `JsonDocument::isNull()`
|
||||||
|
|
||||||
> ### BREAKING CHANGES
|
> ### BREAKING CHANGES
|
||||||
>
|
>
|
||||||
|
@ -37,6 +37,10 @@ class JsonDocument : public Visitable {
|
|||||||
return getVariant().template is<T>();
|
return getVariant().template is<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isNull() const {
|
||||||
|
return getVariant().isNull();
|
||||||
|
}
|
||||||
|
|
||||||
size_t memoryUsage() const {
|
size_t memoryUsage() const {
|
||||||
return _pool.size();
|
return _pool.size();
|
||||||
}
|
}
|
||||||
@ -65,9 +69,13 @@ class JsonDocument : public Visitable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
JsonDocument(MemoryPool pool) : _pool(pool) {}
|
JsonDocument(MemoryPool pool) : _pool(pool) {
|
||||||
|
_data.setNull();
|
||||||
|
}
|
||||||
|
|
||||||
JsonDocument(char* buf, size_t capa) : _pool(buf, capa) {}
|
JsonDocument(char* buf, size_t capa) : _pool(buf, capa) {
|
||||||
|
_data.setNull();
|
||||||
|
}
|
||||||
|
|
||||||
void copy(const JsonDocument& src) {
|
void copy(const JsonDocument& src) {
|
||||||
to<VariantRef>().set(src.as<VariantRef>());
|
to<VariantRef>().set(src.as<VariantRef>());
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
add_executable(JsonDocumentTests
|
add_executable(JsonDocumentTests
|
||||||
DynamicJsonDocument.cpp
|
DynamicJsonDocument.cpp
|
||||||
nesting.cpp
|
nesting.cpp
|
||||||
|
isNull.cpp
|
||||||
StaticJsonDocument.cpp
|
StaticJsonDocument.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
39
test/JsonDocument/isNull.cpp
Normal file
39
test/JsonDocument/isNull.cpp
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
// ArduinoJson - arduinojson.org
|
||||||
|
// Copyright Benoit Blanchon 2014-2018
|
||||||
|
// MIT License
|
||||||
|
|
||||||
|
#include <ArduinoJson.h>
|
||||||
|
#include <catch.hpp>
|
||||||
|
|
||||||
|
TEST_CASE("JsonDocument::isNull()") {
|
||||||
|
DynamicJsonDocument doc(4096);
|
||||||
|
|
||||||
|
SECTION("returns true if uninitialized") {
|
||||||
|
REQUIRE(doc.isNull() == true);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("returns false after to<JsonObject>()") {
|
||||||
|
doc.to<JsonObject>();
|
||||||
|
REQUIRE(doc.isNull() == false);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("returns false after to<JsonArray>()") {
|
||||||
|
doc.to<JsonArray>();
|
||||||
|
REQUIRE(doc.isNull() == false);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("returns true after to<JsonVariant>()") {
|
||||||
|
REQUIRE(doc.isNull() == true);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("returns false after set()") {
|
||||||
|
doc.to<JsonVariant>().set(42);
|
||||||
|
REQUIRE(doc.isNull() == false);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("returns true after clear()") {
|
||||||
|
doc.to<JsonObject>();
|
||||||
|
doc.clear();
|
||||||
|
REQUIRE(doc.isNull() == true);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user