From 11373af34456090c6fe534ccbb5aefbd9aac2451 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Wed, 9 Aug 2023 15:27:16 +0200 Subject: [PATCH] Add a stub for `add()` --- extras/tests/Deprecated/CMakeLists.txt | 1 + extras/tests/Deprecated/add.cpp | 38 +++++++++++++++++++ src/ArduinoJson/Array/JsonArray.hpp | 6 +++ src/ArduinoJson/Document/JsonDocument.hpp | 6 +++ src/ArduinoJson/Variant/VariantRefBase.hpp | 4 ++ .../Variant/VariantRefBaseImpl.hpp | 5 +++ 6 files changed, 60 insertions(+) create mode 100644 extras/tests/Deprecated/add.cpp diff --git a/extras/tests/Deprecated/CMakeLists.txt b/extras/tests/Deprecated/CMakeLists.txt index 93785189..563d8028 100644 --- a/extras/tests/Deprecated/CMakeLists.txt +++ b/extras/tests/Deprecated/CMakeLists.txt @@ -15,6 +15,7 @@ if(MSVC) endif() add_executable(DeprecatedTests + add.cpp BasicJsonDocument.cpp DynamicJsonDocument.cpp memoryUsage.cpp diff --git a/extras/tests/Deprecated/add.cpp b/extras/tests/Deprecated/add.cpp new file mode 100644 index 00000000..4198e4f5 --- /dev/null +++ b/extras/tests/Deprecated/add.cpp @@ -0,0 +1,38 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#include +#include + +TEST_CASE("JsonArray::add()") { + JsonDocument doc; + JsonArray array = doc.to(); + array.add().set(42); + REQUIRE(doc.as() == "[42]"); +} + +TEST_CASE("JsonDocument::add()") { + JsonDocument doc; + doc.add().set(42); + REQUIRE(doc.as() == "[42]"); +} + +TEST_CASE("ElementProxy::add()") { + JsonDocument doc; + doc[0].add().set(42); + REQUIRE(doc.as() == "[[42]]"); +} + +TEST_CASE("MemberProxy::add()") { + JsonDocument doc; + doc["x"].add().set(42); + REQUIRE(doc.as() == "{\"x\":[42]}"); +} + +TEST_CASE("JsonVariant::add()") { + JsonDocument doc; + JsonVariant v = doc.add(); + v.add().set(42); + REQUIRE(doc.as() == "[[42]]"); +} diff --git a/src/ArduinoJson/Array/JsonArray.hpp b/src/ArduinoJson/Array/JsonArray.hpp index 00540039..b69b5642 100644 --- a/src/ArduinoJson/Array/JsonArray.hpp +++ b/src/ArduinoJson/Array/JsonArray.hpp @@ -158,6 +158,12 @@ class JsonArray : public detail::VariantOperators { return data_ ? data_->size(resources_) : 0; } + // DEPRECATED: use add() instead + ARDUINOJSON_DEPRECATED("use add() instead") + JsonVariant add() const { + return add(); + } + // DEPRECATED: always returns zero ARDUINOJSON_DEPRECATED("always returns zero") size_t memoryUsage() const { diff --git a/src/ArduinoJson/Document/JsonDocument.hpp b/src/ArduinoJson/Document/JsonDocument.hpp index 93c54e28..5054686c 100644 --- a/src/ArduinoJson/Document/JsonDocument.hpp +++ b/src/ArduinoJson/Document/JsonDocument.hpp @@ -291,6 +291,12 @@ class JsonDocument : public detail::VariantOperators { swap_(a.data_, b.data_); } + // DEPRECATED: use add() instead + ARDUINOJSON_DEPRECATED("use add() instead") + JsonVariant add() { + return add(); + } + // DEPRECATED: always returns zero ARDUINOJSON_DEPRECATED("always returns zero") size_t memoryUsage() const { diff --git a/src/ArduinoJson/Variant/VariantRefBase.hpp b/src/ArduinoJson/Variant/VariantRefBase.hpp index 4a22c626..8fee744f 100644 --- a/src/ArduinoJson/Variant/VariantRefBase.hpp +++ b/src/ArduinoJson/Variant/VariantRefBase.hpp @@ -221,6 +221,10 @@ class VariantRefBase : public VariantTag { MemberProxy>::type operator[](TChar* key) const; + // DEPRECATED: use add() instead + ARDUINOJSON_DEPRECATED("use add() instead") + JsonVariant add() const; + // DEPRECATED: always returns zero ARDUINOJSON_DEPRECATED("always returns zero") size_t memoryUsage() const { diff --git a/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp b/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp index 79cc8fa2..c52b0aef 100644 --- a/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp +++ b/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp @@ -10,6 +10,11 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE +template +inline JsonVariant VariantRefBase::add() const { + return add(); +} + template inline void convertToJson(const VariantRefBase& src, JsonVariant dst) {