mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	RawJson() accepts any kind of string and obeys to duplication rules
				
					
				
			This commit is contained in:
		| @@ -84,7 +84,7 @@ TEST_CASE("JsonArray::add()") { | ||||
|     REQUIRE(expectedSize == _jsonBuffer.size()); | ||||
|   } | ||||
|  | ||||
|   SECTION("should duplicate  char*") { | ||||
|   SECTION("should duplicate char*") { | ||||
|     _array.add(const_cast<char*>("world")); | ||||
|     const size_t expectedSize = JSON_ARRAY_SIZE(1) + 6; | ||||
|     REQUIRE(expectedSize == _jsonBuffer.size()); | ||||
| @@ -95,4 +95,16 @@ TEST_CASE("JsonArray::add()") { | ||||
|     const size_t expectedSize = JSON_ARRAY_SIZE(1) + 6; | ||||
|     REQUIRE(expectedSize == _jsonBuffer.size()); | ||||
|   } | ||||
|  | ||||
|   SECTION("should not duplicate RawJson(const char*)") { | ||||
|     _array.add(RawJson("{}")); | ||||
|     const size_t expectedSize = JSON_ARRAY_SIZE(1); | ||||
|     REQUIRE(expectedSize == _jsonBuffer.size()); | ||||
|   } | ||||
|  | ||||
|   SECTION("should duplicate RawJson(char*)") { | ||||
|     _array.add(RawJson(const_cast<char*>("{}"))); | ||||
|     const size_t expectedSize = JSON_ARRAY_SIZE(1) + 3; | ||||
|     REQUIRE(expectedSize == _jsonBuffer.size()); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -8,10 +8,10 @@ | ||||
| static void check(JsonArray &array, std::string expected) { | ||||
|   std::string actual; | ||||
|   size_t actualLen = array.printTo(actual); | ||||
|   size_t measuredLen = array.measureLength(); | ||||
|   CHECK(actualLen == expected.size()); | ||||
|   CHECK(measuredLen == expected.size()); | ||||
|   REQUIRE(expected == actual); | ||||
|   REQUIRE(actualLen == expected.size()); | ||||
|   size_t measuredLen = array.measureLength(); | ||||
|   REQUIRE(measuredLen == expected.size()); | ||||
| } | ||||
|  | ||||
| TEST_CASE("JsonArray::printTo()") { | ||||
| @@ -67,12 +67,22 @@ TEST_CASE("JsonArray::printTo()") { | ||||
|     check(array, "[1,2]"); | ||||
|   } | ||||
|  | ||||
|   SECTION("RawJson") { | ||||
|   SECTION("RawJson(const char*)") { | ||||
|     array.add(RawJson("{\"key\":\"value\"}")); | ||||
|  | ||||
|     check(array, "[{\"key\":\"value\"}]"); | ||||
|   } | ||||
|  | ||||
|   SECTION("RawJson(char*)") { | ||||
|     DynamicJsonBuffer jb2; | ||||
|     JsonArray &arr = jb2.createArray(); | ||||
|  | ||||
|     char tmp[] = "{\"key\":\"value\"}"; | ||||
|     arr.add(RawJson(tmp)); | ||||
|  | ||||
|     check(arr, "[{\"key\":\"value\"}]"); | ||||
|   } | ||||
|  | ||||
|   SECTION("OneIntegerOverCapacity") { | ||||
|     array.add(1); | ||||
|     array.add(2); | ||||
|   | ||||
| @@ -8,6 +8,7 @@ add_executable(MiscTests | ||||
| 	std_stream.cpp | ||||
| 	std_string.cpp | ||||
| 	StringBuilder.cpp | ||||
| 	StringTraits.cpp | ||||
| 	TypeTraits.cpp | ||||
| 	unsigned_char.cpp | ||||
| 	vla.cpp | ||||
|   | ||||
							
								
								
									
										22
									
								
								test/Misc/StringTraits.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								test/Misc/StringTraits.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| // ArduinoJson - arduinojson.org | ||||
| // Copyright Benoit Blanchon 2014-2018 | ||||
| // MIT License | ||||
|  | ||||
| #include <ArduinoJson.h> | ||||
| #include <catch.hpp> | ||||
|  | ||||
| using namespace ArduinoJson::Internals; | ||||
|  | ||||
| template <typename String> | ||||
| bool should_duplicate() { | ||||
|   return StringTraits<String>::should_duplicate; | ||||
| } | ||||
|  | ||||
| TEST_CASE("StringTraits") { | ||||
|   SECTION("should_duplicate") { | ||||
|     REQUIRE(false == should_duplicate<const char*>()); | ||||
|     REQUIRE(true == should_duplicate<char*>()); | ||||
|     REQUIRE(true == should_duplicate<RawJsonString<char*> >()); | ||||
|     REQUIRE(false == should_duplicate<RawJsonString<const char*> >()); | ||||
|   } | ||||
| } | ||||
| @@ -4,7 +4,6 @@ | ||||
|  | ||||
| #include <ArduinoJson.h> | ||||
| #include <catch.hpp> | ||||
| #include <sstream> | ||||
|  | ||||
| using namespace ArduinoJson::TypeTraits; | ||||
|  | ||||
| @@ -31,12 +30,6 @@ TEST_CASE("TypeTraits") { | ||||
|     REQUIRE(static_cast<bool>(IsVariant<JsonVariant>::value)); | ||||
|   } | ||||
|  | ||||
|   SECTION("IsString") { | ||||
|     REQUIRE((IsString<const char*>::value)); | ||||
|     REQUIRE((IsString<std::string>::value)); | ||||
|     REQUIRE_FALSE((IsString<double>::value)); | ||||
|   } | ||||
|  | ||||
|   SECTION("IsConst") { | ||||
|     REQUIRE_FALSE((IsConst<char>::value)); | ||||
|     REQUIRE((IsConst<const char>::value)); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user