JsonArray_Container_Tests.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #include <gtest/gtest.h>
  2. #include <ArduinoJson/StaticJsonBuffer.hpp>
  3. #include <ArduinoJson/JsonValue.hpp>
  4. using namespace ArduinoJson;
  5. class JsonArray_Container_Tests : public ::testing::Test {
  6. protected:
  7. virtual void SetUp() { array = json.createArray(); }
  8. void nodeCountMustBe(int expected) { EXPECT_EQ(expected, json.size()); }
  9. template <typename T>
  10. void firstElementMustBe(T expected) {
  11. elementAtIndexMustBe(0, expected);
  12. }
  13. template <typename T>
  14. void secondElementMustBe(T expected) {
  15. elementAtIndexMustBe(1, expected);
  16. }
  17. void sizeMustBe(int expected) { EXPECT_EQ(expected, array.size()); }
  18. StaticJsonBuffer<42> json;
  19. JsonArray array;
  20. private:
  21. template <typename T>
  22. void elementAtIndexMustBe(int index, T expected) {
  23. EXPECT_EQ(expected, array[index].as<T>());
  24. }
  25. };
  26. TEST_F(JsonArray_Container_Tests, InitialSizeIsZero) {
  27. sizeMustBe(0);
  28. nodeCountMustBe(1);
  29. }
  30. TEST_F(JsonArray_Container_Tests, Grow_WhenValuesAreAdded) {
  31. array.add("hello");
  32. sizeMustBe(1);
  33. nodeCountMustBe(2);
  34. array.add("world");
  35. sizeMustBe(2);
  36. nodeCountMustBe(3);
  37. }
  38. TEST_F(JsonArray_Container_Tests, CanStoreIntegers) {
  39. array.add(123);
  40. array.add(456);
  41. firstElementMustBe(123);
  42. secondElementMustBe(456);
  43. nodeCountMustBe(3);
  44. }
  45. TEST_F(JsonArray_Container_Tests, CanStoreDoubles) {
  46. array.add(123.45);
  47. array.add(456.78);
  48. firstElementMustBe(123.45);
  49. secondElementMustBe(456.78);
  50. nodeCountMustBe(3);
  51. }
  52. TEST_F(JsonArray_Container_Tests, CanStoreBooleans) {
  53. array.add(true);
  54. array.add(false);
  55. firstElementMustBe(true);
  56. secondElementMustBe(false);
  57. nodeCountMustBe(3);
  58. }
  59. TEST_F(JsonArray_Container_Tests, CanStoreStrings) {
  60. const char *firstString = "h3110";
  61. const char *secondString = "w0r1d";
  62. array.add(firstString);
  63. array.add(secondString);
  64. firstElementMustBe(firstString);
  65. secondElementMustBe(secondString);
  66. nodeCountMustBe(3);
  67. }
  68. TEST_F(JsonArray_Container_Tests, CanStoreNestedArrays) {
  69. JsonArray innerarray1 = json.createArray();
  70. JsonArray innerarray2 = json.createArray();
  71. array.add(innerarray1);
  72. array.add(innerarray2);
  73. firstElementMustBe(innerarray1);
  74. secondElementMustBe(innerarray2);
  75. nodeCountMustBe(1 + 3 + 3);
  76. }
  77. TEST_F(JsonArray_Container_Tests, CanStoreNestedObjects) {
  78. JsonObject innerObject1 = json.createObject();
  79. JsonObject innerObject2 = json.createObject();
  80. array.add(innerObject1);
  81. array.add(innerObject2);
  82. firstElementMustBe(innerObject1);
  83. secondElementMustBe(innerObject2);
  84. nodeCountMustBe(1 + 3 + 3);
  85. }
  86. TEST_F(JsonArray_Container_Tests, CanCreateNestedArrays) {
  87. JsonArray innerarray1 = array.createNestedArray();
  88. JsonArray innerarray2 = array.createNestedArray();
  89. firstElementMustBe(innerarray1);
  90. secondElementMustBe(innerarray2);
  91. nodeCountMustBe(1 + 1 + 1);
  92. }
  93. TEST_F(JsonArray_Container_Tests, CanCreateNestedObjects) {
  94. JsonObject innerObject1 = array.createNestedObject();
  95. JsonObject innerObject2 = array.createNestedObject();
  96. firstElementMustBe(innerObject1);
  97. secondElementMustBe(innerObject2);
  98. nodeCountMustBe(3);
  99. }