Replace add() with add<T>() (add(T) is still supported)

This commit is contained in:
Benoit Blanchon
2023-08-09 10:57:52 +02:00
parent 7a587ac2e2
commit f422b7b37d
12 changed files with 133 additions and 28 deletions

View File

@ -9,7 +9,7 @@
using ArduinoJson::detail::sizeofArray;
TEST_CASE("JsonArray::add()") {
TEST_CASE("JsonArray::add(T)") {
SpyingAllocator spy;
JsonDocument doc(&spy);
JsonArray array = doc.to<JsonArray>();
@ -154,3 +154,28 @@ TEST_CASE("JsonArray::add()") {
});
}
}
TEST_CASE("JsonArray::add<T>()") {
JsonDocument doc;
JsonArray array = doc.to<JsonArray>();
SECTION("add<JsonArray>()") {
JsonArray nestedArray = array.add<JsonArray>();
nestedArray.add(1);
nestedArray.add(2);
REQUIRE(doc.as<std::string>() == "[[1,2]]");
}
SECTION("add<JsonObject>()") {
JsonObject nestedObject = array.add<JsonObject>();
nestedObject["a"] = 1;
nestedObject["b"] = 2;
REQUIRE(doc.as<std::string>() == "[{\"a\":1,\"b\":2}]");
}
SECTION("add<JsonVariant>()") {
JsonVariant nestedVariant = array.add<JsonVariant>();
nestedVariant.set(42);
REQUIRE(doc.as<std::string>() == "[42]");
}
}

View File

@ -9,7 +9,7 @@ typedef ArduinoJson::detail::ElementProxy<JsonDocument&> ElementProxy;
TEST_CASE("ElementProxy::add()") {
JsonDocument doc;
doc.add();
doc.add<JsonVariant>();
ElementProxy ep = doc[0];
SECTION("add(int)") {
@ -35,7 +35,7 @@ TEST_CASE("ElementProxy::add()") {
TEST_CASE("ElementProxy::clear()") {
JsonDocument doc;
doc.add();
doc.add<JsonVariant>();
ElementProxy ep = doc[0];
SECTION("size goes back to zero") {
@ -95,7 +95,7 @@ TEST_CASE("ElementProxy::operator==()") {
TEST_CASE("ElementProxy::remove()") {
JsonDocument doc;
doc.add();
doc.add<JsonVariant>();
ElementProxy ep = doc[0];
SECTION("remove(int)") {
@ -168,7 +168,7 @@ TEST_CASE("ElementProxy::set()") {
TEST_CASE("ElementProxy::size()") {
JsonDocument doc;
doc.add();
doc.add<JsonVariant>();
ElementProxy ep = doc[0];
SECTION("returns 0") {

View File

@ -12,7 +12,7 @@
using ArduinoJson::detail::sizeofArray;
TEST_CASE("JsonDocument::add()") {
TEST_CASE("JsonDocument::add(T)") {
SpyingAllocator spy;
JsonDocument doc(&spy);
@ -79,3 +79,26 @@ TEST_CASE("JsonDocument::add()") {
});
}
}
TEST_CASE("JsonDocument::add<T>()") {
JsonDocument doc;
SECTION("JsonArray") {
JsonArray array = doc.add<JsonArray>();
array.add(1);
array.add(2);
REQUIRE(doc.as<std::string>() == "[[1,2]]");
}
SECTION("JsonObject") {
JsonObject object = doc.add<JsonObject>();
object["hello"] = "world";
REQUIRE(doc.as<std::string>() == "[{\"hello\":\"world\"}]");
}
SECTION("JsonVariant") {
JsonVariant variant = doc.add<JsonVariant>();
variant.set(42);
REQUIRE(doc.as<std::string>() == "[42]");
}
}

View File

@ -6,7 +6,7 @@
#include <stdint.h>
#include <catch.hpp>
TEST_CASE("JsonVariant::add()") {
TEST_CASE("JsonVariant::add(T)") {
JsonDocument doc;
JsonVariant var = doc.to<JsonVariant>();
@ -44,3 +44,27 @@ TEST_CASE("JsonVariant::add()") {
REQUIRE(var.as<std::string>() == "{\"val\":123}");
}
}
TEST_CASE("JsonVariant::add<T>()") {
JsonDocument doc;
JsonVariant var = doc.to<JsonVariant>();
SECTION("JsonArray") {
JsonArray array = var.add<JsonArray>();
array.add(1);
array.add(2);
REQUIRE(doc.as<std::string>() == "[[1,2]]");
}
SECTION("JsonObject") {
JsonObject object = var.add<JsonObject>();
object["hello"] = "world";
REQUIRE(doc.as<std::string>() == "[{\"hello\":\"world\"}]");
}
SECTION("JsonVariant") {
JsonVariant variant = var.add<JsonVariant>();
variant.set(42);
REQUIRE(doc.as<std::string>() == "[42]");
}
}

View File

@ -10,7 +10,7 @@
TEST_CASE("Compare JsonVariant with value") {
JsonDocument doc;
JsonVariant a = doc.add();
JsonVariant a = doc.add<JsonVariant>();
SECTION("null vs (char*)0") {
char* b = 0;
@ -38,8 +38,8 @@ TEST_CASE("Compare JsonVariant with value") {
TEST_CASE("Compare JsonVariant with JsonVariant") {
JsonDocument doc;
JsonVariant a = doc.add();
JsonVariant b = doc.add();
JsonVariant a = doc.add<JsonVariant>();
JsonVariant b = doc.add<JsonVariant>();
SECTION("'abc' vs 'abc'") {
a.set("abc");