JsonArray_Container_Tests.cpp 3.0 KB

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