JsonArray_Container_Tests.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. #include <gtest/gtest.h>
  2. #include <StaticJsonBuffer.h>
  3. #include <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. array.add("h3110");
  79. array.add("w0r1d");
  80. firstElementMustBe("h3110");
  81. secondElementMustBe("w0r1d");
  82. nodeCountMustBe(3);
  83. }
  84. TEST_F(JsonArray_Container_Tests, CanStoreNestedArrays)
  85. {
  86. JsonArray innerarray1 = json.createArray();
  87. JsonArray innerarray2 = json.createArray();
  88. array.add(innerarray1);
  89. array.add(innerarray2);
  90. firstElementMustBe(innerarray1);
  91. secondElementMustBe(innerarray2);
  92. nodeCountMustBe(1 + 3 + 3);
  93. }
  94. TEST_F(JsonArray_Container_Tests, CanStoreNestedObjects)
  95. {
  96. JsonObject innerObject1 = json.createObject();
  97. JsonObject innerObject2 = json.createObject();
  98. array.add(innerObject1);
  99. array.add(innerObject2);
  100. firstElementMustBe(innerObject1);
  101. secondElementMustBe(innerObject2);
  102. nodeCountMustBe(1 + 3 + 3);
  103. }
  104. TEST_F(JsonArray_Container_Tests, CanCreateNestedArrays)
  105. {
  106. JsonArray innerarray1 = array.createNestedArray();
  107. JsonArray innerarray2 = array.createNestedArray();
  108. firstElementMustBe(innerarray1);
  109. secondElementMustBe(innerarray2);
  110. nodeCountMustBe(1 + 1 + 1);
  111. }
  112. TEST_F(JsonArray_Container_Tests, CanCreateNestedObjects)
  113. {
  114. JsonObject innerObject1 = array.createNestedObject();
  115. JsonObject innerObject2 = array.createNestedObject();
  116. firstElementMustBe(innerObject1);
  117. secondElementMustBe(innerObject2);
  118. nodeCountMustBe(3);
  119. }