JsonArray_Container_Tests.cpp 3.2 KB

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