createObject.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2023
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. TEST_CASE("StaticJsonBuffer::createObject()") {
  7. SECTION("GrowsWithObject") {
  8. StaticJsonBuffer<JSON_OBJECT_SIZE(3)> buffer;
  9. JsonObject &obj = buffer.createObject();
  10. REQUIRE(JSON_OBJECT_SIZE(0) == buffer.size());
  11. obj["hello"];
  12. REQUIRE(JSON_OBJECT_SIZE(0) == buffer.size());
  13. obj["hello"] = 1;
  14. REQUIRE(JSON_OBJECT_SIZE(1) == buffer.size());
  15. obj["world"] = 2;
  16. REQUIRE(JSON_OBJECT_SIZE(2) == buffer.size());
  17. obj["world"] = 3; // <- same key, should not grow
  18. REQUIRE(JSON_OBJECT_SIZE(2) == buffer.size());
  19. }
  20. SECTION("SucceedWhenBigEnough") {
  21. StaticJsonBuffer<JSON_OBJECT_SIZE(0)> buffer;
  22. JsonObject &object = buffer.createObject();
  23. REQUIRE(object.success());
  24. }
  25. SECTION("FailsWhenTooSmall") {
  26. StaticJsonBuffer<JSON_OBJECT_SIZE(0) - 1> buffer;
  27. JsonObject &object = buffer.createObject();
  28. REQUIRE_FALSE(object.success());
  29. }
  30. SECTION("ObjectDoesntGrowWhenFull") {
  31. StaticJsonBuffer<JSON_OBJECT_SIZE(1)> buffer;
  32. JsonObject &obj = buffer.createObject();
  33. obj["hello"] = 1;
  34. obj["world"] = 2;
  35. REQUIRE(JSON_OBJECT_SIZE(1) == buffer.size());
  36. REQUIRE(1 == obj.size());
  37. char json[64];
  38. obj.printTo(json, sizeof(json));
  39. REQUIRE(std::string("{\"hello\":1}") == json);
  40. }
  41. }