From 328d72c8ac77af269d7d3377f8d10cb9cf428695 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Thu, 10 Mar 2022 14:02:13 +0100 Subject: [PATCH] Test set() instead of add() --- extras/tests/JsonVariant/add.cpp | 20 ---------------- extras/tests/JsonVariant/set.cpp | 39 +++++++++++++++++++++++--------- 2 files changed, 28 insertions(+), 31 deletions(-) diff --git a/extras/tests/JsonVariant/add.cpp b/extras/tests/JsonVariant/add.cpp index 3f525e25..526e914d 100644 --- a/extras/tests/JsonVariant/add.cpp +++ b/extras/tests/JsonVariant/add.cpp @@ -43,24 +43,4 @@ TEST_CASE("JsonVariant::add()") { REQUIRE(var.as() == "{\"val\":123}"); } - - SECTION("add JsonDocument to new variant") { - StaticJsonDocument<128> doc2; - doc2["hello"] = "world"; - - var.add(doc2); - - CHECK(var.as() == "[{\"hello\":\"world\"}]"); - CHECK(var.memoryUsage() == JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(1)); - } - - SECTION("add JsonDocument* to new variant") { - StaticJsonDocument<128> doc2; - doc2["hello"] = "world"; - - var.add(&doc2); - - CHECK(var.as() == "[{\"hello\":\"world\"}]"); - CHECK(var.memoryUsage() == JSON_ARRAY_SIZE(1)); - } } diff --git a/extras/tests/JsonVariant/set.cpp b/extras/tests/JsonVariant/set.cpp index 899ef6a5..8f27d0e0 100644 --- a/extras/tests/JsonVariant/set.cpp +++ b/extras/tests/JsonVariant/set.cpp @@ -155,18 +155,35 @@ TEST_CASE("JsonVariant::set() with not enough memory") { } } -TEST_CASE("JsonVariant::set(DynamicJsonDocument)") { - DynamicJsonDocument doc1(1024); - doc1["hello"] = "world"; +TEST_CASE("Copy/link from other document") { + StaticJsonDocument<1024> doc1, doc2; + JsonVariant variant = doc1.to(); - DynamicJsonDocument doc2(1024); - JsonVariant v = doc2.to(); + SECTION("JsonVariant::set(JsonDocument&)") { + doc2["hello"] = "world"; - // Should copy the doc - v.set(doc1); - doc1.clear(); + variant.set(doc2); - std::string json; - serializeJson(doc2, json); - REQUIRE(json == "{\"hello\":\"world\"}"); + CHECK(variant.as() == "{\"hello\":\"world\"}"); + CHECK(variant.memoryUsage() == JSON_OBJECT_SIZE(1)); + + // altering the copied document should change the result + doc2["hello"] = "WORLD!"; + + CHECK(variant.as() == "{\"hello\":\"world\"}"); + } + + SECTION("JsonVariant::set(JsonDocument*)") { + doc2["hello"] = "world"; + + variant.set(&doc2); + + CHECK(variant.as() == "{\"hello\":\"world\"}"); + CHECK(variant.memoryUsage() == 0); + + // altering the links document should change the result + doc2["hello"] = "WORLD!"; + + CHECK(variant.as() == "{\"hello\":\"WORLD!\"}"); + } }