mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 08:42:39 +01:00 
			
		
		
		
	Increased test coverage
This commit is contained in:
		| @@ -29,6 +29,14 @@ TEST_CASE("nullptr") { | ||||
|     REQUIRE(variant.isNull()); | ||||
|   } | ||||
|  | ||||
|   SECTION("JsonVariant.set(nullptr) with unbound reference") { | ||||
|     JsonVariant unboundReference; | ||||
|  | ||||
|     unboundReference.set(nullptr); | ||||
|  | ||||
|     REQUIRE(variant.isNull()); | ||||
|   } | ||||
|  | ||||
|   SECTION("JsonVariant.is<nullptr_t>()") { | ||||
|     variant.set(42); | ||||
|     REQUIRE(variant.is<std::nullptr_t>() == false); | ||||
|   | ||||
| @@ -7,73 +7,83 @@ | ||||
|  | ||||
| TEST_CASE("JsonArray::remove()") { | ||||
|   DynamicJsonDocument doc(4096); | ||||
|   JsonArray _array = doc.to<JsonArray>(); | ||||
|   _array.add(1); | ||||
|   _array.add(2); | ||||
|   _array.add(3); | ||||
|   JsonArray array = doc.to<JsonArray>(); | ||||
|   array.add(1); | ||||
|   array.add(2); | ||||
|   array.add(3); | ||||
|  | ||||
|   SECTION("RemoveFirstByIndex") { | ||||
|     _array.remove(0); | ||||
|   SECTION("remove first by index") { | ||||
|     array.remove(0); | ||||
|  | ||||
|     REQUIRE(2 == _array.size()); | ||||
|     REQUIRE(_array[0] == 2); | ||||
|     REQUIRE(_array[1] == 3); | ||||
|     REQUIRE(2 == array.size()); | ||||
|     REQUIRE(array[0] == 2); | ||||
|     REQUIRE(array[1] == 3); | ||||
|   } | ||||
|  | ||||
|   SECTION("RemoveMiddleByIndex") { | ||||
|     _array.remove(1); | ||||
|   SECTION("remove middle by index") { | ||||
|     array.remove(1); | ||||
|  | ||||
|     REQUIRE(2 == _array.size()); | ||||
|     REQUIRE(_array[0] == 1); | ||||
|     REQUIRE(_array[1] == 3); | ||||
|     REQUIRE(2 == array.size()); | ||||
|     REQUIRE(array[0] == 1); | ||||
|     REQUIRE(array[1] == 3); | ||||
|   } | ||||
|  | ||||
|   SECTION("RemoveLastByIndex") { | ||||
|     _array.remove(2); | ||||
|   SECTION("remove last by index") { | ||||
|     array.remove(2); | ||||
|  | ||||
|     REQUIRE(2 == _array.size()); | ||||
|     REQUIRE(_array[0] == 1); | ||||
|     REQUIRE(_array[1] == 2); | ||||
|     REQUIRE(2 == array.size()); | ||||
|     REQUIRE(array[0] == 1); | ||||
|     REQUIRE(array[1] == 2); | ||||
|   } | ||||
|  | ||||
|   SECTION("RemoveFirstByIterator") { | ||||
|     JsonArray::iterator it = _array.begin(); | ||||
|     _array.remove(it); | ||||
|   SECTION("remove first by iterator") { | ||||
|     JsonArray::iterator it = array.begin(); | ||||
|     array.remove(it); | ||||
|  | ||||
|     REQUIRE(2 == _array.size()); | ||||
|     REQUIRE(_array[0] == 2); | ||||
|     REQUIRE(_array[1] == 3); | ||||
|     REQUIRE(2 == array.size()); | ||||
|     REQUIRE(array[0] == 2); | ||||
|     REQUIRE(array[1] == 3); | ||||
|   } | ||||
|  | ||||
|   SECTION("RemoveMiddleByIterator") { | ||||
|     JsonArray::iterator it = _array.begin(); | ||||
|   SECTION("remove middle by iterator") { | ||||
|     JsonArray::iterator it = array.begin(); | ||||
|     ++it; | ||||
|     _array.remove(it); | ||||
|     array.remove(it); | ||||
|  | ||||
|     REQUIRE(2 == _array.size()); | ||||
|     REQUIRE(_array[0] == 1); | ||||
|     REQUIRE(_array[1] == 3); | ||||
|     REQUIRE(2 == array.size()); | ||||
|     REQUIRE(array[0] == 1); | ||||
|     REQUIRE(array[1] == 3); | ||||
|   } | ||||
|  | ||||
|   SECTION("RemoveLastByIterator") { | ||||
|     JsonArray::iterator it = _array.begin(); | ||||
|   SECTION("remove last bty iterator") { | ||||
|     JsonArray::iterator it = array.begin(); | ||||
|     ++it; | ||||
|     ++it; | ||||
|     _array.remove(it); | ||||
|     array.remove(it); | ||||
|  | ||||
|     REQUIRE(2 == _array.size()); | ||||
|     REQUIRE(_array[0] == 1); | ||||
|     REQUIRE(_array[1] == 2); | ||||
|     REQUIRE(2 == array.size()); | ||||
|     REQUIRE(array[0] == 1); | ||||
|     REQUIRE(array[1] == 2); | ||||
|   } | ||||
|  | ||||
|   SECTION("In a loop") { | ||||
|     for (JsonArray::iterator it = _array.begin(); it != _array.end(); ++it) { | ||||
|     for (JsonArray::iterator it = array.begin(); it != array.end(); ++it) { | ||||
|       if (*it == 2) | ||||
|         _array.remove(it); | ||||
|         array.remove(it); | ||||
|     } | ||||
|  | ||||
|     REQUIRE(2 == _array.size()); | ||||
|     REQUIRE(_array[0] == 1); | ||||
|     REQUIRE(_array[1] == 3); | ||||
|     REQUIRE(2 == array.size()); | ||||
|     REQUIRE(array[0] == 1); | ||||
|     REQUIRE(array[1] == 3); | ||||
|   } | ||||
|  | ||||
|   SECTION("remove by index on unbound reference") { | ||||
|     JsonArray unboundArray; | ||||
|     unboundArray.remove(20); | ||||
|   } | ||||
|  | ||||
|   SECTION("remove by iterator on unbound reference") { | ||||
|     JsonArray unboundArray; | ||||
|     unboundArray.remove(unboundArray.begin()); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -70,8 +70,13 @@ TEST_CASE("JsonObject::remove()") { | ||||
|   } | ||||
| #endif | ||||
|  | ||||
|   SECTION("should work on null object") { | ||||
|     JsonObject null; | ||||
|     null.remove("key"); | ||||
|   SECTION("remove by key on unbound reference") { | ||||
|     JsonObject unboundObject; | ||||
|     unboundObject.remove("key"); | ||||
|   } | ||||
|  | ||||
|   SECTION("remove by iterator on unbound reference") { | ||||
|     JsonObject unboundObject; | ||||
|     unboundObject.remove(unboundObject.begin()); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -10,21 +10,37 @@ TEST_CASE("JsonVariant::add()") { | ||||
|   DynamicJsonDocument doc(4096); | ||||
|   JsonVariant var = doc.to<JsonVariant>(); | ||||
|  | ||||
|   SECTION("integer") { | ||||
|   SECTION("add integer to new variant") { | ||||
|     var.add(42); | ||||
|  | ||||
|     REQUIRE(var.as<std::string>() == "[42]"); | ||||
|   } | ||||
|  | ||||
|   SECTION("const char*") { | ||||
|   SECTION("add const char* to new variant") { | ||||
|     var.add("hello"); | ||||
|  | ||||
|     REQUIRE(var.as<std::string>() == "[\"hello\"]"); | ||||
|   } | ||||
|  | ||||
|   SECTION("std::string") { | ||||
|   SECTION("add std::string to new variant") { | ||||
|     var.add(std::string("hello")); | ||||
|  | ||||
|     REQUIRE(var.as<std::string>() == "[\"hello\"]"); | ||||
|   } | ||||
|  | ||||
|   SECTION("add integer to integer") { | ||||
|     var.set(123); | ||||
|  | ||||
|     var.add(456);  // no-op | ||||
|  | ||||
|     REQUIRE(var.as<std::string>() == "123"); | ||||
|   } | ||||
|  | ||||
|   SECTION("add integer to object") { | ||||
|     var["val"] = 123; | ||||
|  | ||||
|     var.add(456);  // no-op | ||||
|  | ||||
|     REQUIRE(var.as<std::string>() == "{\"val\":123}"); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -158,6 +158,18 @@ TEST_CASE("Compare JsonVariant with JsonVariant") { | ||||
|     CHECK_FALSE(a > b); | ||||
|   } | ||||
|  | ||||
|   SECTION("42 vs 42U") { | ||||
|     a.set(42); | ||||
|     b.set(42U); | ||||
|  | ||||
|     CHECK(a == b); | ||||
|     CHECK(a <= b); | ||||
|     CHECK(a >= b); | ||||
|     CHECK_FALSE(a != b); | ||||
|     CHECK_FALSE(a < b); | ||||
|     CHECK_FALSE(a > b); | ||||
|   } | ||||
|  | ||||
|   SECTION("42 vs 42.0") { | ||||
|     a.set(42); | ||||
|     b.set(42.0); | ||||
| @@ -230,6 +242,30 @@ TEST_CASE("Compare JsonVariant with JsonVariant") { | ||||
|     CHECK_FALSE(a == b); | ||||
|   } | ||||
|  | ||||
|   SECTION("42U vs 42U") { | ||||
|     a.set(42U); | ||||
|     b.set(42U); | ||||
|  | ||||
|     CHECK(a == b); | ||||
|     CHECK(a <= b); | ||||
|     CHECK(a >= b); | ||||
|     CHECK_FALSE(a != b); | ||||
|     CHECK_FALSE(a < b); | ||||
|     CHECK_FALSE(a > b); | ||||
|   } | ||||
|  | ||||
|   SECTION("42U vs 42") { | ||||
|     a.set(42U); | ||||
|     b.set(42); | ||||
|  | ||||
|     CHECK(a == b); | ||||
|     CHECK(a <= b); | ||||
|     CHECK(a >= b); | ||||
|     CHECK_FALSE(a != b); | ||||
|     CHECK_FALSE(a < b); | ||||
|     CHECK_FALSE(a > b); | ||||
|   } | ||||
|  | ||||
|   SECTION("[1] vs [1]") { | ||||
|     a.add(1); | ||||
|     b.add(1); | ||||
|   | ||||
| @@ -83,4 +83,13 @@ TEST_CASE("JsonVariant::set(JsonVariant)") { | ||||
|     REQUIRE(doc1.memoryUsage() == JSON_STRING_SIZE(7)); | ||||
|     REQUIRE(doc2.memoryUsage() == JSON_STRING_SIZE(7)); | ||||
|   } | ||||
|  | ||||
|   SECTION("destination is unbound") { | ||||
|     JsonVariant unboundVariant; | ||||
|  | ||||
|     unboundVariant.set(var1); | ||||
|  | ||||
|     REQUIRE(unboundVariant.isUndefined()); | ||||
|     REQUIRE(unboundVariant.isNull()); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -58,6 +58,15 @@ TEST_CASE("JsonVariant::operator[]") { | ||||
|       REQUIRE(1 == var[0].size()); | ||||
|       REQUIRE(std::string("world") == var[0]["hello"]); | ||||
|     } | ||||
|  | ||||
|     SECTION("variant[0] when variant contains an integer") { | ||||
|       var.set(123); | ||||
|  | ||||
|       var[0] = 345;  // no-op | ||||
|  | ||||
|       REQUIRE(var.is<int>()); | ||||
|       REQUIRE(var.as<int>() == 123); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   SECTION("The JsonVariant is a JsonObject") { | ||||
|   | ||||
| @@ -15,6 +15,11 @@ static size_t print(StringWriter& writer, const char* s) { | ||||
|   return writer.write(reinterpret_cast<const uint8_t*>(s), strlen(s)); | ||||
| } | ||||
|  | ||||
| template <typename StringWriter> | ||||
| static size_t print(StringWriter& writer, char c) { | ||||
|   return writer.write(static_cast<uint8_t>(c)); | ||||
| } | ||||
|  | ||||
| template <typename StringWriter, typename String> | ||||
| void common_tests(StringWriter& writer, const String& output) { | ||||
|   SECTION("InitialState") { | ||||
| @@ -47,6 +52,7 @@ TEST_CASE("StaticStringWriter") { | ||||
|   SECTION("OverCapacity") { | ||||
|     REQUIRE(20 == print(writer, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")); | ||||
|     REQUIRE(0 == print(writer, "ABC")); | ||||
|     REQUIRE(0 == print(writer, 'D')); | ||||
|     REQUIRE("ABCDEFGHIJKLMNOPQRST" == std::string(output, 20)); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -12,7 +12,6 @@ | ||||
|  | ||||
| namespace ARDUINOJSON_NAMESPACE { | ||||
|  | ||||
| // | ||||
| enum { | ||||
|   VALUE_MASK = 0x7F, | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user