JsonArray_Container_Tests.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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. class JsonArray_Container_Tests : public ::testing::Test {
  9. protected:
  10. JsonArray_Container_Tests() : _array(_jsonBuffer.createArray()) {}
  11. template <typename T>
  12. void firstMustEqual(T expected) {
  13. itemMustEqual(0, expected);
  14. }
  15. template <typename T>
  16. void secondMustEqual(T expected) {
  17. itemMustEqual(1, expected);
  18. }
  19. template <typename T>
  20. void firstMustReference(const T& expected) {
  21. itemMustReference(0, expected);
  22. }
  23. template <typename T>
  24. void secondMustReference(const T& expected) {
  25. itemMustReference(1, expected);
  26. }
  27. void sizeMustBe(int expected) { EXPECT_EQ(expected, _array.size()); }
  28. DynamicJsonBuffer _jsonBuffer;
  29. JsonArray& _array;
  30. private:
  31. template <typename T>
  32. void itemMustEqual(int index, T expected) {
  33. EXPECT_EQ(expected, _array[index].as<T>());
  34. }
  35. template <typename T>
  36. void itemMustReference(int index, const T& expected) {
  37. EXPECT_EQ(&expected, &_array[index].as<T&>());
  38. }
  39. };
  40. TEST_F(JsonArray_Container_Tests, SuccessIsTrue) {
  41. EXPECT_TRUE(_array.success());
  42. }
  43. TEST_F(JsonArray_Container_Tests, InitialSizeIsZero) { sizeMustBe(0); }
  44. TEST_F(JsonArray_Container_Tests, Grow_WhenValuesAreAdded) {
  45. _array.add("hello");
  46. sizeMustBe(1);
  47. _array.add("world");
  48. sizeMustBe(2);
  49. }
  50. TEST_F(JsonArray_Container_Tests, CanStoreIntegers) {
  51. _array.add(123);
  52. _array.add(456);
  53. firstMustEqual(123);
  54. secondMustEqual(456);
  55. }
  56. TEST_F(JsonArray_Container_Tests, CanStoreDoubles) {
  57. _array.add(123.45);
  58. _array.add(456.78);
  59. firstMustEqual(123.45);
  60. secondMustEqual(456.78);
  61. }
  62. TEST_F(JsonArray_Container_Tests, CanStoreBooleans) {
  63. _array.add(true);
  64. _array.add(false);
  65. firstMustEqual(true);
  66. secondMustEqual(false);
  67. }
  68. TEST_F(JsonArray_Container_Tests, CanStoreStrings) {
  69. const char* firstString = "h3110";
  70. const char* secondString = "w0r1d";
  71. _array.add(firstString);
  72. _array.add(secondString);
  73. firstMustEqual(firstString);
  74. secondMustEqual(secondString);
  75. }
  76. TEST_F(JsonArray_Container_Tests, CanStoreNestedArrays) {
  77. JsonArray& inner_array1 = _jsonBuffer.createArray();
  78. JsonArray& inner_array2 = _jsonBuffer.createArray();
  79. _array.add(inner_array1);
  80. _array.add(inner_array2);
  81. firstMustReference(inner_array1);
  82. secondMustReference(inner_array2);
  83. }
  84. TEST_F(JsonArray_Container_Tests, CanStoreNestedObjects) {
  85. JsonObject& innerObject1 = _jsonBuffer.createObject();
  86. JsonObject& innerObject2 = _jsonBuffer.createObject();
  87. _array.add(innerObject1);
  88. _array.add(innerObject2);
  89. firstMustReference(innerObject1);
  90. secondMustReference(innerObject2);
  91. }
  92. TEST_F(JsonArray_Container_Tests, CanCreateNestedArrays) {
  93. JsonArray& inner_array1 = _array.createNestedArray();
  94. JsonArray& inner_array2 = _array.createNestedArray();
  95. firstMustReference(inner_array1);
  96. secondMustReference(inner_array2);
  97. }
  98. TEST_F(JsonArray_Container_Tests, CanCreateNestedObjects) {
  99. JsonObject& innerObject1 = _array.createNestedObject();
  100. JsonObject& innerObject2 = _array.createNestedObject();
  101. firstMustReference(innerObject1);
  102. secondMustReference(innerObject2);
  103. }