StaticJsonBuffer_CreateObject_Tests.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // Copyright Benoit Blanchon 2014-2015
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://github.com/bblanchon/ArduinoJson
  6. #include <gtest/gtest.h>
  7. #include <ArduinoJson.h>
  8. TEST(StaticJsonBuffer_CreateObject_Tests, GrowsWithObject) {
  9. StaticJsonBuffer<JSON_OBJECT_SIZE(3)> buffer;
  10. JsonObject &obj = buffer.createObject();
  11. ASSERT_EQ(JSON_OBJECT_SIZE(0), buffer.size());
  12. obj["hello"];
  13. ASSERT_EQ(JSON_OBJECT_SIZE(0), buffer.size());
  14. obj["hello"] = 1;
  15. ASSERT_EQ(JSON_OBJECT_SIZE(1), buffer.size());
  16. obj["world"] = 2;
  17. ASSERT_EQ(JSON_OBJECT_SIZE(2), buffer.size());
  18. obj["world"] = 3; // <- same key, should not grow
  19. ASSERT_EQ(JSON_OBJECT_SIZE(2), buffer.size());
  20. }
  21. TEST(StaticJsonBuffer_CreateObject_Tests, SucceedWhenBigEnough) {
  22. StaticJsonBuffer<JSON_OBJECT_SIZE(0)> buffer;
  23. JsonObject &object = buffer.createObject();
  24. ASSERT_TRUE(object.success());
  25. }
  26. TEST(StaticJsonBuffer_CreateObject_Tests, FailsWhenTooSmall) {
  27. StaticJsonBuffer<JSON_OBJECT_SIZE(0) - 1> buffer;
  28. JsonObject &object = buffer.createObject();
  29. ASSERT_FALSE(object.success());
  30. }
  31. TEST(StaticJsonBuffer_CreateObject_Tests, ObjectDoesntGrowWhenFull) {
  32. StaticJsonBuffer<JSON_OBJECT_SIZE(1)> buffer;
  33. JsonObject &obj = buffer.createObject();
  34. obj["hello"] = 1;
  35. obj["world"] = 2;
  36. ASSERT_EQ(JSON_OBJECT_SIZE(1), buffer.size());
  37. ASSERT_EQ(1, obj.size());
  38. char json[64];
  39. obj.printTo(json, sizeof(json));
  40. ASSERT_STREQ("{\"hello\":1}", json);
  41. }