StaticJsonBuffer_CreateObject_Tests.cpp 1.5 KB

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