StaticJsonBuffer_Object_Tests.cpp 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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/StaticJsonBuffer.hpp>
  9. using namespace ArduinoJson;
  10. const size_t SIZEOF_ONE_OBJECT = JSON_OBJECT_SIZE(0);
  11. const size_t SIZEOF_TWO_OBJECTS = 2 * SIZEOF_ONE_OBJECT;
  12. const size_t SIZEOF_OBJECT_WITH_ONE_VALUE = JSON_OBJECT_SIZE(1);
  13. const size_t SIZEOF_OBJECT_WITH_TWO_VALUES = JSON_OBJECT_SIZE(2);
  14. TEST(StaticJsonBuffer_Object_Tests, CapacityMatchTemplateParameter) {
  15. StaticJsonBuffer<42> json;
  16. EXPECT_EQ(42, json.capacity());
  17. }
  18. TEST(StaticJsonBuffer_Object_Tests, InitialSizeIsZero) {
  19. StaticJsonBuffer<42> json;
  20. EXPECT_EQ(0, json.size());
  21. }
  22. TEST(StaticJsonBuffer_Object_Tests,
  23. WhenCreateObjectIsCalled_ThenSizeIsIncreasedSizeOfJsonObject) {
  24. StaticJsonBuffer<SIZEOF_TWO_OBJECTS> json;
  25. json.createObject();
  26. json.createObject();
  27. EXPECT_EQ(SIZEOF_TWO_OBJECTS, json.size());
  28. }
  29. TEST(StaticJsonBuffer_Object_Tests,
  30. GivenBufferIsFull_WhenCreateObjectIsCalled_ThenSizeDoesNotChange) {
  31. StaticJsonBuffer<SIZEOF_ONE_OBJECT> json;
  32. json.createObject();
  33. json.createObject();
  34. EXPECT_EQ(SIZEOF_ONE_OBJECT, json.size());
  35. }
  36. TEST(StaticJsonBuffer_Object_Tests,
  37. GivenEnoughSpace_WhenCreateObjectIsCalled_ThenSuccessIsTrue) {
  38. StaticJsonBuffer<SIZEOF_ONE_OBJECT> json;
  39. JsonObject &object = json.createObject();
  40. EXPECT_TRUE(object.success());
  41. }
  42. TEST(StaticJsonBuffer_Object_Tests,
  43. GivenNotEnoughSpace_WhenCreateObjectIsCalled_ThenSuccessIsFalse) {
  44. StaticJsonBuffer<SIZEOF_ONE_OBJECT - 1> json;
  45. JsonObject &object = json.createObject();
  46. EXPECT_FALSE(object.success());
  47. }
  48. TEST(StaticJsonBuffer_Object_Tests,
  49. WhenCreateObjectIsCalled_ThenAnEmptyJsonObjectIsReturned) {
  50. StaticJsonBuffer<SIZEOF_ONE_OBJECT> json;
  51. JsonObject &obj = json.createObject();
  52. EXPECT_EQ(0, obj.size());
  53. }
  54. TEST(StaticJsonBuffer_Object_Tests,
  55. GivenAJsonObject_WhenValuesAreAdded_ThenSizeIsIncreasedAccordingly) {
  56. StaticJsonBuffer<SIZEOF_OBJECT_WITH_TWO_VALUES> json;
  57. JsonObject &obj = json.createObject();
  58. obj["hello"];
  59. obj["world"];
  60. EXPECT_EQ(SIZEOF_OBJECT_WITH_TWO_VALUES, json.size());
  61. }
  62. TEST(
  63. StaticJsonBuffer_Object_Tests,
  64. GivenAJsonObject_WhenSameValuesAreAddedTwice_ThenSizeIsOnlyIncreasedByTwo) {
  65. StaticJsonBuffer<SIZEOF_OBJECT_WITH_TWO_VALUES> json;
  66. JsonObject &obj = json.createObject();
  67. obj["hello"];
  68. obj["hello"];
  69. EXPECT_EQ(SIZEOF_OBJECT_WITH_ONE_VALUE, json.size());
  70. }