diff --git a/extras/tests/CMakeLists.txt b/extras/tests/CMakeLists.txt index 0fce75ef..678b8bfe 100644 --- a/extras/tests/CMakeLists.txt +++ b/extras/tests/CMakeLists.txt @@ -7,7 +7,6 @@ add_subdirectory(catch) link_libraries(ArduinoJson catch) include_directories(Helpers) -add_subdirectory(ElementProxy) add_subdirectory(FailingBuilds) add_subdirectory(IntegrationTests) add_subdirectory(JsonArray) diff --git a/extras/tests/ElementProxy/CMakeLists.txt b/extras/tests/ElementProxy/CMakeLists.txt deleted file mode 100644 index d0c3f453..00000000 --- a/extras/tests/ElementProxy/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -# ArduinoJson - arduinojson.org -# Copyright Benoit Blanchon 2014-2020 -# MIT License - -add_executable(ElementProxyTests - add.cpp - clear.cpp - compare.cpp - remove.cpp - set.cpp - size.cpp - subscript.cpp -) - -add_test(ElementProxy ElementProxyTests) diff --git a/extras/tests/ElementProxy/add.cpp b/extras/tests/ElementProxy/add.cpp deleted file mode 100644 index 705b3e18..00000000 --- a/extras/tests/ElementProxy/add.cpp +++ /dev/null @@ -1,34 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2020 -// MIT License - -#include -#include - -using namespace ARDUINOJSON_NAMESPACE; - -TEST_CASE("ElementProxy::add()") { - DynamicJsonDocument doc(4096); - doc.addElement(); - ElementProxy ep = doc[0]; - - SECTION("add(int)") { - ep.add(42); - - REQUIRE(doc.as() == "[[42]]"); - } - - SECTION("add(const char*)") { - ep.add("world"); - - REQUIRE(doc.as() == "[[\"world\"]]"); - } - - SECTION("set(char[])") { - char s[] = "world"; - ep.add(s); - strcpy(s, "!!!!!"); - - REQUIRE(doc.as() == "[[\"world\"]]"); - } -} diff --git a/extras/tests/ElementProxy/clear.cpp b/extras/tests/ElementProxy/clear.cpp deleted file mode 100644 index 0c795a82..00000000 --- a/extras/tests/ElementProxy/clear.cpp +++ /dev/null @@ -1,28 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2020 -// MIT License - -#include -#include - -using namespace ARDUINOJSON_NAMESPACE; - -TEST_CASE("ElementProxy::clear()") { - DynamicJsonDocument doc(4096); - doc.addElement(); - ElementProxy ep = doc[0]; - - SECTION("size goes back to zero") { - ep.add(42); - ep.clear(); - - REQUIRE(ep.size() == 0); - } - - SECTION("isNull() return true") { - ep.add("hello"); - ep.clear(); - - REQUIRE(ep.isNull() == true); - } -} diff --git a/extras/tests/ElementProxy/compare.cpp b/extras/tests/ElementProxy/compare.cpp deleted file mode 100644 index 0023bf2c..00000000 --- a/extras/tests/ElementProxy/compare.cpp +++ /dev/null @@ -1,48 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2020 -// MIT License - -#include -#include - -using namespace ARDUINOJSON_NAMESPACE; - -TEST_CASE("ElementProxy::operator==()") { - DynamicJsonDocument doc(4096); - - SECTION("1 vs 1") { - doc.add(1); - doc.add(1); - - REQUIRE(doc[0] <= doc[1]); - REQUIRE(doc[0] == doc[1]); - REQUIRE(doc[0] >= doc[1]); - REQUIRE_FALSE(doc[0] != doc[1]); - REQUIRE_FALSE(doc[0] < doc[1]); - REQUIRE_FALSE(doc[0] > doc[1]); - } - - SECTION("1 vs 2") { - doc.add(1); - doc.add(2); - - REQUIRE(doc[0] != doc[1]); - REQUIRE(doc[0] < doc[1]); - REQUIRE(doc[0] <= doc[1]); - REQUIRE_FALSE(doc[0] == doc[1]); - REQUIRE_FALSE(doc[0] > doc[1]); - REQUIRE_FALSE(doc[0] >= doc[1]); - } - - SECTION("'abc' vs 'bcd'") { - doc.add("abc"); - doc.add("bcd"); - - REQUIRE(doc[0] != doc[1]); - REQUIRE(doc[0] < doc[1]); - REQUIRE(doc[0] <= doc[1]); - REQUIRE_FALSE(doc[0] == doc[1]); - REQUIRE_FALSE(doc[0] > doc[1]); - REQUIRE_FALSE(doc[0] >= doc[1]); - } -} diff --git a/extras/tests/ElementProxy/remove.cpp b/extras/tests/ElementProxy/remove.cpp deleted file mode 100644 index c6917cb4..00000000 --- a/extras/tests/ElementProxy/remove.cpp +++ /dev/null @@ -1,56 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2020 -// MIT License - -#include -#include - -using namespace ARDUINOJSON_NAMESPACE; - -TEST_CASE("ElementProxy::remove()") { - DynamicJsonDocument doc(4096); - doc.addElement(); - ElementProxy ep = doc[0]; - - SECTION("remove(int)") { - ep.add(1); - ep.add(2); - ep.add(3); - - ep.remove(1); - - REQUIRE(ep.as() == "[1,3]"); - } - - SECTION("remove(const char *)") { - ep["a"] = 1; - ep["b"] = 2; - - ep.remove("a"); - - REQUIRE(ep.as() == "{\"b\":2}"); - } - - SECTION("remove(std::string)") { - ep["a"] = 1; - ep["b"] = 2; - - ep.remove(std::string("b")); - - REQUIRE(ep.as() == "{\"a\":1}"); - } - -#ifdef HAS_VARIABLE_LENGTH_ARRAY - SECTION("remove(vla)") { - ep["a"] = 1; - ep["b"] = 2; - - int i = 4; - char vla[i]; - strcpy(vla, "b"); - ep.remove(vla); - - REQUIRE(ep.as() == "{\"a\":1}"); - } -#endif -} diff --git a/extras/tests/ElementProxy/set.cpp b/extras/tests/ElementProxy/set.cpp deleted file mode 100644 index bb99e15d..00000000 --- a/extras/tests/ElementProxy/set.cpp +++ /dev/null @@ -1,33 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2020 -// MIT License - -#include -#include - -using namespace ARDUINOJSON_NAMESPACE; - -TEST_CASE("ElementProxy::set()") { - DynamicJsonDocument doc(4096); - ElementProxy ep = doc[0]; - - SECTION("set(int)") { - ep.set(42); - - REQUIRE(doc.as() == "[42]"); - } - - SECTION("set(const char*)") { - ep.set("world"); - - REQUIRE(doc.as() == "[\"world\"]"); - } - - SECTION("set(char[])") { - char s[] = "world"; - ep.set(s); - strcpy(s, "!!!!!"); - - REQUIRE(doc.as() == "[\"world\"]"); - } -} diff --git a/extras/tests/ElementProxy/size.cpp b/extras/tests/ElementProxy/size.cpp deleted file mode 100644 index d5176c01..00000000 --- a/extras/tests/ElementProxy/size.cpp +++ /dev/null @@ -1,30 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2020 -// MIT License - -#include -#include - -using namespace ARDUINOJSON_NAMESPACE; - -TEST_CASE("ElementProxy::size()") { - DynamicJsonDocument doc(4096); - doc.addElement(); - ElementProxy ep = doc[0]; - - SECTION("returns 0") { - REQUIRE(ep.size() == 0); - } - - SECTION("as an array, returns 2") { - ep.add(1); - ep.add(2); - REQUIRE(ep.size() == 2); - } - - SECTION("as an object, returns 2") { - ep["a"] = 1; - ep["b"] = 2; - REQUIRE(ep.size() == 2); - } -} diff --git a/extras/tests/ElementProxy/subscript.cpp b/extras/tests/ElementProxy/subscript.cpp deleted file mode 100644 index 04034f53..00000000 --- a/extras/tests/ElementProxy/subscript.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// ArduinoJson - arduinojson.org -// Copyright Benoit Blanchon 2014-2020 -// MIT License - -#include -#include - -using namespace ARDUINOJSON_NAMESPACE; - -TEST_CASE("ElementProxy::operator[]") { - DynamicJsonDocument doc(4096); - ElementProxy ep = doc[1]; - - SECTION("set member") { - ep["world"] = 42; - - REQUIRE(doc.as() == "[null,{\"world\":42}]"); - } - - SECTION("set element") { - ep[2] = 42; - - REQUIRE(doc.as() == "[null,[null,null,42]]"); - } -} diff --git a/extras/tests/JsonDocument/CMakeLists.txt b/extras/tests/JsonDocument/CMakeLists.txt index ce00ab2f..55d187e0 100644 --- a/extras/tests/JsonDocument/CMakeLists.txt +++ b/extras/tests/JsonDocument/CMakeLists.txt @@ -9,6 +9,7 @@ add_executable(JsonDocumentTests containsKey.cpp createNested.cpp DynamicJsonDocument.cpp + ElementProxy.cpp isNull.cpp nesting.cpp overflowed.cpp diff --git a/extras/tests/JsonDocument/ElementProxy.cpp b/extras/tests/JsonDocument/ElementProxy.cpp new file mode 100644 index 00000000..7926d5a5 --- /dev/null +++ b/extras/tests/JsonDocument/ElementProxy.cpp @@ -0,0 +1,206 @@ +// ArduinoJson - arduinojson.org +// Copyright Benoit Blanchon 2014-2020 +// MIT License + +#include +#include + +using namespace ARDUINOJSON_NAMESPACE; + +TEST_CASE("ElementProxy::add()") { + DynamicJsonDocument doc(4096); + doc.addElement(); + ElementProxy ep = doc[0]; + + SECTION("add(int)") { + ep.add(42); + + REQUIRE(doc.as() == "[[42]]"); + } + + SECTION("add(const char*)") { + ep.add("world"); + + REQUIRE(doc.as() == "[[\"world\"]]"); + } + + SECTION("set(char[])") { + char s[] = "world"; + ep.add(s); + strcpy(s, "!!!!!"); + + REQUIRE(doc.as() == "[[\"world\"]]"); + } +} + +TEST_CASE("ElementProxy::clear()") { + DynamicJsonDocument doc(4096); + doc.addElement(); + ElementProxy ep = doc[0]; + + SECTION("size goes back to zero") { + ep.add(42); + ep.clear(); + + REQUIRE(ep.size() == 0); + } + + SECTION("isNull() return true") { + ep.add("hello"); + ep.clear(); + + REQUIRE(ep.isNull() == true); + } +} + +TEST_CASE("ElementProxy::operator==()") { + DynamicJsonDocument doc(4096); + + SECTION("1 vs 1") { + doc.add(1); + doc.add(1); + + REQUIRE(doc[0] <= doc[1]); + REQUIRE(doc[0] == doc[1]); + REQUIRE(doc[0] >= doc[1]); + REQUIRE_FALSE(doc[0] != doc[1]); + REQUIRE_FALSE(doc[0] < doc[1]); + REQUIRE_FALSE(doc[0] > doc[1]); + } + + SECTION("1 vs 2") { + doc.add(1); + doc.add(2); + + REQUIRE(doc[0] != doc[1]); + REQUIRE(doc[0] < doc[1]); + REQUIRE(doc[0] <= doc[1]); + REQUIRE_FALSE(doc[0] == doc[1]); + REQUIRE_FALSE(doc[0] > doc[1]); + REQUIRE_FALSE(doc[0] >= doc[1]); + } + + SECTION("'abc' vs 'bcd'") { + doc.add("abc"); + doc.add("bcd"); + + REQUIRE(doc[0] != doc[1]); + REQUIRE(doc[0] < doc[1]); + REQUIRE(doc[0] <= doc[1]); + REQUIRE_FALSE(doc[0] == doc[1]); + REQUIRE_FALSE(doc[0] > doc[1]); + REQUIRE_FALSE(doc[0] >= doc[1]); + } +} + +TEST_CASE("ElementProxy::remove()") { + DynamicJsonDocument doc(4096); + doc.addElement(); + ElementProxy ep = doc[0]; + + SECTION("remove(int)") { + ep.add(1); + ep.add(2); + ep.add(3); + + ep.remove(1); + + REQUIRE(ep.as() == "[1,3]"); + } + + SECTION("remove(const char *)") { + ep["a"] = 1; + ep["b"] = 2; + + ep.remove("a"); + + REQUIRE(ep.as() == "{\"b\":2}"); + } + + SECTION("remove(std::string)") { + ep["a"] = 1; + ep["b"] = 2; + + ep.remove(std::string("b")); + + REQUIRE(ep.as() == "{\"a\":1}"); + } + +#ifdef HAS_VARIABLE_LENGTH_ARRAY + SECTION("remove(vla)") { + ep["a"] = 1; + ep["b"] = 2; + + int i = 4; + char vla[i]; + strcpy(vla, "b"); + ep.remove(vla); + + REQUIRE(ep.as() == "{\"a\":1}"); + } +#endif +} + +TEST_CASE("ElementProxy::set()") { + DynamicJsonDocument doc(4096); + ElementProxy ep = doc[0]; + + SECTION("set(int)") { + ep.set(42); + + REQUIRE(doc.as() == "[42]"); + } + + SECTION("set(const char*)") { + ep.set("world"); + + REQUIRE(doc.as() == "[\"world\"]"); + } + + SECTION("set(char[])") { + char s[] = "world"; + ep.set(s); + strcpy(s, "!!!!!"); + + REQUIRE(doc.as() == "[\"world\"]"); + } +} + +TEST_CASE("ElementProxy::size()") { + DynamicJsonDocument doc(4096); + doc.addElement(); + ElementProxy ep = doc[0]; + + SECTION("returns 0") { + REQUIRE(ep.size() == 0); + } + + SECTION("as an array, returns 2") { + ep.add(1); + ep.add(2); + REQUIRE(ep.size() == 2); + } + + SECTION("as an object, returns 2") { + ep["a"] = 1; + ep["b"] = 2; + REQUIRE(ep.size() == 2); + } +} + +TEST_CASE("ElementProxy::operator[]") { + DynamicJsonDocument doc(4096); + ElementProxy ep = doc[1]; + + SECTION("set member") { + ep["world"] = 42; + + REQUIRE(doc.as() == "[null,{\"world\":42}]"); + } + + SECTION("set element") { + ep[2] = 42; + + REQUIRE(doc.as() == "[null,[null,null,42]]"); + } +}