JsonArray_Container_Tests.cpp 3.2 KB

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