Remove JSON_ARRAY_SIZE(), JSON_OBJECT_SIZE(), and JSON_STRING_SIZE()

This commit is contained in:
Benoit Blanchon
2023-03-29 19:18:06 +02:00
parent 0328f66340
commit 3f43c2b816
36 changed files with 395 additions and 340 deletions

View File

@ -5,6 +5,10 @@
#include <ArduinoJson.h>
#include <catch.hpp>
using ArduinoJson::detail::sizeofArray;
using ArduinoJson::detail::sizeofObject;
using ArduinoJson::detail::sizeofString;
template <typename T>
static void checkValue(const char* input, T expected) {
JsonDocument doc(4096);
@ -185,89 +189,88 @@ TEST_CASE("deserializeMsgPack() under memory constaints") {
}
SECTION("fixarray") {
checkError(JSON_ARRAY_SIZE(0), "\x90", DeserializationError::Ok); // []
checkError(JSON_ARRAY_SIZE(0), "\x91\x01",
checkError(sizeofArray(0), "\x90", DeserializationError::Ok); // []
checkError(sizeofArray(0), "\x91\x01",
DeserializationError::NoMemory); // [1]
checkError(JSON_ARRAY_SIZE(1), "\x91\x01",
checkError(sizeofArray(1), "\x91\x01",
DeserializationError::Ok); // [1]
checkError(JSON_ARRAY_SIZE(1), "\x92\x01\x02",
checkError(sizeofArray(1), "\x92\x01\x02",
DeserializationError::NoMemory); // [1,2]
}
SECTION("array 16") {
checkError(JSON_ARRAY_SIZE(0), "\xDC\x00\x00", DeserializationError::Ok);
checkError(JSON_ARRAY_SIZE(0), "\xDC\x00\x01\x01",
checkError(sizeofArray(0), "\xDC\x00\x00", DeserializationError::Ok);
checkError(sizeofArray(0), "\xDC\x00\x01\x01",
DeserializationError::NoMemory);
checkError(JSON_ARRAY_SIZE(1), "\xDC\x00\x01\x01",
DeserializationError::Ok);
checkError(JSON_ARRAY_SIZE(1), "\xDC\x00\x02\x01\x02",
checkError(sizeofArray(1), "\xDC\x00\x01\x01", DeserializationError::Ok);
checkError(sizeofArray(1), "\xDC\x00\x02\x01\x02",
DeserializationError::NoMemory);
}
SECTION("array 32") {
checkError(JSON_ARRAY_SIZE(0), "\xDD\x00\x00\x00\x00",
checkError(sizeofArray(0), "\xDD\x00\x00\x00\x00",
DeserializationError::Ok);
checkError(JSON_ARRAY_SIZE(0), "\xDD\x00\x00\x00\x01\x01",
checkError(sizeofArray(0), "\xDD\x00\x00\x00\x01\x01",
DeserializationError::NoMemory);
checkError(JSON_ARRAY_SIZE(1), "\xDD\x00\x00\x00\x01\x01",
checkError(sizeofArray(1), "\xDD\x00\x00\x00\x01\x01",
DeserializationError::Ok);
checkError(JSON_ARRAY_SIZE(1), "\xDD\x00\x00\x00\x02\x01\x02",
checkError(sizeofArray(1), "\xDD\x00\x00\x00\x02\x01\x02",
DeserializationError::NoMemory);
}
SECTION("fixmap") {
SECTION("{}") {
checkError(JSON_OBJECT_SIZE(0), "\x80", DeserializationError::Ok);
checkError(sizeofObject(0), "\x80", DeserializationError::Ok);
}
SECTION("{H:1}") {
checkError(JSON_OBJECT_SIZE(0), "\x81\xA1H\x01",
checkError(sizeofObject(0), "\x81\xA1H\x01",
DeserializationError::NoMemory);
checkError(JSON_OBJECT_SIZE(1) + JSON_STRING_SIZE(2), "\x81\xA1H\x01",
checkError(sizeofObject(1) + sizeofString(2), "\x81\xA1H\x01",
DeserializationError::Ok);
}
SECTION("{H:1,W:2}") {
checkError(JSON_OBJECT_SIZE(1) + JSON_STRING_SIZE(2),
"\x82\xA1H\x01\xA1W\x02", DeserializationError::NoMemory);
checkError(JSON_OBJECT_SIZE(2) + 2 * JSON_STRING_SIZE(2),
checkError(sizeofObject(1) + sizeofString(2), "\x82\xA1H\x01\xA1W\x02",
DeserializationError::NoMemory);
checkError(sizeofObject(2) + 2 * sizeofString(2),
"\x82\xA1H\x01\xA1W\x02", DeserializationError::Ok);
}
}
SECTION("map 16") {
SECTION("{}") {
checkError(JSON_OBJECT_SIZE(0), "\xDE\x00\x00", DeserializationError::Ok);
checkError(sizeofObject(0), "\xDE\x00\x00", DeserializationError::Ok);
}
SECTION("{H:1}") {
checkError(JSON_OBJECT_SIZE(0), "\xDE\x00\x01\xA1H\x01",
checkError(sizeofObject(0), "\xDE\x00\x01\xA1H\x01",
DeserializationError::NoMemory);
checkError(JSON_OBJECT_SIZE(1) + JSON_STRING_SIZE(2),
"\xDE\x00\x01\xA1H\x01", DeserializationError::Ok);
checkError(sizeofObject(1) + sizeofString(2), "\xDE\x00\x01\xA1H\x01",
DeserializationError::Ok);
}
SECTION("{H:1,W:2}") {
checkError(JSON_OBJECT_SIZE(1) + JSON_STRING_SIZE(2),
checkError(sizeofObject(1) + sizeofString(2),
"\xDE\x00\x02\xA1H\x01\xA1W\x02",
DeserializationError::NoMemory);
checkError(JSON_OBJECT_SIZE(2) + 2 * JSON_OBJECT_SIZE(1),
checkError(sizeofObject(2) + 2 * sizeofObject(1),
"\xDE\x00\x02\xA1H\x01\xA1W\x02", DeserializationError::Ok);
}
}
SECTION("map 32") {
SECTION("{}") {
checkError(JSON_OBJECT_SIZE(0), "\xDF\x00\x00\x00\x00",
checkError(sizeofObject(0), "\xDF\x00\x00\x00\x00",
DeserializationError::Ok);
}
SECTION("{H:1}") {
checkError(JSON_OBJECT_SIZE(0), "\xDF\x00\x00\x00\x01\xA1H\x01",
checkError(sizeofObject(0), "\xDF\x00\x00\x00\x01\xA1H\x01",
DeserializationError::NoMemory);
checkError(JSON_OBJECT_SIZE(1) + JSON_STRING_SIZE(2),
checkError(sizeofObject(1) + sizeofString(2),
"\xDF\x00\x00\x00\x01\xA1H\x01", DeserializationError::Ok);
}
SECTION("{H:1,W:2}") {
checkError(JSON_OBJECT_SIZE(1) + JSON_STRING_SIZE(2),
checkError(sizeofObject(1) + sizeofString(2),
"\xDF\x00\x00\x00\x02\xA1H\x01\xA1W\x02",
DeserializationError::NoMemory);
checkError(JSON_OBJECT_SIZE(2) + 2 * JSON_OBJECT_SIZE(1),
checkError(sizeofObject(2) + 2 * sizeofObject(1),
"\xDF\x00\x00\x00\x02\xA1H\x01\xA1W\x02",
DeserializationError::Ok);
}

View File

@ -26,7 +26,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::IncompleteInput);
CHECK(doc.as<std::string>() == "{}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(0));
CHECK(doc.memoryUsage() == sizeofObject(0));
}
SECTION("input truncated after inside skipped uint 8") {
@ -35,7 +35,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::IncompleteInput);
CHECK(doc.as<std::string>() == "{}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(0));
CHECK(doc.memoryUsage() == sizeofObject(0));
}
SECTION("input truncated after before skipped string size") {
@ -43,7 +43,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::IncompleteInput);
CHECK(doc.as<std::string>() == "{}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(0));
CHECK(doc.memoryUsage() == sizeofObject(0));
}
SECTION("input truncated after before skipped ext size") {
@ -51,7 +51,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::IncompleteInput);
CHECK(doc.as<std::string>() == "{}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(0));
CHECK(doc.memoryUsage() == sizeofObject(0));
}
SECTION("skip nil") {
@ -60,7 +60,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("reject 0xc1") {
@ -76,7 +76,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip true") {
@ -85,7 +85,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip positive fixint") {
@ -94,7 +94,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip negative fixint") {
@ -103,7 +103,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip uint 8") {
@ -112,7 +112,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip int 8") {
@ -121,7 +121,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip uint 16") {
@ -130,7 +130,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip int 16") {
@ -139,7 +139,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip uint 32") {
@ -149,7 +149,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip int 32") {
@ -159,7 +159,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip uint 64") {
@ -170,7 +170,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip int 64") {
@ -181,7 +181,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip float 32") {
@ -191,7 +191,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip float 64") {
@ -202,7 +202,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip fixstr") {
@ -211,7 +211,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip str 8") {
@ -220,7 +220,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip str 16") {
@ -229,7 +229,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip str 32") {
@ -239,7 +239,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip bin 8") {
@ -248,7 +248,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip bin 16") {
@ -257,7 +257,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip bin 32") {
@ -267,7 +267,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip fixarray") {
@ -276,7 +276,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip array 16") {
@ -286,7 +286,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip array 32") {
@ -299,7 +299,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip fixmap") {
@ -309,7 +309,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip map 16") {
@ -321,7 +321,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip map 32") {
@ -335,7 +335,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip fixext 1") {
@ -347,7 +347,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip fixext 2") {
@ -359,7 +359,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip fixext 4") {
@ -371,7 +371,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip fixext 8") {
@ -383,7 +383,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip fixext 16") {
@ -397,7 +397,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip ext 8") {
@ -409,7 +409,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip ext 16") {
@ -421,7 +421,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
SECTION("skip ext 32") {
@ -433,7 +433,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(1) + 8);
CHECK(doc.memoryUsage() == sizeofObject(1) + 8);
}
}
@ -454,8 +454,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() ==
"{\"onlyarr\":[{\"measure\":2},{\"measure\":4}],\"include\":42}");
CHECK(doc.memoryUsage() ==
JSON_ARRAY_SIZE(2) + 2 * JSON_OBJECT_SIZE(2) + 24);
CHECK(doc.memoryUsage() == sizeofArray(2) + 2 * sizeofObject(2) + 24);
}
SECTION("include array 16") {
@ -470,8 +469,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() ==
"{\"onlyarr\":[{\"measure\":2},{\"measure\":4}],\"include\":42}");
CHECK(doc.memoryUsage() ==
JSON_ARRAY_SIZE(2) + 2 * JSON_OBJECT_SIZE(2) + 24);
CHECK(doc.memoryUsage() == sizeofArray(2) + 2 * sizeofObject(2) + 24);
}
SECTION("include array 32") {
@ -486,8 +484,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() ==
"{\"onlyarr\":[{\"measure\":2},{\"measure\":4}],\"include\":42}");
CHECK(doc.memoryUsage() ==
JSON_ARRAY_SIZE(2) + 2 * JSON_OBJECT_SIZE(2) + 24);
CHECK(doc.memoryUsage() == sizeofArray(2) + 2 * sizeofObject(2) + 24);
}
SECTION("skip null") {
@ -496,7 +493,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip false") {
@ -505,7 +502,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip true") {
@ -514,7 +511,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip positive fixint") {
@ -523,7 +520,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip negative fixint") {
@ -532,7 +529,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip uint 8") {
@ -541,7 +538,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip uint 16") {
@ -550,7 +547,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip uint 32") {
@ -560,7 +557,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip uint 64") {
@ -571,7 +568,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip int 8") {
@ -580,7 +577,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip int 16") {
@ -589,7 +586,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip int 32") {
@ -599,7 +596,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip int 64") {
@ -610,7 +607,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip float 32") {
@ -620,7 +617,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip float 64") {
@ -631,7 +628,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip fixstr") {
@ -640,7 +637,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip str 8") {
@ -662,7 +659,7 @@ TEST_CASE("deserializeMsgPack() filter") {
doc, "\x82\xA7onlyarr\xdb\x00\x00\x00\x05hello\xA7include\x2A",
filterOpt);
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip fixmap") {
@ -672,7 +669,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip map 16") {
@ -684,7 +681,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip map 32") {
@ -698,7 +695,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyarr\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
}
}
@ -713,7 +710,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "[]");
CHECK(doc.memoryUsage() == JSON_ARRAY_SIZE(0));
CHECK(doc.memoryUsage() == sizeofArray(0));
}
}
@ -726,7 +723,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "[1,2,3]");
CHECK(doc.memoryUsage() == JSON_ARRAY_SIZE(3));
CHECK(doc.memoryUsage() == sizeofArray(3));
}
}
}
@ -747,8 +744,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() ==
"{\"onlyobj\":{\"measure\":2},\"include\":42}");
CHECK(doc.memoryUsage() ==
JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(1) + 24);
CHECK(doc.memoryUsage() == sizeofObject(2) + sizeofObject(1) + 24);
}
SECTION("include map 16") {
@ -761,8 +757,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() ==
"{\"onlyobj\":{\"measure\":2},\"include\":42}");
CHECK(doc.memoryUsage() ==
JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(1) + 24);
CHECK(doc.memoryUsage() == sizeofObject(2) + sizeofObject(1) + 24);
}
SECTION("include map 32") {
@ -776,8 +771,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() ==
"{\"onlyobj\":{\"measure\":2},\"include\":42}");
CHECK(doc.memoryUsage() ==
JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(1) + 24);
CHECK(doc.memoryUsage() == sizeofObject(2) + sizeofObject(1) + 24);
}
SECTION("skip null") {
@ -786,7 +780,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip false") {
@ -795,7 +789,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip true") {
@ -804,7 +798,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip positive fixint") {
@ -813,7 +807,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip negative fixint") {
@ -822,7 +816,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip uint 8") {
@ -831,7 +825,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip uint 16") {
@ -840,7 +834,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip uint 32") {
@ -849,7 +843,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip uint 64") {
@ -860,7 +854,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip int 8") {
@ -869,7 +863,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip int 16") {
@ -878,7 +872,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip int 32") {
@ -887,7 +881,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip int 64") {
@ -898,7 +892,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip float 32") {
@ -907,7 +901,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip float 64") {
@ -918,7 +912,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip fixstr") {
@ -927,7 +921,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip str 8") {
@ -949,7 +943,7 @@ TEST_CASE("deserializeMsgPack() filter") {
doc, "\x82\xA7onlyobj\xdb\x00\x00\x00\x05hello\xA7include\x2A",
filterOpt);
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip fixarray") {
@ -958,7 +952,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip array 16") {
@ -969,7 +963,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
SECTION("skip array 32") {
@ -981,7 +975,7 @@ TEST_CASE("deserializeMsgPack() filter") {
CHECK(error == DeserializationError::Ok);
CHECK(doc.as<std::string>() == "{\"onlyobj\":null,\"include\":42}");
CHECK(doc.memoryUsage() == JSON_OBJECT_SIZE(2) + 16);
CHECK(doc.memoryUsage() == sizeofObject(2) + 16);
}
}

View File

@ -7,6 +7,8 @@
#include "CustomReader.hpp"
using ArduinoJson::detail::sizeofObject;
TEST_CASE("deserializeMsgPack(const std::string&)") {
JsonDocument doc(4096);
@ -76,7 +78,7 @@ TEST_CASE("deserializeMsgPack(VLA)") {
char vla[i];
memcpy(vla, "\xDE\x00\x01\xA5Hello\xA5world", 15);
JsonDocument doc(JSON_OBJECT_SIZE(1));
JsonDocument doc(sizeofObject(1));
DeserializationError err = deserializeMsgPack(doc, vla);
REQUIRE(err == DeserializationError::Ok);