createObject.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright Benoit Blanchon 2014-2017
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://bblanchon.github.io/ArduinoJson/
  6. // If you like this project, please add a star!
  7. #include <ArduinoJson.h>
  8. #include <catch.hpp>
  9. TEST_CASE("StaticJsonBuffer::createObject()") {
  10. SECTION("GrowsWithObject") {
  11. StaticJsonBuffer<JSON_OBJECT_SIZE(3)> buffer;
  12. JsonObject &obj = buffer.createObject();
  13. REQUIRE(JSON_OBJECT_SIZE(0) == buffer.size());
  14. obj["hello"];
  15. REQUIRE(JSON_OBJECT_SIZE(0) == buffer.size());
  16. obj["hello"] = 1;
  17. REQUIRE(JSON_OBJECT_SIZE(1) == buffer.size());
  18. obj["world"] = 2;
  19. REQUIRE(JSON_OBJECT_SIZE(2) == buffer.size());
  20. obj["world"] = 3; // <- same key, should not grow
  21. REQUIRE(JSON_OBJECT_SIZE(2) == buffer.size());
  22. }
  23. SECTION("SucceedWhenBigEnough") {
  24. StaticJsonBuffer<JSON_OBJECT_SIZE(0)> buffer;
  25. JsonObject &object = buffer.createObject();
  26. REQUIRE(object.success());
  27. }
  28. SECTION("FailsWhenTooSmall") {
  29. StaticJsonBuffer<JSON_OBJECT_SIZE(0) - 1> buffer;
  30. JsonObject &object = buffer.createObject();
  31. REQUIRE_FALSE(object.success());
  32. }
  33. SECTION("ObjectDoesntGrowWhenFull") {
  34. StaticJsonBuffer<JSON_OBJECT_SIZE(1)> buffer;
  35. JsonObject &obj = buffer.createObject();
  36. obj["hello"] = 1;
  37. obj["world"] = 2;
  38. REQUIRE(JSON_OBJECT_SIZE(1) == buffer.size());
  39. REQUIRE(1 == obj.size());
  40. char json[64];
  41. obj.printTo(json, sizeof(json));
  42. REQUIRE(std::string("{\"hello\":1}") == json);
  43. }
  44. }