From c68bd7fb950c1dbd87998ca2190dcac6b7c452d2 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Sun, 13 Mar 2022 20:51:13 +0100 Subject: [PATCH] remove() --- extras/tests/JsonVariant/memoryUsage.cpp | 2 +- extras/tests/JsonVariant/remove.cpp | 20 ++++++++++++++++++++ src/ArduinoJson/Variant/VariantData.hpp | 4 ++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/extras/tests/JsonVariant/memoryUsage.cpp b/extras/tests/JsonVariant/memoryUsage.cpp index 486772c8..5c18b906 100644 --- a/extras/tests/JsonVariant/memoryUsage.cpp +++ b/extras/tests/JsonVariant/memoryUsage.cpp @@ -39,7 +39,7 @@ TEST_CASE("JsonVariant::memoryUsage()") { REQUIRE(var.memoryUsage() == doc.memoryUsage()); } - SECTION("ignore size of link document") { + SECTION("ignore size of linked document") { StaticJsonDocument<128> doc2; doc2["hello"] = "world"; var.link(doc2); diff --git a/extras/tests/JsonVariant/remove.cpp b/extras/tests/JsonVariant/remove.cpp index c744e19b..adaa0761 100644 --- a/extras/tests/JsonVariant/remove.cpp +++ b/extras/tests/JsonVariant/remove.cpp @@ -39,4 +39,24 @@ TEST_CASE("JsonVariant::remove()") { REQUIRE(var.as() == "{\"a\":1}"); } + + SECTION("linked array") { + StaticJsonDocument<128> doc2; + doc2[0] = 42; + var.link(doc2); + + var.remove(0); + + CHECK(var.as() == "[42]"); + } + + SECTION("linked object") { + StaticJsonDocument<128> doc2; + doc2["hello"] = "world"; + var.link(doc2); + + var.remove("hello"); + + CHECK(var.as() == "{\"hello\":\"world\"}"); + } } diff --git a/src/ArduinoJson/Variant/VariantData.hpp b/src/ArduinoJson/Variant/VariantData.hpp index 85adabd2..7bbe746f 100644 --- a/src/ArduinoJson/Variant/VariantData.hpp +++ b/src/ArduinoJson/Variant/VariantData.hpp @@ -177,13 +177,13 @@ class VariantData { } void remove(size_t index) { - if (isArray()) + if (isArrayStrict()) _content.asCollection.removeElement(index); } template void remove(TAdaptedString key) { - if (isObject()) + if (isObjectStrict()) _content.asCollection.removeMember(key); }