forked from bblanchon/ArduinoJson
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