Test set() instead of add()

This commit is contained in:
Benoit Blanchon
2022-03-10 14:02:13 +01:00
parent fcc28b1355
commit 328d72c8ac
2 changed files with 28 additions and 31 deletions

View File

@@ -43,24 +43,4 @@ TEST_CASE("JsonVariant::add()") {
REQUIRE(var.as<std::string>() == "{\"val\":123}"); REQUIRE(var.as<std::string>() == "{\"val\":123}");
} }
SECTION("add JsonDocument to new variant") {
StaticJsonDocument<128> doc2;
doc2["hello"] = "world";
var.add(doc2);
CHECK(var.as<std::string>() == "[{\"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<std::string>() == "[{\"hello\":\"world\"}]");
CHECK(var.memoryUsage() == JSON_ARRAY_SIZE(1));
}
} }

View File

@@ -155,18 +155,35 @@ TEST_CASE("JsonVariant::set() with not enough memory") {
} }
} }
TEST_CASE("JsonVariant::set(DynamicJsonDocument)") { TEST_CASE("Copy/link from other document") {
DynamicJsonDocument doc1(1024); StaticJsonDocument<1024> doc1, doc2;
doc1["hello"] = "world"; JsonVariant variant = doc1.to<JsonVariant>();
DynamicJsonDocument doc2(1024); SECTION("JsonVariant::set(JsonDocument&)") {
JsonVariant v = doc2.to<JsonVariant>(); doc2["hello"] = "world";
// Should copy the doc variant.set(doc2);
v.set(doc1);
doc1.clear();
std::string json; CHECK(variant.as<std::string>() == "{\"hello\":\"world\"}");
serializeJson(doc2, json); CHECK(variant.memoryUsage() == JSON_OBJECT_SIZE(1));
REQUIRE(json == "{\"hello\":\"world\"}");
// altering the copied document should change the result
doc2["hello"] = "WORLD!";
CHECK(variant.as<std::string>() == "{\"hello\":\"world\"}");
}
SECTION("JsonVariant::set(JsonDocument*)") {
doc2["hello"] = "world";
variant.set(&doc2);
CHECK(variant.as<std::string>() == "{\"hello\":\"world\"}");
CHECK(variant.memoryUsage() == 0);
// altering the links document should change the result
doc2["hello"] = "WORLD!";
CHECK(variant.as<std::string>() == "{\"hello\":\"WORLD!\"}");
}
} }