Remove capacity from JsonDocument's constructor

This commit is contained in:
Benoit Blanchon
2023-07-17 18:15:13 +02:00
parent 42b2840009
commit 0f319e7ca4
162 changed files with 438 additions and 500 deletions

View File

@ -27,7 +27,7 @@ Here is the environment that I used:
Here is a small snippet that reproduces the issue. Here is a small snippet that reproduces the issue.
```c++ ```c++
JsonDocument doc(1024); JsonDocument doc;
DeserializationError error = deserializeJson(doc, "{\"hello\":\"world\"}"); DeserializationError error = deserializeJson(doc, "{\"hello\":\"world\"}");

View File

@ -28,7 +28,7 @@ Here is the environment that I'm using':
Here is a small snippet that demonstrate the problem. Here is a small snippet that demonstrate the problem.
```c++ ```c++
JsonDocument doc(1024); JsonDocument doc;
DeserializationError error = deserializeJson(doc, "{\"hello\":\"world\"}"); DeserializationError error = deserializeJson(doc, "{\"hello\":\"world\"}");

View File

@ -484,7 +484,7 @@ jobs:
g++ -x c++ - <<END g++ -x c++ - <<END
#include "${{ steps.amalgamate.outputs.filename }}" #include "${{ steps.amalgamate.outputs.filename }}"
int main() { int main() {
JsonDocument doc(300); JsonDocument doc;
deserializeJson(doc, "{}"); deserializeJson(doc, "{}");
} }
END END
@ -518,7 +518,7 @@ jobs:
g++ -x c++ - <<END g++ -x c++ - <<END
#include "${{ steps.amalgamate.outputs.filename }}" #include "${{ steps.amalgamate.outputs.filename }}"
int main() { int main() {
ArduinoJson::JsonDocument doc(300); ArduinoJson::JsonDocument doc;
deserializeJson(doc, "{}"); deserializeJson(doc, "{}");
} }
END END

View File

@ -19,3 +19,4 @@ HEAD
* Fix double call to `size()` in `serializeMsgPack()` * Fix double call to `size()` in `serializeMsgPack()`
* Include `ARDUINOJSON_SLOT_OFFSET_SIZE` in the namespace name * Include `ARDUINOJSON_SLOT_OFFSET_SIZE` in the namespace name
* Remove `JsonVariant::shallowCopy()` * Remove `JsonVariant::shallowCopy()`
* `JsonDocument`'s capacity grows as needed, no need to pass it to the constructor anymore

View File

@ -106,7 +106,7 @@ Here is a program that parses a JSON document with ArduinoJson.
```c++ ```c++
char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}"; char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
JsonDocument doc(1024); JsonDocument doc;
deserializeJson(doc, json); deserializeJson(doc, json);
const char* sensor = doc["sensor"]; const char* sensor = doc["sensor"];
@ -122,7 +122,7 @@ See the [tutorial on arduinojson.org](https://arduinojson.org/v6/doc/deserializa
Here is a program that generates a JSON document with ArduinoJson: Here is a program that generates a JSON document with ArduinoJson:
```c++ ```c++
JsonDocument doc(1024); JsonDocument doc;
doc["sensor"] = "gps"; doc["sensor"] = "gps";
doc["time"] = 1351824120; doc["time"] = 1351824120;

View File

@ -45,7 +45,7 @@ void loadConfiguration(const char* filename, Config& config) {
// Allocate a temporary JsonDocument // Allocate a temporary JsonDocument
// Don't forget to change the capacity to match your requirements. // Don't forget to change the capacity to match your requirements.
// Use https://arduinojson.org/v6/assistant to compute the capacity. // Use https://arduinojson.org/v6/assistant to compute the capacity.
JsonDocument doc(512); JsonDocument doc;
// Deserialize the JSON document // Deserialize the JSON document
DeserializationError error = deserializeJson(doc, file); DeserializationError error = deserializeJson(doc, file);
@ -77,7 +77,7 @@ void saveConfiguration(const char* filename, const Config& config) {
// Allocate a temporary JsonDocument // Allocate a temporary JsonDocument
// Don't forget to change the capacity to match your requirements. // Don't forget to change the capacity to match your requirements.
// Use https://arduinojson.org/assistant to compute the capacity. // Use https://arduinojson.org/assistant to compute the capacity.
JsonDocument doc(256); JsonDocument doc;
// Set the values in the document // Set the values in the document
doc["hostname"] = config.hostname; doc["hostname"] = config.hostname;

View File

@ -34,12 +34,12 @@ void setup() {
"1000000,\"timezone\":0,\"sunrise\":1581492085,\"sunset\":1581527294}}"); "1000000,\"timezone\":0,\"sunrise\":1581492085,\"sunset\":1581527294}}");
// The filter: it contains "true" for each value we want to keep // The filter: it contains "true" for each value we want to keep
JsonDocument filter(200); JsonDocument filter;
filter["list"][0]["dt"] = true; filter["list"][0]["dt"] = true;
filter["list"][0]["main"]["temp"] = true; filter["list"][0]["main"]["temp"] = true;
// Deserialize the document // Deserialize the document
JsonDocument doc(400); JsonDocument doc;
deserializeJson(doc, input_json, DeserializationOption::Filter(filter)); deserializeJson(doc, input_json, DeserializationOption::Filter(filter));
// Print the result // Print the result

View File

@ -19,7 +19,7 @@ void setup() {
// Inside the parentheses, 200 is the RAM allocated to this document. // Inside the parentheses, 200 is the RAM allocated to this document.
// Don't forget to change this value to match your requirement. // Don't forget to change this value to match your requirement.
// Use https://arduinojson.org/v6/assistant to compute the capacity. // Use https://arduinojson.org/v6/assistant to compute the capacity.
JsonDocument doc(200); JsonDocument doc;
// Add values in the document // Add values in the document
// //

View File

@ -25,7 +25,8 @@
void setup() { void setup() {
// Initialize Serial port // Initialize Serial port
Serial.begin(9600); Serial.begin(9600);
while (!Serial) continue; while (!Serial)
continue;
// Initialize Ethernet library // Initialize Ethernet library
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
@ -78,7 +79,7 @@ void setup() {
// Allocate the JSON document // Allocate the JSON document
// Use https://arduinojson.org/v6/assistant to compute the capacity. // Use https://arduinojson.org/v6/assistant to compute the capacity.
JsonDocument doc(256); JsonDocument doc;
// Parse JSON object // Parse JSON object
DeserializationError error = deserializeJson(doc, client); DeserializationError error = deserializeJson(doc, client);

View File

@ -19,7 +19,7 @@ void setup() {
// Inside the parentheses, 200 is the capacity of the memory pool in bytes. // Inside the parentheses, 200 is the capacity of the memory pool in bytes.
// Don't forget to change this value to match your JSON document. // Don't forget to change this value to match your JSON document.
// Use https://arduinojson.org/v6/assistant to compute the capacity. // Use https://arduinojson.org/v6/assistant to compute the capacity.
JsonDocument doc(200); JsonDocument doc;
// JSON input string. // JSON input string.
// //

View File

@ -58,7 +58,7 @@ void loop() {
// Allocate a temporary JsonDocument // Allocate a temporary JsonDocument
// Use https://arduinojson.org/v6/assistant to compute the capacity. // Use https://arduinojson.org/v6/assistant to compute the capacity.
JsonDocument doc(500); JsonDocument doc;
// Create the "analog" array // Create the "analog" array
JsonArray analogValues = doc.createNestedArray("analog"); JsonArray analogValues = doc.createNestedArray("analog");

View File

@ -48,7 +48,7 @@ void setup() {
void loop() { void loop() {
// Allocate a temporary JsonDocument // Allocate a temporary JsonDocument
// Use https://arduinojson.org/v6/assistant to compute the capacity. // Use https://arduinojson.org/v6/assistant to compute the capacity.
JsonDocument doc(500); JsonDocument doc;
// Create the "analog" array // Create the "analog" array
JsonArray analogValues = doc.createNestedArray("analog"); JsonArray analogValues = doc.createNestedArray("analog");

View File

@ -20,7 +20,7 @@ void setup() {
// Inside the parentheses, 200 is the capacity of the memory pool in bytes. // Inside the parentheses, 200 is the capacity of the memory pool in bytes.
// Don't forget to change this value to match your JSON document. // Don't forget to change this value to match your JSON document.
// Use https://arduinojson.org/v6/assistant to compute the capacity. // Use https://arduinojson.org/v6/assistant to compute the capacity.
JsonDocument doc(200); JsonDocument doc;
// MessagePack input string. // MessagePack input string.
// //

View File

@ -14,7 +14,7 @@
#include <ArduinoJson.h> #include <ArduinoJson.h>
void setup() { void setup() {
JsonDocument doc(1024); JsonDocument doc;
// You can use a Flash String as your JSON input. // You can use a Flash String as your JSON input.
// WARNING: the strings in the input will be duplicated in the JsonDocument. // WARNING: the strings in the input will be duplicated in the JsonDocument.

View File

@ -13,7 +13,7 @@
#include <ArduinoJson.h> #include <ArduinoJson.h>
void setup() { void setup() {
JsonDocument doc(1024); JsonDocument doc;
// You can use a String as your JSON input. // You can use a String as your JSON input.
// WARNING: the string in the input will be duplicated in the JsonDocument. // WARNING: the string in the input will be duplicated in the JsonDocument.

View File

@ -6,7 +6,7 @@
extern "C" void app_main() { extern "C" void app_main() {
char buffer[256]; char buffer[256];
JsonDocument doc(200); JsonDocument doc;
doc["hello"] = "world"; doc["hello"] = "world";
serializeJson(doc, buffer); serializeJson(doc, buffer);

View File

@ -1,7 +1,7 @@
#include <ArduinoJson.h> #include <ArduinoJson.h>
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
JsonDocument doc(4096); JsonDocument doc;
DeserializationError error = deserializeJson(doc, data, size); DeserializationError error = deserializeJson(doc, data, size);
if (!error) { if (!error) {
std::string json; std::string json;

View File

@ -1,7 +1,7 @@
#include <ArduinoJson.h> #include <ArduinoJson.h>
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
JsonDocument doc(4096); JsonDocument doc;
DeserializationError error = deserializeMsgPack(doc, data, size); DeserializationError error = deserializeMsgPack(doc, data, size);
if (!error) { if (!error) {
std::string json; std::string json;

View File

@ -13,7 +13,7 @@ int main() {
// Inside the parentheses, 200 is the RAM allocated to this document. // Inside the parentheses, 200 is the RAM allocated to this document.
// Don't forget to change this value to match your requirement. // Don't forget to change this value to match your requirement.
// Use https://arduinojson.org/v6/assistant to compute the capacity. // Use https://arduinojson.org/v6/assistant to compute the capacity.
JsonDocument doc(200); JsonDocument doc;
// Add values in the document // Add values in the document
// //

View File

@ -13,7 +13,7 @@ int main() {
// Inside the parentheses, 200 is the capacity of the memory pool in bytes. // Inside the parentheses, 200 is the capacity of the memory pool in bytes.
// Don't forget to change this value to match your JSON document. // Don't forget to change this value to match your JSON document.
// Use https://arduinojson.org/v6/assistant to compute the capacity. // Use https://arduinojson.org/v6/assistant to compute the capacity.
JsonDocument doc(300); JsonDocument doc;
// JSON input string. // JSON input string.
// //

View File

@ -13,7 +13,7 @@ int main() {
// Inside the parentheses, 300 is the size of the memory pool in bytes. // Inside the parentheses, 300 is the size of the memory pool in bytes.
// Don't forget to change this value to match your JSON document. // Don't forget to change this value to match your JSON document.
// Use https://arduinojson.org/assistant to compute the capacity. // Use https://arduinojson.org/assistant to compute the capacity.
JsonDocument doc(300); JsonDocument doc;
// MessagePack input string. // MessagePack input string.
// //

View File

@ -11,7 +11,7 @@ using ArduinoJson::detail::sizeofArray;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("string_view") { TEST_CASE("string_view") {
JsonDocument doc(256); JsonDocument doc;
JsonVariant variant = doc.to<JsonVariant>(); JsonVariant variant = doc.to<JsonVariant>();
SECTION("deserializeJson()") { SECTION("deserializeJson()") {

View File

@ -4,7 +4,7 @@
#include <string> #include <string>
TEST_CASE("C++20 smoke test") { TEST_CASE("C++20 smoke test") {
JsonDocument doc(128); JsonDocument doc;
deserializeJson(doc, "{\"hello\":\"world\"}"); deserializeJson(doc, "{\"hello\":\"world\"}");
REQUIRE(doc["hello"] == "world"); REQUIRE(doc["hello"] == "world");

View File

@ -8,6 +8,6 @@ struct Stream {};
int main() { int main() {
Stream* stream = 0; Stream* stream = 0;
JsonDocument doc(1024); JsonDocument doc;
deserializeJson(doc, stream); deserializeJson(doc, stream);
} }

View File

@ -7,6 +7,6 @@
// See issue #1498 // See issue #1498
int main() { int main() {
JsonDocument doc(1024); JsonDocument doc;
doc["dummy"] = 'A'; doc["dummy"] = 'A';
} }

View File

@ -11,6 +11,6 @@
ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED(long long) ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED(long long)
int main() { int main() {
JsonDocument doc(1024); JsonDocument doc;
doc["dummy"].as<long long>(); doc["dummy"].as<long long>();
} }

View File

@ -7,6 +7,6 @@
// See issue #1498 // See issue #1498
int main() { int main() {
JsonDocument doc(1024); JsonDocument doc;
doc["dummy"].as<char>(); doc["dummy"].as<char>();
} }

View File

@ -10,6 +10,6 @@
#endif #endif
int main() { int main() {
JsonDocument doc(1024); JsonDocument doc;
doc["dummy"] = static_cast<long long>(42); doc["dummy"] = static_cast<long long>(42);
} }

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("Gbathree") { TEST_CASE("Gbathree") {
JsonDocument doc(4096); JsonDocument doc;
DeserializationError error = deserializeJson( DeserializationError error = deserializeJson(
doc, doc,

View File

@ -8,8 +8,8 @@
// https://github.com/bblanchon/ArduinoJson/issues/772 // https://github.com/bblanchon/ArduinoJson/issues/772
TEST_CASE("Issue772") { TEST_CASE("Issue772") {
JsonDocument doc1(4096); JsonDocument doc1;
JsonDocument doc2(4096); JsonDocument doc2;
DeserializationError err; DeserializationError err;
std::string data = std::string data =
"{\"state\":{\"reported\":{\"timestamp\":\"2018-07-02T09:40:12Z\"," "{\"state\":{\"reported\":{\"timestamp\":\"2018-07-02T09:40:12Z\","

View File

@ -53,12 +53,12 @@ TEST_CASE("OpenWeatherMap") {
"]}"; "]}";
// clang-format on // clang-format on
JsonDocument filter(512); JsonDocument filter;
filter["list"][0]["dt"] = true; filter["list"][0]["dt"] = true;
filter["list"][0]["main"]["temp"] = true; filter["list"][0]["main"]["temp"] = true;
filter["list"][0]["weather"][0]["description"] = true; filter["list"][0]["weather"][0]["description"] = true;
JsonDocument doc(16384); JsonDocument doc;
REQUIRE( REQUIRE(
deserializeJson(doc, input_json, DeserializationOption::Filter(filter)) == deserializeJson(doc, input_json, DeserializationOption::Filter(filter)) ==

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
void check(std::string originalJson) { void check(std::string originalJson) {
JsonDocument doc(16384); JsonDocument doc;
std::string prettyJson; std::string prettyJson;
deserializeJson(doc, originalJson); deserializeJson(doc, originalJson);

View File

@ -9,7 +9,7 @@ using ArduinoJson::detail::sizeofArray;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("JsonArray::add()") { TEST_CASE("JsonArray::add()") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
SECTION("int") { SECTION("int") {
@ -54,7 +54,7 @@ TEST_CASE("JsonArray::add()") {
#endif #endif
SECTION("nested array") { SECTION("nested array") {
JsonDocument doc2(4096); JsonDocument doc2;
JsonArray arr = doc2.to<JsonArray>(); JsonArray arr = doc2.to<JsonArray>();
array.add(arr); array.add(arr);
@ -65,7 +65,7 @@ TEST_CASE("JsonArray::add()") {
} }
SECTION("nested object") { SECTION("nested object") {
JsonDocument doc2(4096); JsonDocument doc2;
JsonObject obj = doc2.to<JsonObject>(); JsonObject obj = doc2.to<JsonObject>();
array.add(obj); array.add(obj);
@ -77,7 +77,7 @@ TEST_CASE("JsonArray::add()") {
SECTION("array subscript") { SECTION("array subscript") {
const char* str = "hello"; const char* str = "hello";
JsonDocument doc2(4096); JsonDocument doc2;
JsonArray arr = doc2.to<JsonArray>(); JsonArray arr = doc2.to<JsonArray>();
arr.add(str); arr.add(str);
@ -88,7 +88,7 @@ TEST_CASE("JsonArray::add()") {
SECTION("object subscript") { SECTION("object subscript") {
const char* str = "hello"; const char* str = "hello";
JsonDocument doc2(4096); JsonDocument doc2;
JsonObject obj = doc2.to<JsonObject>(); JsonObject obj = doc2.to<JsonObject>();
obj["x"] = str; obj["x"] = str;

View File

@ -14,7 +14,7 @@ TEST_CASE("JsonArray::clear()") {
} }
SECTION("Removes all elements") { SECTION("Removes all elements") {
JsonDocument doc(64); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
array.add(1); array.add(1);
array.add(2); array.add(2);

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("Compare JsonArray with JsonArray") { TEST_CASE("Compare JsonArray with JsonArray") {
JsonDocument doc(256); JsonDocument doc;
SECTION("Compare with unbound") { SECTION("Compare with unbound") {
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
@ -82,7 +82,7 @@ TEST_CASE("Compare JsonArray with JsonArray") {
} }
TEST_CASE("Compare JsonArray with JsonVariant") { TEST_CASE("Compare JsonArray with JsonVariant") {
JsonDocument doc(256); JsonDocument doc;
SECTION("Compare with self") { SECTION("Compare with self") {
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
@ -153,7 +153,7 @@ TEST_CASE("Compare JsonArray with JsonVariant") {
} }
TEST_CASE("Compare JsonArray with JsonVariantConst") { TEST_CASE("Compare JsonArray with JsonVariantConst") {
JsonDocument doc(256); JsonDocument doc;
SECTION("Compare with unbound") { SECTION("Compare with unbound") {
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
@ -247,7 +247,7 @@ TEST_CASE("Compare JsonArray with JsonVariantConst") {
} }
TEST_CASE("Compare JsonArray with JsonArrayConst") { TEST_CASE("Compare JsonArray with JsonArrayConst") {
JsonDocument doc(256); JsonDocument doc;
SECTION("Compare with unbound") { SECTION("Compare with unbound") {
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
@ -347,7 +347,7 @@ TEST_CASE("Compare JsonArray with JsonArrayConst") {
} }
TEST_CASE("Compare JsonArrayConst with JsonArrayConst") { TEST_CASE("Compare JsonArrayConst with JsonArrayConst") {
JsonDocument doc(256); JsonDocument doc;
SECTION("Compare with unbound") { SECTION("Compare with unbound") {
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
@ -430,7 +430,7 @@ TEST_CASE("Compare JsonArrayConst with JsonArrayConst") {
} }
TEST_CASE("Compare JsonArrayConst with JsonVariant") { TEST_CASE("Compare JsonArrayConst with JsonVariant") {
JsonDocument doc(256); JsonDocument doc;
SECTION("Compare with self") { SECTION("Compare with self") {
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();

View File

@ -7,11 +7,9 @@
#include "Allocators.hpp" #include "Allocators.hpp"
using ArduinoJson::detail::sizeofArray;
TEST_CASE("copyArray()") { TEST_CASE("copyArray()") {
SECTION("int[] -> JsonArray") { SECTION("int[] -> JsonArray") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
char json[32]; char json[32];
int source[] = {1, 2, 3}; int source[] = {1, 2, 3};
@ -24,7 +22,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("std::string[] -> JsonArray") { SECTION("std::string[] -> JsonArray") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
char json[32]; char json[32];
std::string source[] = {"a", "b", "c"}; std::string source[] = {"a", "b", "c"};
@ -37,7 +35,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("const char*[] -> JsonArray") { SECTION("const char*[] -> JsonArray") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
char json[32]; char json[32];
const char* source[] = {"a", "b", "c"}; const char* source[] = {"a", "b", "c"};
@ -50,7 +48,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("const char[][] -> JsonArray") { SECTION("const char[][] -> JsonArray") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
char json[32]; char json[32];
char source[][2] = {"a", "b", "c"}; char source[][2] = {"a", "b", "c"};
@ -63,7 +61,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("const char[][] -> JsonDocument") { SECTION("const char[][] -> JsonDocument") {
JsonDocument doc(4096); JsonDocument doc;
char json[32]; char json[32];
char source[][2] = {"a", "b", "c"}; char source[][2] = {"a", "b", "c"};
@ -75,7 +73,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("const char[][] -> MemberProxy") { SECTION("const char[][] -> MemberProxy") {
JsonDocument doc(4096); JsonDocument doc;
char json[32]; char json[32];
char source[][2] = {"a", "b", "c"}; char source[][2] = {"a", "b", "c"};
@ -87,7 +85,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("int[] -> JsonDocument") { SECTION("int[] -> JsonDocument") {
JsonDocument doc(4096); JsonDocument doc;
char json[32]; char json[32];
int source[] = {1, 2, 3}; int source[] = {1, 2, 3};
@ -99,7 +97,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("int[] -> MemberProxy") { SECTION("int[] -> MemberProxy") {
JsonDocument doc(4096); JsonDocument doc;
char json[32]; char json[32];
int source[] = {1, 2, 3}; int source[] = {1, 2, 3};
@ -111,7 +109,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("int[] -> JsonArray, but not enough memory") { SECTION("int[] -> JsonArray, but not enough memory") {
JsonDocument doc(0, FailingAllocator::instance()); JsonDocument doc(FailingAllocator::instance());
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
int source[] = {1, 2, 3}; int source[] = {1, 2, 3};
@ -120,7 +118,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("int[][] -> JsonArray") { SECTION("int[][] -> JsonArray") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
char json[32]; char json[32];
int source[][3] = {{1, 2, 3}, {4, 5, 6}}; int source[][3] = {{1, 2, 3}, {4, 5, 6}};
@ -133,7 +131,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("int[][] -> MemberProxy") { SECTION("int[][] -> MemberProxy") {
JsonDocument doc(4096); JsonDocument doc;
char json[32]; char json[32];
int source[][3] = {{1, 2, 3}, {4, 5, 6}}; int source[][3] = {{1, 2, 3}, {4, 5, 6}};
@ -145,7 +143,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("int[][] -> JsonDocument") { SECTION("int[][] -> JsonDocument") {
JsonDocument doc(4096); JsonDocument doc;
char json[32]; char json[32];
int source[][3] = {{1, 2, 3}, {4, 5, 6}}; int source[][3] = {{1, 2, 3}, {4, 5, 6}};
@ -157,7 +155,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("int[][] -> JsonArray, but not enough memory") { SECTION("int[][] -> JsonArray, but not enough memory") {
JsonDocument doc(0, FailingAllocator::instance()); JsonDocument doc(FailingAllocator::instance());
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
int source[][3] = {{1, 2, 3}, {4, 5, 6}}; int source[][3] = {{1, 2, 3}, {4, 5, 6}};
@ -166,7 +164,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("JsonArray -> int[], with more space than needed") { SECTION("JsonArray -> int[], with more space than needed") {
JsonDocument doc(4096); JsonDocument doc;
char json[] = "[1,2,3]"; char json[] = "[1,2,3]";
DeserializationError err = deserializeJson(doc, json); DeserializationError err = deserializeJson(doc, json);
CHECK(err == DeserializationError::Ok); CHECK(err == DeserializationError::Ok);
@ -183,7 +181,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("JsonArray -> int[], without enough space") { SECTION("JsonArray -> int[], without enough space") {
JsonDocument doc(4096); JsonDocument doc;
char json[] = "[1,2,3]"; char json[] = "[1,2,3]";
DeserializationError err = deserializeJson(doc, json); DeserializationError err = deserializeJson(doc, json);
CHECK(err == DeserializationError::Ok); CHECK(err == DeserializationError::Ok);
@ -198,7 +196,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("JsonArray -> std::string[]") { SECTION("JsonArray -> std::string[]") {
JsonDocument doc(4096); JsonDocument doc;
char json[] = "[\"a\",\"b\",\"c\"]"; char json[] = "[\"a\",\"b\",\"c\"]";
DeserializationError err = deserializeJson(doc, json); DeserializationError err = deserializeJson(doc, json);
CHECK(err == DeserializationError::Ok); CHECK(err == DeserializationError::Ok);
@ -215,7 +213,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("JsonArray -> char[N][]") { SECTION("JsonArray -> char[N][]") {
JsonDocument doc(4096); JsonDocument doc;
char json[] = "[\"a12345\",\"b123456\",\"c1234567\"]"; char json[] = "[\"a12345\",\"b123456\",\"c1234567\"]";
DeserializationError err = deserializeJson(doc, json); DeserializationError err = deserializeJson(doc, json);
CHECK(err == DeserializationError::Ok); CHECK(err == DeserializationError::Ok);
@ -232,7 +230,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("JsonDocument -> int[]") { SECTION("JsonDocument -> int[]") {
JsonDocument doc(4096); JsonDocument doc;
char json[] = "[1,2,3]"; char json[] = "[1,2,3]";
DeserializationError err = deserializeJson(doc, json); DeserializationError err = deserializeJson(doc, json);
CHECK(err == DeserializationError::Ok); CHECK(err == DeserializationError::Ok);
@ -248,7 +246,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("MemberProxy -> int[]") { SECTION("MemberProxy -> int[]") {
JsonDocument doc(4096); JsonDocument doc;
char json[] = "{\"data\":[1,2,3]}"; char json[] = "{\"data\":[1,2,3]}";
DeserializationError err = deserializeJson(doc, json); DeserializationError err = deserializeJson(doc, json);
CHECK(err == DeserializationError::Ok); CHECK(err == DeserializationError::Ok);
@ -264,7 +262,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("ElementProxy -> int[]") { SECTION("ElementProxy -> int[]") {
JsonDocument doc(4096); JsonDocument doc;
char json[] = "[[1,2,3]]"; char json[] = "[[1,2,3]]";
DeserializationError err = deserializeJson(doc, json); DeserializationError err = deserializeJson(doc, json);
CHECK(err == DeserializationError::Ok); CHECK(err == DeserializationError::Ok);
@ -280,7 +278,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("JsonArray -> int[][]") { SECTION("JsonArray -> int[][]") {
JsonDocument doc(4096); JsonDocument doc;
char json[] = "[[1,2],[3],[4]]"; char json[] = "[[1,2],[3],[4]]";
DeserializationError err = deserializeJson(doc, json); DeserializationError err = deserializeJson(doc, json);
@ -299,7 +297,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("JsonDocument -> int[][]") { SECTION("JsonDocument -> int[][]") {
JsonDocument doc(4096); JsonDocument doc;
char json[] = "[[1,2],[3],[4]]"; char json[] = "[[1,2],[3],[4]]";
DeserializationError err = deserializeJson(doc, json); DeserializationError err = deserializeJson(doc, json);
@ -317,7 +315,7 @@ TEST_CASE("copyArray()") {
} }
SECTION("MemberProxy -> int[][]") { SECTION("MemberProxy -> int[][]") {
JsonDocument doc(4096); JsonDocument doc;
char json[] = "{\"data\":[[1,2],[3],[4]]}"; char json[] = "{\"data\":[[1,2],[3],[4]]}";
DeserializationError err = deserializeJson(doc, json); DeserializationError err = deserializeJson(doc, json);

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonArray basics") { TEST_CASE("JsonArray basics") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
SECTION("CreateNestedArray") { SECTION("CreateNestedArray") {

View File

@ -6,11 +6,11 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonArray::operator==()") { TEST_CASE("JsonArray::operator==()") {
JsonDocument doc1(4096); JsonDocument doc1;
JsonArray array1 = doc1.to<JsonArray>(); JsonArray array1 = doc1.to<JsonArray>();
JsonArrayConst array1c = array1; JsonArrayConst array1c = array1;
JsonDocument doc2(4096); JsonDocument doc2;
JsonArray array2 = doc2.to<JsonArray>(); JsonArray array2 = doc2.to<JsonArray>();
JsonArrayConst array2c = array2; JsonArrayConst array2c = array2;

View File

@ -12,7 +12,7 @@ TEST_CASE("JsonArray::isNull()") {
} }
SECTION("returns false") { SECTION("returns false") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray arr = doc.to<JsonArray>(); JsonArray arr = doc.to<JsonArray>();
REQUIRE(arr.isNull() == false); REQUIRE(arr.isNull() == false);
} }
@ -25,7 +25,7 @@ TEST_CASE("JsonArrayConst::isNull()") {
} }
SECTION("returns false") { SECTION("returns false") {
JsonDocument doc(4096); JsonDocument doc;
JsonArrayConst arr = doc.to<JsonArray>(); JsonArrayConst arr = doc.to<JsonArray>();
REQUIRE(arr.isNull() == false); REQUIRE(arr.isNull() == false);
} }
@ -38,7 +38,7 @@ TEST_CASE("JsonArray::operator bool()") {
} }
SECTION("returns true") { SECTION("returns true") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray arr = doc.to<JsonArray>(); JsonArray arr = doc.to<JsonArray>();
REQUIRE(static_cast<bool>(arr) == true); REQUIRE(static_cast<bool>(arr) == true);
} }
@ -51,7 +51,7 @@ TEST_CASE("JsonArrayConst::operator bool()") {
} }
SECTION("returns true") { SECTION("returns true") {
JsonDocument doc(4096); JsonDocument doc;
JsonArrayConst arr = doc.to<JsonArray>(); JsonArrayConst arr = doc.to<JsonArray>();
REQUIRE(static_cast<bool>(arr) == true); REQUIRE(static_cast<bool>(arr) == true);
} }

View File

@ -5,11 +5,9 @@
#include <ArduinoJson.h> #include <ArduinoJson.h>
#include <catch.hpp> #include <catch.hpp>
using ArduinoJson::detail::sizeofArray;
template <typename TArray> template <typename TArray>
static void run_iterator_test() { static void run_iterator_test() {
JsonDocument doc(sizeofArray(2)); JsonDocument doc;
JsonArray tmp = doc.to<JsonArray>(); JsonArray tmp = doc.to<JsonArray>();
tmp.add(12); tmp.add(12);
tmp.add(34); tmp.add(34);

View File

@ -10,7 +10,7 @@ using ArduinoJson::detail::sizeofObject;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("JsonArray::memoryUsage()") { TEST_CASE("JsonArray::memoryUsage()") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray arr = doc.to<JsonArray>(); JsonArray arr = doc.to<JsonArray>();
SECTION("return 0 if uninitialized") { SECTION("return 0 if uninitialized") {

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonArray::nesting()") { TEST_CASE("JsonArray::nesting()") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray arr = doc.to<JsonArray>(); JsonArray arr = doc.to<JsonArray>();
SECTION("return 0 if uninitialized") { SECTION("return 0 if uninitialized") {

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonArray::remove()") { TEST_CASE("JsonArray::remove()") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
array.add(1); array.add(1);
array.add(2); array.add(2);

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonArray::size()") { TEST_CASE("JsonArray::size()") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
SECTION("returns 0 is empty") { SECTION("returns 0 is empty") {

View File

@ -12,7 +12,7 @@ static void eraseString(std::string& str) {
} }
TEST_CASE("std::string") { TEST_CASE("std::string") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
SECTION("add()") { SECTION("add()") {

View File

@ -10,7 +10,7 @@ using ArduinoJson::detail::sizeofArray;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("JsonArray::operator[]") { TEST_CASE("JsonArray::operator[]") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
SECTION("Pad with null") { SECTION("Pad with null") {
@ -68,7 +68,7 @@ TEST_CASE("JsonArray::operator[]") {
} }
SECTION("nested array") { SECTION("nested array") {
JsonDocument doc2(4096); JsonDocument doc2;
JsonArray arr2 = doc2.to<JsonArray>(); JsonArray arr2 = doc2.to<JsonArray>();
array[0] = arr2; array[0] = arr2;
@ -79,7 +79,7 @@ TEST_CASE("JsonArray::operator[]") {
} }
SECTION("nested object") { SECTION("nested object") {
JsonDocument doc2(4096); JsonDocument doc2;
JsonObject obj = doc2.to<JsonObject>(); JsonObject obj = doc2.to<JsonObject>();
array[0] = obj; array[0] = obj;
@ -90,7 +90,7 @@ TEST_CASE("JsonArray::operator[]") {
} }
SECTION("array subscript") { SECTION("array subscript") {
JsonDocument doc2(4096); JsonDocument doc2;
JsonArray arr2 = doc2.to<JsonArray>(); JsonArray arr2 = doc2.to<JsonArray>();
const char* str = "hello"; const char* str = "hello";
@ -103,7 +103,7 @@ TEST_CASE("JsonArray::operator[]") {
SECTION("object subscript") { SECTION("object subscript") {
const char* str = "hello"; const char* str = "hello";
JsonDocument doc2(4096); JsonDocument doc2;
JsonObject obj = doc2.to<JsonObject>(); JsonObject obj = doc2.to<JsonObject>();
obj["x"] = str; obj["x"] = str;
@ -162,7 +162,7 @@ TEST_CASE("JsonArray::operator[]") {
} }
TEST_CASE("JsonArrayConst::operator[]") { TEST_CASE("JsonArrayConst::operator[]") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
array.add(0); array.add(0);

View File

@ -8,11 +8,10 @@
#include "Allocators.hpp" #include "Allocators.hpp"
using ArduinoJson::detail::sizeofArray; using ArduinoJson::detail::sizeofArray;
using ArduinoJson::detail::sizeofObject;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("deserialize JSON array") { TEST_CASE("deserialize JSON array") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("An empty array") { SECTION("An empty array") {
DeserializationError err = deserializeJson(doc, "[]"); DeserializationError err = deserializeJson(doc, "[]");
@ -260,7 +259,7 @@ TEST_CASE("deserialize JSON array") {
TEST_CASE("deserialize JSON array under memory constraints") { TEST_CASE("deserialize JSON array under memory constraints") {
TimebombAllocator allocator(100); TimebombAllocator allocator(100);
JsonDocument doc(0, &allocator); JsonDocument doc(&allocator);
SECTION("empty array requires no allocation") { SECTION("empty array requires no allocation") {
allocator.setCountdown(0); allocator.setCountdown(0);

View File

@ -689,8 +689,8 @@ TEST_CASE("Filtering") {
for (size_t i = 0; i < sizeof(testCases) / sizeof(testCases[0]); i++) { for (size_t i = 0; i < sizeof(testCases) / sizeof(testCases[0]); i++) {
CAPTURE(i); CAPTURE(i);
JsonDocument filter(256); JsonDocument filter;
JsonDocument doc(256); JsonDocument doc;
TestCase& tc = testCases[i]; TestCase& tc = testCases[i];
CAPTURE(tc.filter); CAPTURE(tc.filter);
@ -710,10 +710,10 @@ TEST_CASE("Filtering") {
TEST_CASE("Zero-copy mode") { // issue #1697 TEST_CASE("Zero-copy mode") { // issue #1697
char input[] = "{\"include\":42,\"exclude\":666}"; char input[] = "{\"include\":42,\"exclude\":666}";
JsonDocument filter(256); JsonDocument filter;
filter["include"] = true; filter["include"] = true;
JsonDocument doc(256); JsonDocument doc;
DeserializationError err = DeserializationError err =
deserializeJson(doc, input, DeserializationOption::Filter(filter)); deserializeJson(doc, input, DeserializationOption::Filter(filter));
@ -722,8 +722,8 @@ TEST_CASE("Zero-copy mode") { // issue #1697
} }
TEST_CASE("Overloads") { TEST_CASE("Overloads") {
JsonDocument doc(256); JsonDocument doc;
JsonDocument filter(256); JsonDocument filter;
using namespace DeserializationOption; using namespace DeserializationOption;

View File

@ -18,7 +18,7 @@ TEST_CASE("Truncated JSON input") {
"{", "{a", "{a:", "{a:1", "{a:1,", "{a:1,"}; "{", "{a", "{a:", "{a:1", "{a:1,", "{a:1,"};
const size_t testCount = sizeof(testCases) / sizeof(testCases[0]); const size_t testCount = sizeof(testCases) / sizeof(testCases[0]);
JsonDocument doc(4096); JsonDocument doc;
for (size_t i = 0; i < testCount; i++) { for (size_t i = 0; i < testCount; i++) {
const char* input = testCases[i]; const char* input = testCases[i];

View File

@ -13,7 +13,7 @@ using ArduinoJson::detail::sizeofObject;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("deserializeJson(char*)") { TEST_CASE("deserializeJson(char*)") {
JsonDocument doc(1024); JsonDocument doc;
char input[] = "{\"hello\":\"world\"}"; char input[] = "{\"hello\":\"world\"}";
@ -24,7 +24,7 @@ TEST_CASE("deserializeJson(char*)") {
} }
TEST_CASE("deserializeJson(unsigned char*, unsigned int)") { // issue #1897 TEST_CASE("deserializeJson(unsigned char*, unsigned int)") { // issue #1897
JsonDocument doc(1024); JsonDocument doc;
unsigned char input[] = "{\"hello\":\"world\"}"; unsigned char input[] = "{\"hello\":\"world\"}";
unsigned char* input_ptr = input; unsigned char* input_ptr = input;
@ -36,7 +36,7 @@ TEST_CASE("deserializeJson(unsigned char*, unsigned int)") { // issue #1897
} }
TEST_CASE("deserializeJson(uint8_t*, size_t)") { // issue #1898 TEST_CASE("deserializeJson(uint8_t*, size_t)") { // issue #1898
JsonDocument doc(1024); JsonDocument doc;
uint8_t input[] = "{\"hello\":\"world\"}"; uint8_t input[] = "{\"hello\":\"world\"}";
uint8_t* input_ptr = input; uint8_t* input_ptr = input;
@ -48,7 +48,7 @@ TEST_CASE("deserializeJson(uint8_t*, size_t)") { // issue #1898
} }
TEST_CASE("deserializeJson(const std::string&)") { TEST_CASE("deserializeJson(const std::string&)") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("should accept const string") { SECTION("should accept const string") {
const std::string input("[42]"); const std::string input("[42]");
@ -77,7 +77,7 @@ TEST_CASE("deserializeJson(const std::string&)") {
} }
TEST_CASE("deserializeJson(std::istream&)") { TEST_CASE("deserializeJson(std::istream&)") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("array") { SECTION("array") {
std::istringstream json(" [ 42 ] "); std::istringstream json(" [ 42 ] ");
@ -148,7 +148,7 @@ TEST_CASE("deserializeJson(VLA)") {
char vla[i]; char vla[i];
strcpy(vla, "{\"a\":42}"); strcpy(vla, "{\"a\":42}");
JsonDocument doc(sizeofObject(1)); JsonDocument doc;
DeserializationError err = deserializeJson(doc, vla); DeserializationError err = deserializeJson(doc, vla);
REQUIRE(err == DeserializationError::Ok); REQUIRE(err == DeserializationError::Ok);
@ -156,7 +156,7 @@ TEST_CASE("deserializeJson(VLA)") {
#endif #endif
TEST_CASE("deserializeJson(CustomReader)") { TEST_CASE("deserializeJson(CustomReader)") {
JsonDocument doc(4096); JsonDocument doc;
CustomReader reader("[4,2]"); CustomReader reader("[4,2]");
DeserializationError err = deserializeJson(doc, reader); DeserializationError err = deserializeJson(doc, reader);
@ -167,10 +167,10 @@ TEST_CASE("deserializeJson(CustomReader)") {
} }
TEST_CASE("deserializeJson(JsonDocument&, MemberProxy)") { TEST_CASE("deserializeJson(JsonDocument&, MemberProxy)") {
JsonDocument doc1(4096); JsonDocument doc1;
doc1["payload"] = "[4,2]"; doc1["payload"] = "[4,2]";
JsonDocument doc2(4096); JsonDocument doc2;
DeserializationError err = deserializeJson(doc2, doc1["payload"]); DeserializationError err = deserializeJson(doc2, doc1["payload"]);
REQUIRE(err == DeserializationError::Ok); REQUIRE(err == DeserializationError::Ok);
@ -180,10 +180,10 @@ TEST_CASE("deserializeJson(JsonDocument&, MemberProxy)") {
} }
TEST_CASE("deserializeJson(JsonDocument&, JsonVariant)") { TEST_CASE("deserializeJson(JsonDocument&, JsonVariant)") {
JsonDocument doc1(4096); JsonDocument doc1;
doc1["payload"] = "[4,2]"; doc1["payload"] = "[4,2]";
JsonDocument doc2(4096); JsonDocument doc2;
DeserializationError err = DeserializationError err =
deserializeJson(doc2, doc1["payload"].as<JsonVariant>()); deserializeJson(doc2, doc1["payload"].as<JsonVariant>());
@ -194,10 +194,10 @@ TEST_CASE("deserializeJson(JsonDocument&, JsonVariant)") {
} }
TEST_CASE("deserializeJson(JsonDocument&, JsonVariantConst)") { TEST_CASE("deserializeJson(JsonDocument&, JsonVariantConst)") {
JsonDocument doc1(4096); JsonDocument doc1;
doc1["payload"] = "[4,2]"; doc1["payload"] = "[4,2]";
JsonDocument doc2(4096); JsonDocument doc2;
DeserializationError err = DeserializationError err =
deserializeJson(doc2, doc1["payload"].as<JsonVariantConst>()); deserializeJson(doc2, doc1["payload"].as<JsonVariantConst>());
@ -208,10 +208,10 @@ TEST_CASE("deserializeJson(JsonDocument&, JsonVariantConst)") {
} }
TEST_CASE("deserializeJson(JsonDocument&, ElementProxy)") { TEST_CASE("deserializeJson(JsonDocument&, ElementProxy)") {
JsonDocument doc1(4096); JsonDocument doc1;
doc1[0] = "[4,2]"; doc1[0] = "[4,2]";
JsonDocument doc2(4096); JsonDocument doc2;
DeserializationError err = deserializeJson(doc2, doc1[0]); DeserializationError err = deserializeJson(doc2, doc1[0]);
REQUIRE(err == DeserializationError::Ok); REQUIRE(err == DeserializationError::Ok);

View File

@ -13,7 +13,7 @@ TEST_CASE("Invalid JSON input") {
"3}"}; "3}"};
const size_t testCount = sizeof(testCases) / sizeof(testCases[0]); const size_t testCount = sizeof(testCases) / sizeof(testCases[0]);
JsonDocument doc(4096); JsonDocument doc;
for (size_t i = 0; i < testCount; i++) { for (size_t i = 0; i < testCount; i++) {
const char* input = testCases[i]; const char* input = testCases[i];
@ -30,7 +30,7 @@ TEST_CASE("Invalid JSON input that should pass") {
}; };
const size_t testCount = sizeof(testCases) / sizeof(testCases[0]); const size_t testCount = sizeof(testCases) / sizeof(testCases[0]);
JsonDocument doc(4096); JsonDocument doc;
for (size_t i = 0; i < testCount; i++) { for (size_t i = 0; i < testCount; i++) {
const char* input = testCases[i]; const char* input = testCases[i];

View File

@ -10,7 +10,7 @@ using namespace Catch::Matchers;
using ArduinoJson::detail::sizeofObject; using ArduinoJson::detail::sizeofObject;
TEST_CASE("deserializeJson(JsonDocument&)") { TEST_CASE("deserializeJson(JsonDocument&)") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("Edge cases") { SECTION("Edge cases") {
SECTION("null char*") { SECTION("null char*") {

View File

@ -12,7 +12,7 @@
REQUIRE(DeserializationError::TooDeep == expression); REQUIRE(DeserializationError::TooDeep == expression);
TEST_CASE("JsonDeserializer nesting") { TEST_CASE("JsonDeserializer nesting") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("Input = const char*") { SECTION("Input = const char*") {
SECTION("limit = 0") { SECTION("limit = 0") {

View File

@ -16,7 +16,7 @@ using ArduinoJson::detail::isnan;
} // namespace my } // namespace my
TEST_CASE("deserialize an integer") { TEST_CASE("deserialize an integer") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("Integer") { SECTION("Integer") {
SECTION("0") { SECTION("0") {

View File

@ -7,12 +7,11 @@
#include "Allocators.hpp" #include "Allocators.hpp"
using ArduinoJson::detail::sizeofArray;
using ArduinoJson::detail::sizeofObject; using ArduinoJson::detail::sizeofObject;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("deserialize JSON object") { TEST_CASE("deserialize JSON object") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("An empty object") { SECTION("An empty object") {
DeserializationError err = deserializeJson(doc, "{}"); DeserializationError err = deserializeJson(doc, "{}");
@ -323,7 +322,7 @@ TEST_CASE("deserialize JSON object") {
TEST_CASE("deserialize JSON object under memory constraints") { TEST_CASE("deserialize JSON object under memory constraints") {
TimebombAllocator allocator(1024); TimebombAllocator allocator(1024);
JsonDocument doc(0, &allocator); JsonDocument doc(&allocator);
SECTION("empty object requires no allocation") { SECTION("empty object requires no allocation") {
allocator.setCountdown(0); allocator.setCountdown(0);

View File

@ -41,7 +41,7 @@ TEST_CASE("Valid JSON strings value") {
}; };
const size_t testCount = sizeof(testCases) / sizeof(testCases[0]); const size_t testCount = sizeof(testCases) / sizeof(testCases[0]);
JsonDocument doc(4096); JsonDocument doc;
for (size_t i = 0; i < testCount; i++) { for (size_t i = 0; i < testCount; i++) {
const TestCase& testCase = testCases[i]; const TestCase& testCase = testCases[i];
@ -53,7 +53,7 @@ TEST_CASE("Valid JSON strings value") {
} }
TEST_CASE("\\u0000") { TEST_CASE("\\u0000") {
JsonDocument doc(200); JsonDocument doc;
DeserializationError err = deserializeJson(doc, "\"wx\\u0000yz\""); DeserializationError err = deserializeJson(doc, "\"wx\\u0000yz\"");
REQUIRE(err == DeserializationError::Ok); REQUIRE(err == DeserializationError::Ok);
@ -74,7 +74,7 @@ TEST_CASE("Truncated JSON string") {
const char* testCases[] = {"\"hello", "\'hello", "'\\u", "'\\u00", "'\\u000"}; const char* testCases[] = {"\"hello", "\'hello", "'\\u", "'\\u00", "'\\u000"};
const size_t testCount = sizeof(testCases) / sizeof(testCases[0]); const size_t testCount = sizeof(testCases) / sizeof(testCases[0]);
JsonDocument doc(4096); JsonDocument doc;
for (size_t i = 0; i < testCount; i++) { for (size_t i = 0; i < testCount; i++) {
const char* input = testCases[i]; const char* input = testCases[i];
@ -89,7 +89,7 @@ TEST_CASE("Invalid JSON string") {
"'\\u000G'", "'\\u000/'", "'\\x1234'"}; "'\\u000G'", "'\\u000/'", "'\\x1234'"};
const size_t testCount = sizeof(testCases) / sizeof(testCases[0]); const size_t testCount = sizeof(testCases) / sizeof(testCases[0]);
JsonDocument doc(4096); JsonDocument doc;
for (size_t i = 0; i < testCount; i++) { for (size_t i = 0; i < testCount; i++) {
const char* input = testCases[i]; const char* input = testCases[i];
@ -101,7 +101,7 @@ TEST_CASE("Invalid JSON string") {
TEST_CASE("Allocation of the key fails") { TEST_CASE("Allocation of the key fails") {
TimebombAllocator timebombAllocator(0); TimebombAllocator timebombAllocator(0);
SpyingAllocator spyingAllocator(&timebombAllocator); SpyingAllocator spyingAllocator(&timebombAllocator);
JsonDocument doc(1024, &spyingAllocator); JsonDocument doc(&spyingAllocator);
SECTION("Quoted string, first member") { SECTION("Quoted string, first member") {
REQUIRE(deserializeJson(doc, "{\"example\":1}") == REQUIRE(deserializeJson(doc, "{\"example\":1}") ==
@ -146,7 +146,7 @@ TEST_CASE("Allocation of the key fails") {
TEST_CASE("String allocation fails") { TEST_CASE("String allocation fails") {
SpyingAllocator spyingAllocator(FailingAllocator::instance()); SpyingAllocator spyingAllocator(FailingAllocator::instance());
JsonDocument doc(0, &spyingAllocator); JsonDocument doc(&spyingAllocator);
SECTION("Input is const char*") { SECTION("Input is const char*") {
REQUIRE(deserializeJson(doc, "\"hello\"") == REQUIRE(deserializeJson(doc, "\"hello\"") ==
@ -157,7 +157,7 @@ TEST_CASE("String allocation fails") {
} }
TEST_CASE("Deduplicate values") { TEST_CASE("Deduplicate values") {
JsonDocument doc(1024); JsonDocument doc;
deserializeJson(doc, "[\"example\",\"example\"]"); deserializeJson(doc, "[\"example\",\"example\"]");
CHECK(doc.memoryUsage() == sizeofArray(2) + sizeofString(7)); CHECK(doc.memoryUsage() == sizeofArray(2) + sizeofString(7));
@ -165,7 +165,7 @@ TEST_CASE("Deduplicate values") {
} }
TEST_CASE("Deduplicate keys") { TEST_CASE("Deduplicate keys") {
JsonDocument doc(1024); JsonDocument doc;
deserializeJson(doc, "[{\"example\":1},{\"example\":2}]"); deserializeJson(doc, "[{\"example\":1},{\"example\":2}]");
CHECK(doc.memoryUsage() == CHECK(doc.memoryUsage() ==

View File

@ -9,7 +9,7 @@ typedef ArduinoJson::detail::ElementProxy<JsonDocument&> ElementProxy;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("ElementProxy::add()") { TEST_CASE("ElementProxy::add()") {
JsonDocument doc(4096); JsonDocument doc;
doc.add(); doc.add();
ElementProxy ep = doc[0]; ElementProxy ep = doc[0];
@ -35,7 +35,7 @@ TEST_CASE("ElementProxy::add()") {
} }
TEST_CASE("ElementProxy::clear()") { TEST_CASE("ElementProxy::clear()") {
JsonDocument doc(4096); JsonDocument doc;
doc.add(); doc.add();
ElementProxy ep = doc[0]; ElementProxy ep = doc[0];
@ -55,7 +55,7 @@ TEST_CASE("ElementProxy::clear()") {
} }
TEST_CASE("ElementProxy::operator==()") { TEST_CASE("ElementProxy::operator==()") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("1 vs 1") { SECTION("1 vs 1") {
doc.add(1); doc.add(1);
@ -95,7 +95,7 @@ TEST_CASE("ElementProxy::operator==()") {
} }
TEST_CASE("ElementProxy::remove()") { TEST_CASE("ElementProxy::remove()") {
JsonDocument doc(4096); JsonDocument doc;
doc.add(); doc.add();
ElementProxy ep = doc[0]; ElementProxy ep = doc[0];
@ -143,7 +143,7 @@ TEST_CASE("ElementProxy::remove()") {
} }
TEST_CASE("ElementProxy::set()") { TEST_CASE("ElementProxy::set()") {
JsonDocument doc(4096); JsonDocument doc;
ElementProxy ep = doc[0]; ElementProxy ep = doc[0];
SECTION("set(int)") { SECTION("set(int)") {
@ -168,7 +168,7 @@ TEST_CASE("ElementProxy::set()") {
} }
TEST_CASE("ElementProxy::size()") { TEST_CASE("ElementProxy::size()") {
JsonDocument doc(4096); JsonDocument doc;
doc.add(); doc.add();
ElementProxy ep = doc[0]; ElementProxy ep = doc[0];
@ -190,7 +190,7 @@ TEST_CASE("ElementProxy::size()") {
} }
TEST_CASE("ElementProxy::memoryUsage()") { TEST_CASE("ElementProxy::memoryUsage()") {
JsonDocument doc(4096); JsonDocument doc;
doc.add(); doc.add();
ElementProxy ep = doc[0]; ElementProxy ep = doc[0];
@ -205,7 +205,7 @@ TEST_CASE("ElementProxy::memoryUsage()") {
} }
TEST_CASE("ElementProxy::operator[]") { TEST_CASE("ElementProxy::operator[]") {
JsonDocument doc(4096); JsonDocument doc;
ElementProxy ep = doc[1]; ElementProxy ep = doc[1];
SECTION("set member") { SECTION("set member") {
@ -222,7 +222,7 @@ TEST_CASE("ElementProxy::operator[]") {
} }
TEST_CASE("ElementProxy cast to JsonVariantConst") { TEST_CASE("ElementProxy cast to JsonVariantConst") {
JsonDocument doc(4096); JsonDocument doc;
doc[0] = "world"; doc[0] = "world";
const ElementProxy ep = doc[0]; const ElementProxy ep = doc[0];
@ -233,7 +233,7 @@ TEST_CASE("ElementProxy cast to JsonVariantConst") {
} }
TEST_CASE("ElementProxy cast to JsonVariant") { TEST_CASE("ElementProxy cast to JsonVariant") {
JsonDocument doc(4096); JsonDocument doc;
doc[0] = "world"; doc[0] = "world";
ElementProxy ep = doc[0]; ElementProxy ep = doc[0];

View File

@ -18,7 +18,7 @@ typedef ArduinoJson::detail::MemberProxy<JsonDocument&, const char*>
MemberProxy; MemberProxy;
TEST_CASE("MemberProxy::add()") { TEST_CASE("MemberProxy::add()") {
JsonDocument doc(4096); JsonDocument doc;
MemberProxy mp = doc["hello"]; MemberProxy mp = doc["hello"];
SECTION("add(int)") { SECTION("add(int)") {
@ -35,7 +35,7 @@ TEST_CASE("MemberProxy::add()") {
} }
TEST_CASE("MemberProxy::clear()") { TEST_CASE("MemberProxy::clear()") {
JsonDocument doc(4096); JsonDocument doc;
MemberProxy mp = doc["hello"]; MemberProxy mp = doc["hello"];
SECTION("size goes back to zero") { SECTION("size goes back to zero") {
@ -54,7 +54,7 @@ TEST_CASE("MemberProxy::clear()") {
} }
TEST_CASE("MemberProxy::operator==()") { TEST_CASE("MemberProxy::operator==()") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("1 vs 1") { SECTION("1 vs 1") {
doc["a"] = 1; doc["a"] = 1;
@ -94,7 +94,7 @@ TEST_CASE("MemberProxy::operator==()") {
} }
TEST_CASE("MemberProxy::containsKey()") { TEST_CASE("MemberProxy::containsKey()") {
JsonDocument doc(4096); JsonDocument doc;
MemberProxy mp = doc["hello"]; MemberProxy mp = doc["hello"];
SECTION("containsKey(const char*)") { SECTION("containsKey(const char*)") {
@ -113,7 +113,7 @@ TEST_CASE("MemberProxy::containsKey()") {
} }
TEST_CASE("MemberProxy::operator|()") { TEST_CASE("MemberProxy::operator|()") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("const char*") { SECTION("const char*") {
doc["a"] = "hello"; doc["a"] = "hello";
@ -136,7 +136,7 @@ TEST_CASE("MemberProxy::operator|()") {
JsonObject object = doc.to<JsonObject>(); JsonObject object = doc.to<JsonObject>();
object["hello"] = "world"; object["hello"] = "world";
JsonDocument emptyDoc(0); JsonDocument emptyDoc;
JsonObject anotherObject = object["hello"] | emptyDoc.to<JsonObject>(); JsonObject anotherObject = object["hello"] | emptyDoc.to<JsonObject>();
REQUIRE(anotherObject.isNull() == false); REQUIRE(anotherObject.isNull() == false);
@ -145,7 +145,7 @@ TEST_CASE("MemberProxy::operator|()") {
} }
TEST_CASE("MemberProxy::remove()") { TEST_CASE("MemberProxy::remove()") {
JsonDocument doc(4096); JsonDocument doc;
MemberProxy mp = doc["hello"]; MemberProxy mp = doc["hello"];
SECTION("remove(int)") { SECTION("remove(int)") {
@ -192,7 +192,7 @@ TEST_CASE("MemberProxy::remove()") {
} }
TEST_CASE("MemberProxy::set()") { TEST_CASE("MemberProxy::set()") {
JsonDocument doc(4096); JsonDocument doc;
MemberProxy mp = doc["hello"]; MemberProxy mp = doc["hello"];
SECTION("set(int)") { SECTION("set(int)") {
@ -217,7 +217,7 @@ TEST_CASE("MemberProxy::set()") {
} }
TEST_CASE("MemberProxy::size()") { TEST_CASE("MemberProxy::size()") {
JsonDocument doc(4096); JsonDocument doc;
MemberProxy mp = doc["hello"]; MemberProxy mp = doc["hello"];
SECTION("returns 0") { SECTION("returns 0") {
@ -240,7 +240,7 @@ TEST_CASE("MemberProxy::size()") {
} }
TEST_CASE("MemberProxy::memoryUsage()") { TEST_CASE("MemberProxy::memoryUsage()") {
JsonDocument doc(4096); JsonDocument doc;
MemberProxy mp = doc["hello"]; MemberProxy mp = doc["hello"];
SECTION("returns 0 when null") { SECTION("returns 0 when null") {
@ -254,7 +254,7 @@ TEST_CASE("MemberProxy::memoryUsage()") {
} }
TEST_CASE("MemberProxy::operator[]") { TEST_CASE("MemberProxy::operator[]") {
JsonDocument doc(4096); JsonDocument doc;
MemberProxy mp = doc["hello"]; MemberProxy mp = doc["hello"];
SECTION("set member") { SECTION("set member") {
@ -271,7 +271,7 @@ TEST_CASE("MemberProxy::operator[]") {
} }
TEST_CASE("MemberProxy cast to JsonVariantConst") { TEST_CASE("MemberProxy cast to JsonVariantConst") {
JsonDocument doc(4096); JsonDocument doc;
doc["hello"] = "world"; doc["hello"] = "world";
const MemberProxy mp = doc["hello"]; const MemberProxy mp = doc["hello"];
@ -282,7 +282,7 @@ TEST_CASE("MemberProxy cast to JsonVariantConst") {
} }
TEST_CASE("MemberProxy cast to JsonVariant") { TEST_CASE("MemberProxy cast to JsonVariant") {
JsonDocument doc(4096); JsonDocument doc;
doc["hello"] = "world"; doc["hello"] = "world";
MemberProxy mp = doc["hello"]; MemberProxy mp = doc["hello"];
@ -297,7 +297,7 @@ TEST_CASE("MemberProxy cast to JsonVariant") {
} }
TEST_CASE("MemberProxy::createNestedArray()") { TEST_CASE("MemberProxy::createNestedArray()") {
JsonDocument doc(1024); JsonDocument doc;
JsonArray arr = doc["items"].createNestedArray(); JsonArray arr = doc["items"].createNestedArray();
arr.add(42); arr.add(42);
@ -305,7 +305,7 @@ TEST_CASE("MemberProxy::createNestedArray()") {
} }
TEST_CASE("MemberProxy::createNestedArray(key)") { TEST_CASE("MemberProxy::createNestedArray(key)") {
JsonDocument doc(1024); JsonDocument doc;
JsonArray arr = doc["weather"].createNestedArray("temp"); JsonArray arr = doc["weather"].createNestedArray("temp");
arr.add(42); arr.add(42);
@ -313,7 +313,7 @@ TEST_CASE("MemberProxy::createNestedArray(key)") {
} }
TEST_CASE("MemberProxy::createNestedObject()") { TEST_CASE("MemberProxy::createNestedObject()") {
JsonDocument doc(1024); JsonDocument doc;
JsonObject obj = doc["items"].createNestedObject(); JsonObject obj = doc["items"].createNestedObject();
obj["value"] = 42; obj["value"] = 42;
@ -321,7 +321,7 @@ TEST_CASE("MemberProxy::createNestedObject()") {
} }
TEST_CASE("MemberProxy::createNestedObject(key)") { TEST_CASE("MemberProxy::createNestedObject(key)") {
JsonDocument doc(1024); JsonDocument doc;
JsonObject obj = doc["status"].createNestedObject("weather"); JsonObject obj = doc["status"].createNestedObject("weather");
obj["temp"] = 42; obj["temp"] = 42;
@ -329,7 +329,7 @@ TEST_CASE("MemberProxy::createNestedObject(key)") {
} }
TEST_CASE("Deduplicate keys") { TEST_CASE("Deduplicate keys") {
JsonDocument doc(1024); JsonDocument doc;
SECTION("std::string") { SECTION("std::string") {
doc[0][std::string("example")] = 1; doc[0][std::string("example")] = 1;
@ -383,7 +383,7 @@ TEST_CASE("Deduplicate keys") {
TEST_CASE("MemberProxy under memory constraints") { TEST_CASE("MemberProxy under memory constraints") {
ControllableAllocator allocator; ControllableAllocator allocator;
JsonDocument doc(4096, &allocator); JsonDocument doc(&allocator);
SECTION("key allocation fails") { SECTION("key allocation fails") {
allocator.disable(); allocator.disable();

View File

@ -12,7 +12,7 @@ using ArduinoJson::detail::sizeofArray;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("JsonDocument::add()") { TEST_CASE("JsonDocument::add()") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("integer") { SECTION("integer") {
doc.add(42); doc.add(42);

View File

@ -7,17 +7,15 @@
#include "Allocators.hpp" #include "Allocators.hpp"
using ArduinoJson::detail::sizeofArray;
using ArduinoJson::detail::sizeofObject;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("JsonDocument assignment") { TEST_CASE("JsonDocument assignment") {
SpyingAllocator spyingAllocator; SpyingAllocator spyingAllocator;
SECTION("Copy assignment same capacity") { SECTION("Copy assignment same capacity") {
JsonDocument doc1(1024, &spyingAllocator); JsonDocument doc1(&spyingAllocator);
deserializeJson(doc1, "{\"hello\":\"world\"}"); deserializeJson(doc1, "{\"hello\":\"world\"}");
JsonDocument doc2(1024, &spyingAllocator); JsonDocument doc2(&spyingAllocator);
spyingAllocator.clearLog(); spyingAllocator.clearLog();
doc2 = doc1; doc2 = doc1;
@ -33,10 +31,9 @@ TEST_CASE("JsonDocument assignment") {
} }
SECTION("Copy assignment reallocates when capacity is smaller") { SECTION("Copy assignment reallocates when capacity is smaller") {
const size_t capacity = 100 * sizeof(ArduinoJson::detail::VariantSlot); JsonDocument doc1(&spyingAllocator);
JsonDocument doc1(capacity, &spyingAllocator);
deserializeJson(doc1, "[{\"hello\":\"world\"}]"); deserializeJson(doc1, "[{\"hello\":\"world\"}]");
JsonDocument doc2(sizeofArray(1), &spyingAllocator); JsonDocument doc2(&spyingAllocator);
spyingAllocator.clearLog(); spyingAllocator.clearLog();
doc2 = doc1; doc2 = doc1;
@ -51,10 +48,9 @@ TEST_CASE("JsonDocument assignment") {
} }
SECTION("Copy assignment reallocates when capacity is larger") { SECTION("Copy assignment reallocates when capacity is larger") {
const size_t capacity1 = 100 * sizeof(ArduinoJson::detail::VariantSlot); JsonDocument doc1(&spyingAllocator);
JsonDocument doc1(capacity1, &spyingAllocator);
deserializeJson(doc1, "{\"hello\":\"world\"}"); deserializeJson(doc1, "{\"hello\":\"world\"}");
JsonDocument doc2(4096, &spyingAllocator); JsonDocument doc2(&spyingAllocator);
spyingAllocator.clearLog(); spyingAllocator.clearLog();
doc2 = doc1; doc2 = doc1;
@ -70,9 +66,9 @@ TEST_CASE("JsonDocument assignment") {
SECTION("Move assign") { SECTION("Move assign") {
{ {
JsonDocument doc1(4096, &spyingAllocator); JsonDocument doc1(&spyingAllocator);
doc1[std::string("hello")] = std::string("world"); doc1[std::string("hello")] = std::string("world");
JsonDocument doc2(128, &spyingAllocator); JsonDocument doc2(&spyingAllocator);
doc2 = std::move(doc1); doc2 = std::move(doc1);
@ -92,52 +88,52 @@ TEST_CASE("JsonDocument assignment") {
} }
SECTION("Assign from JsonObject") { SECTION("Assign from JsonObject") {
JsonDocument doc1(200); JsonDocument doc1;
JsonObject obj = doc1.to<JsonObject>(); JsonObject obj = doc1.to<JsonObject>();
obj["hello"] = "world"; obj["hello"] = "world";
JsonDocument doc2(4096); JsonDocument doc2;
doc2 = obj; doc2 = obj;
REQUIRE(doc2.as<std::string>() == "{\"hello\":\"world\"}"); REQUIRE(doc2.as<std::string>() == "{\"hello\":\"world\"}");
} }
SECTION("Assign from JsonArray") { SECTION("Assign from JsonArray") {
JsonDocument doc1(200); JsonDocument doc1;
JsonArray arr = doc1.to<JsonArray>(); JsonArray arr = doc1.to<JsonArray>();
arr.add("hello"); arr.add("hello");
JsonDocument doc2(4096); JsonDocument doc2;
doc2 = arr; doc2 = arr;
REQUIRE(doc2.as<std::string>() == "[\"hello\"]"); REQUIRE(doc2.as<std::string>() == "[\"hello\"]");
} }
SECTION("Assign from JsonVariant") { SECTION("Assign from JsonVariant") {
JsonDocument doc1(200); JsonDocument doc1;
deserializeJson(doc1, "42"); deserializeJson(doc1, "42");
JsonDocument doc2(4096); JsonDocument doc2;
doc2 = doc1.as<JsonVariant>(); doc2 = doc1.as<JsonVariant>();
REQUIRE(doc2.as<std::string>() == "42"); REQUIRE(doc2.as<std::string>() == "42");
} }
SECTION("Assign from MemberProxy") { SECTION("Assign from MemberProxy") {
JsonDocument doc1(200); JsonDocument doc1;
doc1["value"] = 42; doc1["value"] = 42;
JsonDocument doc2(4096); JsonDocument doc2;
doc2 = doc1["value"]; doc2 = doc1["value"];
REQUIRE(doc2.as<std::string>() == "42"); REQUIRE(doc2.as<std::string>() == "42");
} }
SECTION("Assign from ElementProxy") { SECTION("Assign from ElementProxy") {
JsonDocument doc1(200); JsonDocument doc1;
doc1[0] = 42; doc1[0] = 42;
JsonDocument doc2(4096); JsonDocument doc2;
doc2 = doc1[0]; doc2 = doc1[0];
REQUIRE(doc2.as<std::string>() == "42"); REQUIRE(doc2.as<std::string>() == "42");

View File

@ -8,7 +8,7 @@
#include <string> #include <string>
TEST_CASE("Implicit cast to JsonVariant") { TEST_CASE("Implicit cast to JsonVariant") {
JsonDocument doc(128); JsonDocument doc;
doc["hello"] = "world"; doc["hello"] = "world";

View File

@ -6,8 +6,8 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonDocument::operator==(const JsonDocument&)") { TEST_CASE("JsonDocument::operator==(const JsonDocument&)") {
JsonDocument doc1(4096); JsonDocument doc1;
JsonDocument doc2(4096); JsonDocument doc2;
SECTION("Empty") { SECTION("Empty") {
REQUIRE(doc1 == doc2); REQUIRE(doc1 == doc2);

View File

@ -8,21 +8,19 @@
#include "Allocators.hpp" #include "Allocators.hpp"
using ArduinoJson::detail::addPadding; using ArduinoJson::detail::addPadding;
using ArduinoJson::detail::sizeofObject;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("JsonDocument constructor") { TEST_CASE("JsonDocument constructor") {
SpyingAllocator spyingAllocator; SpyingAllocator spyingAllocator;
SECTION("JsonDocument(size_t)") { SECTION("JsonDocument(size_t)") {
{ JsonDocument doc(4096, &spyingAllocator); } { JsonDocument doc(&spyingAllocator); }
REQUIRE(spyingAllocator.log() == AllocatorLog()); REQUIRE(spyingAllocator.log() == AllocatorLog());
} }
SECTION("JsonDocument(const JsonDocument&)") { SECTION("JsonDocument(const JsonDocument&)") {
const size_t capacity = 100 * sizeof(ArduinoJson::detail::VariantSlot);
{ {
JsonDocument doc1(capacity, &spyingAllocator); JsonDocument doc1(&spyingAllocator);
doc1.set(std::string("The size of this string is 32!!")); doc1.set(std::string("The size of this string is 32!!"));
JsonDocument doc2(doc1); JsonDocument doc2(doc1);
@ -39,7 +37,7 @@ TEST_CASE("JsonDocument constructor") {
SECTION("JsonDocument(JsonDocument&&)") { SECTION("JsonDocument(JsonDocument&&)") {
{ {
JsonDocument doc1(4096, &spyingAllocator); JsonDocument doc1(&spyingAllocator);
doc1.set(std::string("The size of this string is 32!!")); doc1.set(std::string("The size of this string is 32!!"));
JsonDocument doc2(std::move(doc1)); JsonDocument doc2(std::move(doc1));
@ -53,7 +51,7 @@ TEST_CASE("JsonDocument constructor") {
} }
SECTION("JsonDocument(JsonObject)") { SECTION("JsonDocument(JsonObject)") {
JsonDocument doc1(200); JsonDocument doc1;
JsonObject obj = doc1.to<JsonObject>(); JsonObject obj = doc1.to<JsonObject>();
obj["hello"] = "world"; obj["hello"] = "world";
@ -66,7 +64,7 @@ TEST_CASE("JsonDocument constructor") {
} }
SECTION("Construct from JsonArray") { SECTION("Construct from JsonArray") {
JsonDocument doc1(200); JsonDocument doc1;
JsonArray arr = doc1.to<JsonArray>(); JsonArray arr = doc1.to<JsonArray>();
arr.add("hello"); arr.add("hello");
@ -79,7 +77,7 @@ TEST_CASE("JsonDocument constructor") {
} }
SECTION("Construct from JsonVariant") { SECTION("Construct from JsonVariant") {
JsonDocument doc1(200); JsonDocument doc1;
deserializeJson(doc1, "\"hello\""); deserializeJson(doc1, "\"hello\"");
JsonDocument doc2(doc1.as<JsonVariant>(), &spyingAllocator); JsonDocument doc2(doc1.as<JsonVariant>(), &spyingAllocator);

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonDocument::containsKey()") { TEST_CASE("JsonDocument::containsKey()") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("returns true on object") { SECTION("returns true on object") {
doc["hello"] = "world"; doc["hello"] = "world";

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonDocument::createNestedArray()") { TEST_CASE("JsonDocument::createNestedArray()") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("promotes to array") { SECTION("promotes to array") {
doc.createNestedArray(); doc.createNestedArray();
@ -16,7 +16,7 @@ TEST_CASE("JsonDocument::createNestedArray()") {
} }
TEST_CASE("JsonDocument::createNestedArray(key)") { TEST_CASE("JsonDocument::createNestedArray(key)") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("key is const char*") { SECTION("key is const char*") {
SECTION("promotes to object") { SECTION("promotes to object") {
@ -36,7 +36,7 @@ TEST_CASE("JsonDocument::createNestedArray(key)") {
} }
TEST_CASE("JsonDocument::createNestedObject()") { TEST_CASE("JsonDocument::createNestedObject()") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("promotes to array") { SECTION("promotes to array") {
doc.createNestedObject(); doc.createNestedObject();
@ -46,7 +46,7 @@ TEST_CASE("JsonDocument::createNestedObject()") {
} }
TEST_CASE("JsonDocument::createNestedObject(key)") { TEST_CASE("JsonDocument::createNestedObject(key)") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("key is const char*") { SECTION("key is const char*") {
SECTION("promotes to object") { SECTION("promotes to object") {

View File

@ -13,10 +13,9 @@ using ArduinoJson::detail::sizeofObject;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("JsonDocument::garbageCollect()") { TEST_CASE("JsonDocument::garbageCollect()") {
const size_t capacity = 100 * sizeof(ArduinoJson::detail::VariantSlot);
ControllableAllocator controllableAllocator; ControllableAllocator controllableAllocator;
SpyingAllocator spyingAllocator(&controllableAllocator); SpyingAllocator spyingAllocator(&controllableAllocator);
JsonDocument doc(capacity, &spyingAllocator); JsonDocument doc(&spyingAllocator);
SECTION("when allocation succeeds") { SECTION("when allocation succeeds") {
deserializeJson(doc, "{\"blanket\":1,\"dancing\":2}"); deserializeJson(doc, "{\"blanket\":1,\"dancing\":2}");

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonDocument::isNull()") { TEST_CASE("JsonDocument::isNull()") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("returns true if uninitialized") { SECTION("returns true if uninitialized") {
REQUIRE(doc.isNull() == true); REQUIRE(doc.isNull() == true);

View File

@ -3,7 +3,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("Issue #1120") { TEST_CASE("Issue #1120") {
JsonDocument doc(500); JsonDocument doc;
constexpr char str[] = constexpr char str[] =
"{\"contents\":[{\"module\":\"Packet\"},{\"module\":\"Analog\"}]}"; "{\"contents\":[{\"module\":\"Packet\"},{\"module\":\"Analog\"}]}";
deserializeJson(doc, str); deserializeJson(doc, str);

View File

@ -9,7 +9,7 @@ using ArduinoJson::detail::sizeofArray;
using ArduinoJson::detail::sizeofObject; using ArduinoJson::detail::sizeofObject;
TEST_CASE("JsonDocument::memoryUsage()") { TEST_CASE("JsonDocument::memoryUsage()") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("starts at zero") { SECTION("starts at zero") {
REQUIRE(doc.memoryUsage() == 0); REQUIRE(doc.memoryUsage() == 0);

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonDocument::nesting()") { TEST_CASE("JsonDocument::nesting()") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("return 0 if uninitialized") { SECTION("return 0 if uninitialized") {
REQUIRE(doc.nesting() == 0); REQUIRE(doc.nesting() == 0);

View File

@ -7,11 +7,9 @@
#include "Allocators.hpp" #include "Allocators.hpp"
using ArduinoJson::detail::sizeofArray;
TEST_CASE("JsonDocument::overflowed()") { TEST_CASE("JsonDocument::overflowed()") {
TimebombAllocator allocator(10); TimebombAllocator allocator(10);
JsonDocument doc(0, &allocator); JsonDocument doc(&allocator);
SECTION("returns false on a fresh object") { SECTION("returns false on a fresh object") {
allocator.setCountdown(0); allocator.setCountdown(0);

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonDocument::remove()") { TEST_CASE("JsonDocument::remove()") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("remove(int)") { SECTION("remove(int)") {
doc.add(1); doc.add(1);

View File

@ -42,7 +42,7 @@ class ArmoredAllocator : public Allocator {
TEST_CASE("JsonDocument::shrinkToFit()") { TEST_CASE("JsonDocument::shrinkToFit()") {
ArmoredAllocator armoredAllocator; ArmoredAllocator armoredAllocator;
SpyingAllocator spyingAllocator(&armoredAllocator); SpyingAllocator spyingAllocator(&armoredAllocator);
JsonDocument doc(4096, &spyingAllocator); JsonDocument doc(&spyingAllocator);
SECTION("null") { SECTION("null") {
doc.shrinkToFit(); doc.shrinkToFit();

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonDocument::size()") { TEST_CASE("JsonDocument::size()") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("returns 0") { SECTION("returns 0") {
REQUIRE(doc.size() == 0); REQUIRE(doc.size() == 0);

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonDocument::operator[]") { TEST_CASE("JsonDocument::operator[]") {
JsonDocument doc(4096); JsonDocument doc;
const JsonDocument& cdoc = doc; const JsonDocument& cdoc = doc;
SECTION("object") { SECTION("object") {
@ -37,7 +37,7 @@ TEST_CASE("JsonDocument::operator[]") {
} }
TEST_CASE("JsonDocument automatically promotes to object") { TEST_CASE("JsonDocument automatically promotes to object") {
JsonDocument doc(4096); JsonDocument doc;
doc["one"]["two"]["three"] = 4; doc["one"]["two"]["three"] = 4;
@ -45,7 +45,7 @@ TEST_CASE("JsonDocument automatically promotes to object") {
} }
TEST_CASE("JsonDocument automatically promotes to array") { TEST_CASE("JsonDocument automatically promotes to array") {
JsonDocument doc(4096); JsonDocument doc;
doc[2] = 2; doc[2] = 2;

View File

@ -13,7 +13,7 @@ TEST_CASE("std::swap") {
} }
SECTION("JsonDocument") { SECTION("JsonDocument") {
JsonDocument doc1(0x10), doc2(0x20); JsonDocument doc1, doc2;
doc1.set("hello"); doc1.set("hello");
doc2.set("world"); doc2.set("world");

View File

@ -14,7 +14,7 @@ TEST_CASE("JsonObject::clear()") {
} }
SECTION("Removes all elements") { SECTION("Removes all elements") {
JsonDocument doc(64); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
obj["hello"] = 1; obj["hello"] = 1;
obj["world"] = 2; obj["world"] = 2;

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("Compare JsonObject with JsonObject") { TEST_CASE("Compare JsonObject with JsonObject") {
JsonDocument doc(512); JsonDocument doc;
SECTION("Compare with unbound") { SECTION("Compare with unbound") {
JsonObject object = doc.to<JsonObject>(); JsonObject object = doc.to<JsonObject>();
@ -82,7 +82,7 @@ TEST_CASE("Compare JsonObject with JsonObject") {
} }
TEST_CASE("Compare JsonObject with JsonVariant") { TEST_CASE("Compare JsonObject with JsonVariant") {
JsonDocument doc(512); JsonDocument doc;
SECTION("Compare with self") { SECTION("Compare with self") {
JsonObject object = doc.to<JsonObject>(); JsonObject object = doc.to<JsonObject>();
@ -153,7 +153,7 @@ TEST_CASE("Compare JsonObject with JsonVariant") {
} }
TEST_CASE("Compare JsonObject with JsonVariantConst") { TEST_CASE("Compare JsonObject with JsonVariantConst") {
JsonDocument doc(512); JsonDocument doc;
SECTION("Compare with unbound") { SECTION("Compare with unbound") {
JsonObject object = doc.to<JsonObject>(); JsonObject object = doc.to<JsonObject>();
@ -247,7 +247,7 @@ TEST_CASE("Compare JsonObject with JsonVariantConst") {
} }
TEST_CASE("Compare JsonObject with JsonObjectConst") { TEST_CASE("Compare JsonObject with JsonObjectConst") {
JsonDocument doc(512); JsonDocument doc;
SECTION("Compare with unbound") { SECTION("Compare with unbound") {
JsonObject object = doc.to<JsonObject>(); JsonObject object = doc.to<JsonObject>();
@ -347,7 +347,7 @@ TEST_CASE("Compare JsonObject with JsonObjectConst") {
} }
TEST_CASE("Compare JsonObjectConst with JsonObjectConst") { TEST_CASE("Compare JsonObjectConst with JsonObjectConst") {
JsonDocument doc(512); JsonDocument doc;
SECTION("Compare with unbound") { SECTION("Compare with unbound") {
JsonObject object = doc.to<JsonObject>(); JsonObject object = doc.to<JsonObject>();
@ -430,7 +430,7 @@ TEST_CASE("Compare JsonObjectConst with JsonObjectConst") {
} }
TEST_CASE("Compare JsonObjectConst with JsonVariant") { TEST_CASE("Compare JsonObjectConst with JsonVariant") {
JsonDocument doc(512); JsonDocument doc;
SECTION("Compare with self") { SECTION("Compare with self") {
JsonObject object = doc.to<JsonObject>(); JsonObject object = doc.to<JsonObject>();

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonObject::containsKey()") { TEST_CASE("JsonObject::containsKey()") {
JsonDocument doc(4096); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
obj["hello"] = 42; obj["hello"] = 42;

View File

@ -7,11 +7,9 @@
#include "Allocators.hpp" #include "Allocators.hpp"
using ArduinoJson::detail::sizeofObject;
TEST_CASE("JsonObject::set()") { TEST_CASE("JsonObject::set()") {
JsonDocument doc1(4096); JsonDocument doc1;
JsonDocument doc2(4096); JsonDocument doc2;
JsonObject obj1 = doc1.to<JsonObject>(); JsonObject obj1 = doc1.to<JsonObject>();
JsonObject obj2 = doc2.to<JsonObject>(); JsonObject obj2 = doc2.to<JsonObject>();
@ -77,7 +75,7 @@ TEST_CASE("JsonObject::set()") {
SECTION("copy fails in the middle of an object") { SECTION("copy fails in the middle of an object") {
TimebombAllocator allocator(3); TimebombAllocator allocator(3);
JsonDocument doc3(0, &allocator); JsonDocument doc3(&allocator);
JsonObject obj3 = doc3.to<JsonObject>(); JsonObject obj3 = doc3.to<JsonObject>();
obj1[std::string("a")] = 1; obj1[std::string("a")] = 1;
@ -91,7 +89,7 @@ TEST_CASE("JsonObject::set()") {
SECTION("copy fails in the middle of an array") { SECTION("copy fails in the middle of an array") {
TimebombAllocator allocator(2); TimebombAllocator allocator(2);
JsonDocument doc3(0, &allocator); JsonDocument doc3(&allocator);
JsonObject obj3 = doc3.to<JsonObject>(); JsonObject obj3 = doc3.to<JsonObject>();
obj1["hello"][0] = std::string("world"); obj1["hello"][0] = std::string("world");

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonObject::createNestedArray()") { TEST_CASE("JsonObject::createNestedArray()") {
JsonDocument doc(4096); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
SECTION("key is a const char*") { SECTION("key is a const char*") {

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonObject::createNestedObject()") { TEST_CASE("JsonObject::createNestedObject()") {
JsonDocument doc(4096); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
SECTION("key is a const char*") { SECTION("key is a const char*") {

View File

@ -6,11 +6,11 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonObject::operator==()") { TEST_CASE("JsonObject::operator==()") {
JsonDocument doc1(4096); JsonDocument doc1;
JsonObject obj1 = doc1.to<JsonObject>(); JsonObject obj1 = doc1.to<JsonObject>();
JsonObjectConst obj1c = obj1; JsonObjectConst obj1c = obj1;
JsonDocument doc2(4096); JsonDocument doc2;
JsonObject obj2 = doc2.to<JsonObject>(); JsonObject obj2 = doc2.to<JsonObject>();
JsonObjectConst obj2c = obj2; JsonObjectConst obj2c = obj2;

View File

@ -12,7 +12,7 @@ TEST_CASE("JsonObject::isNull()") {
} }
SECTION("returns false") { SECTION("returns false") {
JsonDocument doc(4096); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
REQUIRE(obj.isNull() == false); REQUIRE(obj.isNull() == false);
} }
@ -25,7 +25,7 @@ TEST_CASE("JsonObjectConst::isNull()") {
} }
SECTION("returns false") { SECTION("returns false") {
JsonDocument doc(4096); JsonDocument doc;
JsonObjectConst obj = doc.to<JsonObject>(); JsonObjectConst obj = doc.to<JsonObject>();
REQUIRE(obj.isNull() == false); REQUIRE(obj.isNull() == false);
} }
@ -38,7 +38,7 @@ TEST_CASE("JsonObject::operator bool()") {
} }
SECTION("returns true") { SECTION("returns true") {
JsonDocument doc(4096); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
REQUIRE(static_cast<bool>(obj) == true); REQUIRE(static_cast<bool>(obj) == true);
} }
@ -51,7 +51,7 @@ TEST_CASE("JsonObjectConst::operator bool()") {
} }
SECTION("returns true") { SECTION("returns true") {
JsonDocument doc(4096); JsonDocument doc;
JsonObjectConst obj = doc.to<JsonObject>(); JsonObjectConst obj = doc.to<JsonObject>();
REQUIRE(static_cast<bool>(obj) == true); REQUIRE(static_cast<bool>(obj) == true);
} }

View File

@ -6,10 +6,9 @@
#include <catch.hpp> #include <catch.hpp>
using namespace Catch::Matchers; using namespace Catch::Matchers;
using ArduinoJson::detail::sizeofObject;
TEST_CASE("JsonObject::begin()/end()") { TEST_CASE("JsonObject::begin()/end()") {
JsonDocument doc(sizeofObject(2)); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
obj["ab"] = 12; obj["ab"] = 12;
obj["cd"] = 34; obj["cd"] = 34;
@ -39,7 +38,7 @@ TEST_CASE("JsonObject::begin()/end()") {
} }
TEST_CASE("JsonObjectConst::begin()/end()") { TEST_CASE("JsonObjectConst::begin()/end()") {
JsonDocument doc(sizeofObject(2)); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
obj["ab"] = 12; obj["ab"] = 12;
obj["cd"] = 34; obj["cd"] = 34;

View File

@ -11,7 +11,7 @@ using ArduinoJson::detail::sizeofObject;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("JsonObject::memoryUsage()") { TEST_CASE("JsonObject::memoryUsage()") {
JsonDocument doc(4096); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
SECTION("return 0 if uninitialized") { SECTION("return 0 if uninitialized") {

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
TEST_CASE("JsonObject::nesting()") { TEST_CASE("JsonObject::nesting()") {
JsonDocument doc(4096); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
SECTION("return 0 if uninitialized") { SECTION("return 0 if uninitialized") {

View File

@ -7,7 +7,7 @@
#include <string> #include <string>
TEST_CASE("JsonObject::remove()") { TEST_CASE("JsonObject::remove()") {
JsonDocument doc(4096); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
obj["a"] = 0; obj["a"] = 0;
obj["b"] = 1; obj["b"] = 1;

View File

@ -7,7 +7,7 @@
#include <string> #include <string>
TEST_CASE("JsonObject::size()") { TEST_CASE("JsonObject::size()") {
JsonDocument doc(4096); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
SECTION("initial size is zero") { SECTION("initial size is zero") {

View File

@ -12,7 +12,7 @@ static void eraseString(std::string& str) {
} }
TEST_CASE("std::string") { TEST_CASE("std::string") {
JsonDocument doc(4096); JsonDocument doc;
SECTION("operator[]") { SECTION("operator[]") {
char json[] = "{\"key\":\"value\"}"; char json[] = "{\"key\":\"value\"}";

View File

@ -9,7 +9,7 @@ using ArduinoJson::detail::sizeofObject;
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("JsonObject::operator[]") { TEST_CASE("JsonObject::operator[]") {
JsonDocument doc(4096); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
SECTION("int") { SECTION("int") {
@ -54,7 +54,7 @@ TEST_CASE("JsonObject::operator[]") {
} }
SECTION("array") { SECTION("array") {
JsonDocument doc2(4096); JsonDocument doc2;
JsonArray arr = doc2.to<JsonArray>(); JsonArray arr = doc2.to<JsonArray>();
obj["hello"] = arr; obj["hello"] = arr;
@ -65,7 +65,7 @@ TEST_CASE("JsonObject::operator[]") {
} }
SECTION("object") { SECTION("object") {
JsonDocument doc2(4096); JsonDocument doc2;
JsonObject obj2 = doc2.to<JsonObject>(); JsonObject obj2 = doc2.to<JsonObject>();
obj["hello"] = obj2; obj["hello"] = obj2;
@ -76,7 +76,7 @@ TEST_CASE("JsonObject::operator[]") {
} }
SECTION("array subscript") { SECTION("array subscript") {
JsonDocument doc2(4096); JsonDocument doc2;
JsonArray arr = doc2.to<JsonArray>(); JsonArray arr = doc2.to<JsonArray>();
arr.add(42); arr.add(42);
@ -86,7 +86,7 @@ TEST_CASE("JsonObject::operator[]") {
} }
SECTION("object subscript") { SECTION("object subscript") {
JsonDocument doc2(4096); JsonDocument doc2;
JsonObject obj2 = doc2.to<JsonObject>(); JsonObject obj2 = doc2.to<JsonObject>();
obj2["x"] = 42; obj2["x"] = 42;

View File

@ -30,7 +30,7 @@ class CustomWriter {
}; };
TEST_CASE("CustomWriter") { TEST_CASE("CustomWriter") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
array.add(4); array.add(4);
array.add(2); array.add(2);

View File

@ -5,8 +5,6 @@
#include <ArduinoJson.h> #include <ArduinoJson.h>
#include <catch.hpp> #include <catch.hpp>
using ArduinoJson::detail::sizeofArray;
static void check(JsonArray array, std::string expected) { static void check(JsonArray array, std::string expected) {
std::string actual; std::string actual;
size_t actualLen = serializeJson(array, actual); size_t actualLen = serializeJson(array, actual);
@ -17,7 +15,7 @@ static void check(JsonArray array, std::string expected) {
} }
TEST_CASE("serializeJson(JsonArray)") { TEST_CASE("serializeJson(JsonArray)") {
JsonDocument doc(sizeofArray(2)); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
SECTION("Empty") { SECTION("Empty") {

View File

@ -15,7 +15,7 @@ static void checkArray(JsonArray array, std::string expected) {
} }
TEST_CASE("serializeJsonPretty(JsonArray)") { TEST_CASE("serializeJsonPretty(JsonArray)") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
SECTION("Empty") { SECTION("Empty") {

View File

@ -20,7 +20,7 @@ static void checkObject(const JsonObject obj, const std::string& expected) {
} }
TEST_CASE("serializeJson(JsonObject)") { TEST_CASE("serializeJson(JsonObject)") {
JsonDocument doc(4096); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
SECTION("EmptyObject") { SECTION("EmptyObject") {
@ -96,8 +96,8 @@ TEST_CASE("serializeJson(JsonObject)") {
} }
SECTION("ThreeNestedArrays") { SECTION("ThreeNestedArrays") {
JsonDocument b(4096); JsonDocument b;
JsonDocument c(4096); JsonDocument c;
obj.createNestedArray("a"); obj.createNestedArray("a");
obj["b"] = b.to<JsonArray>(); obj["b"] = b.to<JsonArray>();
@ -107,8 +107,8 @@ TEST_CASE("serializeJson(JsonObject)") {
} }
SECTION("ThreeNestedObjects") { SECTION("ThreeNestedObjects") {
JsonDocument b(4096); JsonDocument b;
JsonDocument c(4096); JsonDocument c;
obj.createNestedObject("a"); obj.createNestedObject("a");
obj["b"] = b.to<JsonObject>(); obj["b"] = b.to<JsonObject>();

View File

@ -19,7 +19,7 @@ static void checkObjectPretty(const JsonObject obj,
} }
TEST_CASE("serializeJsonPretty(JsonObject)") { TEST_CASE("serializeJsonPretty(JsonObject)") {
JsonDocument doc(4096); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
SECTION("EmptyObject") { SECTION("EmptyObject") {

View File

@ -8,7 +8,7 @@
template <typename T> template <typename T>
void check(T value, const std::string& expected) { void check(T value, const std::string& expected) {
JsonDocument doc(4096); JsonDocument doc;
doc.to<JsonVariant>().set(value); doc.to<JsonVariant>().set(value);
char buffer[256] = ""; char buffer[256] = "";
size_t returnValue = serializeJson(doc, buffer, sizeof(buffer)); size_t returnValue = serializeJson(doc, buffer, sizeof(buffer));

View File

@ -3,7 +3,7 @@
#include <limits> #include <limits>
TEST_CASE("serializeJson(MemberProxy)") { TEST_CASE("serializeJson(MemberProxy)") {
JsonDocument doc(4096); JsonDocument doc;
deserializeJson(doc, "{\"hello\":42}"); deserializeJson(doc, "{\"hello\":42}");
JsonObject obj = doc.as<JsonObject>(); JsonObject obj = doc.as<JsonObject>();
std::string result; std::string result;
@ -14,7 +14,7 @@ TEST_CASE("serializeJson(MemberProxy)") {
} }
TEST_CASE("serializeJson(ElementProxy)") { TEST_CASE("serializeJson(ElementProxy)") {
JsonDocument doc(4096); JsonDocument doc;
deserializeJson(doc, "[42]"); deserializeJson(doc, "[42]");
JsonArray arr = doc.as<JsonArray>(); JsonArray arr = doc.as<JsonArray>();
std::string result; std::string result;
@ -25,7 +25,7 @@ TEST_CASE("serializeJson(ElementProxy)") {
} }
TEST_CASE("serializeJson(JsonVariantSubscript)") { TEST_CASE("serializeJson(JsonVariantSubscript)") {
JsonDocument doc(4096); JsonDocument doc;
deserializeJson(doc, "[42]"); deserializeJson(doc, "[42]");
JsonVariant var = doc.as<JsonVariant>(); JsonVariant var = doc.as<JsonVariant>();
std::string result; std::string result;

View File

@ -7,7 +7,7 @@
#include <sstream> #include <sstream>
TEST_CASE("operator<<(std::ostream)") { TEST_CASE("operator<<(std::ostream)") {
JsonDocument doc(4096); JsonDocument doc;
std::ostringstream os; std::ostringstream os;
SECTION("JsonVariant containing false") { SECTION("JsonVariant containing false") {

View File

@ -8,7 +8,7 @@
using ArduinoJson::detail::sizeofString; using ArduinoJson::detail::sizeofString;
TEST_CASE("serialize JsonArray to std::string") { TEST_CASE("serialize JsonArray to std::string") {
JsonDocument doc(4096); JsonDocument doc;
JsonArray array = doc.to<JsonArray>(); JsonArray array = doc.to<JsonArray>();
array.add(4); array.add(4);
array.add(2); array.add(2);
@ -29,7 +29,7 @@ TEST_CASE("serialize JsonArray to std::string") {
} }
TEST_CASE("serialize JsonObject to std::string") { TEST_CASE("serialize JsonObject to std::string") {
JsonDocument doc(4096); JsonDocument doc;
JsonObject obj = doc.to<JsonObject>(); JsonObject obj = doc.to<JsonObject>();
obj["key"] = "value"; obj["key"] = "value";
@ -49,7 +49,7 @@ TEST_CASE("serialize JsonObject to std::string") {
} }
TEST_CASE("serialize an std::string containing a NUL") { TEST_CASE("serialize an std::string containing a NUL") {
JsonDocument doc(256); JsonDocument doc;
doc.set(std::string("hello\0world", 11)); doc.set(std::string("hello\0world", 11));
CHECK(doc.memoryUsage() == sizeofString(11)); CHECK(doc.memoryUsage() == sizeofString(11));

Some files were not shown because too many files have changed in this diff Show More