mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Increased test coverage
This commit is contained in:
		| @@ -29,6 +29,14 @@ TEST_CASE("nullptr") { | |||||||
|     REQUIRE(variant.isNull()); |     REQUIRE(variant.isNull()); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   SECTION("JsonVariant.set(nullptr) with unbound reference") { | ||||||
|  |     JsonVariant unboundReference; | ||||||
|  |  | ||||||
|  |     unboundReference.set(nullptr); | ||||||
|  |  | ||||||
|  |     REQUIRE(variant.isNull()); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   SECTION("JsonVariant.is<nullptr_t>()") { |   SECTION("JsonVariant.is<nullptr_t>()") { | ||||||
|     variant.set(42); |     variant.set(42); | ||||||
|     REQUIRE(variant.is<std::nullptr_t>() == false); |     REQUIRE(variant.is<std::nullptr_t>() == false); | ||||||
|   | |||||||
| @@ -7,73 +7,83 @@ | |||||||
|  |  | ||||||
| TEST_CASE("JsonArray::remove()") { | TEST_CASE("JsonArray::remove()") { | ||||||
|   DynamicJsonDocument doc(4096); |   DynamicJsonDocument doc(4096); | ||||||
|   JsonArray _array = doc.to<JsonArray>(); |   JsonArray array = doc.to<JsonArray>(); | ||||||
|   _array.add(1); |   array.add(1); | ||||||
|   _array.add(2); |   array.add(2); | ||||||
|   _array.add(3); |   array.add(3); | ||||||
|  |  | ||||||
|   SECTION("RemoveFirstByIndex") { |   SECTION("remove first by index") { | ||||||
|     _array.remove(0); |     array.remove(0); | ||||||
|  |  | ||||||
|     REQUIRE(2 == _array.size()); |     REQUIRE(2 == array.size()); | ||||||
|     REQUIRE(_array[0] == 2); |     REQUIRE(array[0] == 2); | ||||||
|     REQUIRE(_array[1] == 3); |     REQUIRE(array[1] == 3); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("RemoveMiddleByIndex") { |   SECTION("remove middle by index") { | ||||||
|     _array.remove(1); |     array.remove(1); | ||||||
|  |  | ||||||
|     REQUIRE(2 == _array.size()); |     REQUIRE(2 == array.size()); | ||||||
|     REQUIRE(_array[0] == 1); |     REQUIRE(array[0] == 1); | ||||||
|     REQUIRE(_array[1] == 3); |     REQUIRE(array[1] == 3); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("RemoveLastByIndex") { |   SECTION("remove last by index") { | ||||||
|     _array.remove(2); |     array.remove(2); | ||||||
|  |  | ||||||
|     REQUIRE(2 == _array.size()); |     REQUIRE(2 == array.size()); | ||||||
|     REQUIRE(_array[0] == 1); |     REQUIRE(array[0] == 1); | ||||||
|     REQUIRE(_array[1] == 2); |     REQUIRE(array[1] == 2); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("RemoveFirstByIterator") { |   SECTION("remove first by iterator") { | ||||||
|     JsonArray::iterator it = _array.begin(); |     JsonArray::iterator it = array.begin(); | ||||||
|     _array.remove(it); |     array.remove(it); | ||||||
|  |  | ||||||
|     REQUIRE(2 == _array.size()); |     REQUIRE(2 == array.size()); | ||||||
|     REQUIRE(_array[0] == 2); |     REQUIRE(array[0] == 2); | ||||||
|     REQUIRE(_array[1] == 3); |     REQUIRE(array[1] == 3); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("RemoveMiddleByIterator") { |   SECTION("remove middle by iterator") { | ||||||
|     JsonArray::iterator it = _array.begin(); |     JsonArray::iterator it = array.begin(); | ||||||
|     ++it; |     ++it; | ||||||
|     _array.remove(it); |     array.remove(it); | ||||||
|  |  | ||||||
|     REQUIRE(2 == _array.size()); |     REQUIRE(2 == array.size()); | ||||||
|     REQUIRE(_array[0] == 1); |     REQUIRE(array[0] == 1); | ||||||
|     REQUIRE(_array[1] == 3); |     REQUIRE(array[1] == 3); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("RemoveLastByIterator") { |   SECTION("remove last bty iterator") { | ||||||
|     JsonArray::iterator it = _array.begin(); |     JsonArray::iterator it = array.begin(); | ||||||
|     ++it; |     ++it; | ||||||
|     ++it; |     ++it; | ||||||
|     _array.remove(it); |     array.remove(it); | ||||||
|  |  | ||||||
|     REQUIRE(2 == _array.size()); |     REQUIRE(2 == array.size()); | ||||||
|     REQUIRE(_array[0] == 1); |     REQUIRE(array[0] == 1); | ||||||
|     REQUIRE(_array[1] == 2); |     REQUIRE(array[1] == 2); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("In a loop") { |   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) |       if (*it == 2) | ||||||
|         _array.remove(it); |         array.remove(it); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     REQUIRE(2 == _array.size()); |     REQUIRE(2 == array.size()); | ||||||
|     REQUIRE(_array[0] == 1); |     REQUIRE(array[0] == 1); | ||||||
|     REQUIRE(_array[1] == 3); |     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 | #endif | ||||||
|  |  | ||||||
|   SECTION("should work on null object") { |   SECTION("remove by key on unbound reference") { | ||||||
|     JsonObject null; |     JsonObject unboundObject; | ||||||
|     null.remove("key"); |     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); |   DynamicJsonDocument doc(4096); | ||||||
|   JsonVariant var = doc.to<JsonVariant>(); |   JsonVariant var = doc.to<JsonVariant>(); | ||||||
|  |  | ||||||
|   SECTION("integer") { |   SECTION("add integer to new variant") { | ||||||
|     var.add(42); |     var.add(42); | ||||||
|  |  | ||||||
|     REQUIRE(var.as<std::string>() == "[42]"); |     REQUIRE(var.as<std::string>() == "[42]"); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("const char*") { |   SECTION("add const char* to new variant") { | ||||||
|     var.add("hello"); |     var.add("hello"); | ||||||
|  |  | ||||||
|     REQUIRE(var.as<std::string>() == "[\"hello\"]"); |     REQUIRE(var.as<std::string>() == "[\"hello\"]"); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("std::string") { |   SECTION("add std::string to new variant") { | ||||||
|     var.add(std::string("hello")); |     var.add(std::string("hello")); | ||||||
|  |  | ||||||
|     REQUIRE(var.as<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); |     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") { |   SECTION("42 vs 42.0") { | ||||||
|     a.set(42); |     a.set(42); | ||||||
|     b.set(42.0); |     b.set(42.0); | ||||||
| @@ -230,6 +242,30 @@ TEST_CASE("Compare JsonVariant with JsonVariant") { | |||||||
|     CHECK_FALSE(a == b); |     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]") { |   SECTION("[1] vs [1]") { | ||||||
|     a.add(1); |     a.add(1); | ||||||
|     b.add(1); |     b.add(1); | ||||||
|   | |||||||
| @@ -83,4 +83,13 @@ TEST_CASE("JsonVariant::set(JsonVariant)") { | |||||||
|     REQUIRE(doc1.memoryUsage() == JSON_STRING_SIZE(7)); |     REQUIRE(doc1.memoryUsage() == JSON_STRING_SIZE(7)); | ||||||
|     REQUIRE(doc2.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(1 == var[0].size()); | ||||||
|       REQUIRE(std::string("world") == var[0]["hello"]); |       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") { |   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)); |   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> | template <typename StringWriter, typename String> | ||||||
| void common_tests(StringWriter& writer, const String& output) { | void common_tests(StringWriter& writer, const String& output) { | ||||||
|   SECTION("InitialState") { |   SECTION("InitialState") { | ||||||
| @@ -47,6 +52,7 @@ TEST_CASE("StaticStringWriter") { | |||||||
|   SECTION("OverCapacity") { |   SECTION("OverCapacity") { | ||||||
|     REQUIRE(20 == print(writer, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")); |     REQUIRE(20 == print(writer, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")); | ||||||
|     REQUIRE(0 == print(writer, "ABC")); |     REQUIRE(0 == print(writer, "ABC")); | ||||||
|  |     REQUIRE(0 == print(writer, 'D')); | ||||||
|     REQUIRE("ABCDEFGHIJKLMNOPQRST" == std::string(output, 20)); |     REQUIRE("ABCDEFGHIJKLMNOPQRST" == std::string(output, 20)); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -12,7 +12,6 @@ | |||||||
|  |  | ||||||
| namespace ARDUINOJSON_NAMESPACE { | namespace ARDUINOJSON_NAMESPACE { | ||||||
|  |  | ||||||
| // |  | ||||||
| enum { | enum { | ||||||
|   VALUE_MASK = 0x7F, |   VALUE_MASK = 0x7F, | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user