Ver Fonte

Add a stub for `DynamicJsonDocument`

Benoit Blanchon há 2 anos atrás
pai
commit
be5d5300a2

+ 1 - 0
extras/tests/Deprecated/CMakeLists.txt

@@ -15,6 +15,7 @@ if(MSVC)
 endif()
 
 add_executable(DeprecatedTests
+	DynamicJsonDocument.cpp
 	StaticJsonDocument.cpp
 )
 

+ 37 - 0
extras/tests/Deprecated/DynamicJsonDocument.cpp

@@ -0,0 +1,37 @@
+// ArduinoJson - https://arduinojson.org
+// Copyright © 2014-2023, Benoit BLANCHON
+// MIT License
+
+#include <ArduinoJson.h>
+#include <catch.hpp>
+
+using ArduinoJson::detail::is_base_of;
+
+TEST_CASE("DynamicJsonDocument") {
+  SECTION("is a JsonDocument") {
+    REQUIRE(is_base_of<JsonDocument, DynamicJsonDocument>::value == true);
+  }
+
+  SECTION("deserialize / serialize") {
+    DynamicJsonDocument doc(256);
+    deserializeJson(doc, "{\"hello\":\"world\"}");
+    REQUIRE(doc.as<std::string>() == "{\"hello\":\"world\"}");
+  }
+
+  SECTION("copy") {
+    DynamicJsonDocument doc(256);
+    doc["hello"] = "world";
+    auto copy = doc;
+    REQUIRE(copy.as<std::string>() == "{\"hello\":\"world\"}");
+  }
+
+  SECTION("capacity") {
+    DynamicJsonDocument doc(256);
+    REQUIRE(doc.capacity() == 256);
+  }
+
+  SECTION("garbageCollect()") {
+    DynamicJsonDocument doc(256);
+    doc.garbageCollect();
+  }
+}

+ 16 - 0
src/ArduinoJson/compatibility.hpp

@@ -42,4 +42,20 @@ class ARDUINOJSON_DEPRECATED("use JsonDocument instead") StaticJsonDocument
   }
 };
 
+// DEPRECATED: use JsonDocument instead
+class ARDUINOJSON_DEPRECATED("use JsonDocument instead") DynamicJsonDocument
+    : public JsonDocument {
+ public:
+  DynamicJsonDocument(size_t capacity) : _capacity(capacity) {}
+
+  size_t capacity() const {
+    return _capacity;
+  }
+
+  void garbageCollect() {}
+
+ private:
+  size_t _capacity;
+};
+
 ARDUINOJSON_END_PUBLIC_NAMESPACE