memoryUsage.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // ArduinoJson - https://arduinojson.org
  2. // Copyright © 2014-2023, Benoit BLANCHON
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. using ArduinoJson::detail::sizeofArray;
  7. using ArduinoJson::detail::sizeofObject;
  8. TEST_CASE("JsonDocument::memoryUsage()") {
  9. JsonDocument doc;
  10. SECTION("starts at zero") {
  11. REQUIRE(doc.memoryUsage() == 0);
  12. }
  13. SECTION("sizeofArray(0)") {
  14. doc.to<JsonArray>();
  15. REQUIRE(doc.memoryUsage() == sizeofArray(0));
  16. }
  17. SECTION("sizeofArray(1)") {
  18. doc.to<JsonArray>().add(42);
  19. REQUIRE(doc.memoryUsage() == sizeofArray(1));
  20. }
  21. SECTION("sizeofArray(1) + sizeofArray(0)") {
  22. doc.to<JsonArray>().createNestedArray();
  23. REQUIRE(doc.memoryUsage() == sizeofArray(1) + sizeofArray(0));
  24. }
  25. SECTION("Increases after adding value to array") {
  26. JsonArray arr = doc.to<JsonArray>();
  27. REQUIRE(doc.memoryUsage() == sizeofArray(0));
  28. arr.add(42);
  29. REQUIRE(doc.memoryUsage() == sizeofArray(1));
  30. arr.add(43);
  31. REQUIRE(doc.memoryUsage() == sizeofArray(2));
  32. }
  33. SECTION("Increases after adding value to object") {
  34. JsonObject obj = doc.to<JsonObject>();
  35. REQUIRE(doc.memoryUsage() == sizeofObject(0));
  36. obj["a"] = 1;
  37. REQUIRE(doc.memoryUsage() == sizeofObject(1));
  38. obj["b"] = 2;
  39. REQUIRE(doc.memoryUsage() == sizeofObject(2));
  40. }
  41. }