mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	serializeMsgPack(doc, p, n) doesn't add terminator anymore (fixes #1545)
This commit is contained in:
		| @@ -8,12 +8,15 @@ | ||||
|  | ||||
| static void checkObject(const JsonObject obj, const std::string &expected) { | ||||
|   char actual[256]; | ||||
|   memset(actual, '!', sizeof(actual)); | ||||
|  | ||||
|   size_t actualLen = serializeJson(obj, actual); | ||||
|   size_t measuredLen = measureJson(obj); | ||||
|  | ||||
|   REQUIRE(expected == actual); | ||||
|   REQUIRE(expected.size() == actualLen); | ||||
|   REQUIRE(expected.size() == measuredLen); | ||||
|   REQUIRE(expected.size() == actualLen); | ||||
|   REQUIRE(actual[actualLen] == 0);  // serializeJson() adds a null terminator | ||||
|   REQUIRE(expected == actual); | ||||
| } | ||||
|  | ||||
| TEST_CASE("serializeJson(JsonObject)") { | ||||
|   | ||||
| @@ -39,15 +39,15 @@ void common_tests(StringWriter& sb, const String& output) { | ||||
| } | ||||
|  | ||||
| TEST_CASE("StaticStringWriter") { | ||||
|   char output[20]; | ||||
|   char output[20] = {0}; | ||||
|   StaticStringWriter sb(output, sizeof(output)); | ||||
|  | ||||
|   common_tests(sb, static_cast<const char*>(output)); | ||||
|  | ||||
|   SECTION("OverCapacity") { | ||||
|     REQUIRE(19 == print(sb, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")); | ||||
|     REQUIRE(20 == print(sb, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")); | ||||
|     REQUIRE(0 == print(sb, "ABC")); | ||||
|     REQUIRE(std::string("ABCDEFGHIJKLMNOPQRS") == output); | ||||
|     REQUIRE("ABCDEFGHIJKLMNOPQRST" == std::string(output, 20)); | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -29,19 +29,31 @@ TEST_CASE("serialize MsgPack to various destination types") { | ||||
|     REQUIRE(expected_length == len); | ||||
|     } */ | ||||
|  | ||||
|   SECTION("char[]") { | ||||
|   SECTION("char[] larger than needed") { | ||||
|     char result[64]; | ||||
|     memset(result, 42, sizeof(result)); | ||||
|     size_t len = serializeMsgPack(object, result); | ||||
|  | ||||
|     REQUIRE(std::string(expected_result) == result); | ||||
|     REQUIRE(expected_length == len); | ||||
|     REQUIRE(std::string(expected_result, len) == std::string(result, len)); | ||||
|     REQUIRE(result[len] == 42); | ||||
|   } | ||||
|  | ||||
|   SECTION("char[] of the right size") {  // #1545 | ||||
|     char result[13]; | ||||
|     size_t len = serializeMsgPack(object, result); | ||||
|  | ||||
|     REQUIRE(expected_length == len); | ||||
|     REQUIRE(std::string(expected_result, len) == std::string(result, len)); | ||||
|   } | ||||
|  | ||||
|   SECTION("char*") { | ||||
|     char result[64]; | ||||
|     memset(result, 42, sizeof(result)); | ||||
|     size_t len = serializeMsgPack(object, result, 64); | ||||
|  | ||||
|     REQUIRE(std::string(expected_result) == result); | ||||
|     REQUIRE(expected_length == len); | ||||
|     REQUIRE(std::string(expected_result, len) == std::string(result, len)); | ||||
|     REQUIRE(result[len] == 42); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -13,7 +13,7 @@ using namespace ARDUINOJSON_NAMESPACE; | ||||
|  | ||||
| template <typename T> | ||||
| void checkWriteInteger(T value, std::string expected) { | ||||
|   char output[1024]; | ||||
|   char output[64] = {0}; | ||||
|   StaticStringWriter sb(output, sizeof(output)); | ||||
|   TextFormatter<StaticStringWriter> writer(sb); | ||||
|   writer.writeInteger<T>(value); | ||||
|   | ||||
| @@ -10,7 +10,7 @@ | ||||
| using namespace ARDUINOJSON_NAMESPACE; | ||||
|  | ||||
| void check(const char* input, std::string expected) { | ||||
|   char output[1024]; | ||||
|   char output[64] = {0}; | ||||
|   StaticStringWriter sb(output, sizeof(output)); | ||||
|   TextFormatter<StaticStringWriter> writer(sb); | ||||
|   writer.writeString(input); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user