StaticJsonBufferTests.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // Copyright Benoit Blanchon 2014
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://github.com/bblanchon/ArduinoJson
  6. #include <gtest/gtest.h>
  7. #include <ArduinoJson/JsonObject.hpp>
  8. #include <ArduinoJson/JsonValue.hpp>
  9. #include <ArduinoJson/StaticJsonBuffer.hpp>
  10. using namespace ArduinoJson;
  11. const size_t SIZEOF_ONE_OBJECT = JSON_OBJECT_SIZE(0);
  12. const size_t SIZEOF_TWO_OBJECTS = 2 * SIZEOF_ONE_OBJECT;
  13. const size_t SIZEOF_OBJECT_WITH_ONE_VALUE = JSON_OBJECT_SIZE(1);
  14. const size_t SIZEOF_OBJECT_WITH_TWO_VALUES = JSON_OBJECT_SIZE(2);
  15. TEST(StaticJsonBuffer, CapacityMatchTemplateParameter) {
  16. StaticJsonBuffer<42> json;
  17. EXPECT_EQ(42, json.capacity());
  18. }
  19. TEST(StaticJsonBuffer, InitialSizeIsZero) {
  20. StaticJsonBuffer<42> json;
  21. EXPECT_EQ(0, json.size());
  22. }
  23. TEST(StaticJsonBuffer,
  24. WhenCreateObjectIsCalled_ThenSizeIsIncreasedSizeOfJsonObject) {
  25. StaticJsonBuffer<SIZEOF_TWO_OBJECTS> json;
  26. json.createObject();
  27. json.createObject();
  28. EXPECT_EQ(SIZEOF_TWO_OBJECTS, json.size());
  29. }
  30. TEST(StaticJsonBuffer,
  31. GivenBufferIsFull_WhenCreateObjectIsCalled_ThenSizeDoesNotChange) {
  32. StaticJsonBuffer<SIZEOF_ONE_OBJECT> json;
  33. json.createObject();
  34. json.createObject();
  35. EXPECT_EQ(SIZEOF_ONE_OBJECT, json.size());
  36. }
  37. TEST(StaticJsonBuffer,
  38. WhenCreateObjectIsCalled_ThenAnEmptyJsonObjectIsReturned) {
  39. StaticJsonBuffer<SIZEOF_ONE_OBJECT> json;
  40. JsonObject &obj = json.createObject();
  41. EXPECT_EQ(0, obj.size());
  42. }
  43. TEST(StaticJsonBuffer,
  44. GivenAJsonObject_WhenValuesAreAdded_ThenSizeIsIncreasedAccordingly) {
  45. StaticJsonBuffer<SIZEOF_OBJECT_WITH_TWO_VALUES> json;
  46. JsonObject &obj = json.createObject();
  47. obj["hello"];
  48. obj["world"];
  49. EXPECT_EQ(SIZEOF_OBJECT_WITH_TWO_VALUES, json.size());
  50. }
  51. TEST(
  52. StaticJsonBuffer,
  53. GivenAJsonObject_WhenSameValuesAreAddedTwice_ThenSizeIsOnlyIncreasedByTwo) {
  54. StaticJsonBuffer<SIZEOF_OBJECT_WITH_TWO_VALUES> json;
  55. JsonObject &obj = json.createObject();
  56. obj["hello"];
  57. obj["hello"];
  58. EXPECT_EQ(SIZEOF_OBJECT_WITH_ONE_VALUE, json.size());
  59. }