memoryUsage.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // ArduinoJson - https://arduinojson.org
  2. // Copyright © 2014-2023, Benoit BLANCHON
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. #include <string>
  7. using ArduinoJson::detail::sizeofArray;
  8. using ArduinoJson::detail::sizeofObject;
  9. TEST_CASE("JsonVariant::memoryUsage()") {
  10. JsonDocument doc(4096);
  11. JsonVariant var = doc.to<JsonVariant>();
  12. SECTION("returns 0 if uninitialized") {
  13. JsonVariant unitialized;
  14. REQUIRE(unitialized.memoryUsage() == 0);
  15. }
  16. SECTION("returns size of object") {
  17. JsonObject obj = var.to<JsonObject>();
  18. obj["hello"] = 42;
  19. REQUIRE(var.memoryUsage() == sizeofObject(1));
  20. }
  21. SECTION("returns size of array") {
  22. JsonArray arr = var.to<JsonArray>();
  23. arr.add(42);
  24. REQUIRE(var.memoryUsage() == sizeofArray(1));
  25. }
  26. SECTION("returns size of owned string") {
  27. var.set(std::string("hello"));
  28. REQUIRE(var.memoryUsage() == 6);
  29. REQUIRE(var.memoryUsage() == doc.memoryUsage());
  30. }
  31. SECTION("returns size of owned raw") {
  32. var.set(serialized(std::string("hello")));
  33. REQUIRE(var.memoryUsage() == 6);
  34. REQUIRE(var.memoryUsage() == doc.memoryUsage());
  35. }
  36. }