JsonArray_Container_Tests.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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 <ArduinoJson/JsonArray.hpp>
  10. #include <ArduinoJson/JsonObject.hpp>
  11. #include "Printers.hpp"
  12. using namespace ArduinoJson;
  13. class JsonArray_Container_Tests : public ::testing::Test {
  14. protected:
  15. JsonArray_Container_Tests()
  16. : array(json.createArray()) {
  17. }
  18. template <typename T>
  19. void firstElementMustBe(T expected) {
  20. elementAtIndexMustBe(0, expected);
  21. }
  22. template <typename T>
  23. void secondElementMustBe(T expected) {
  24. elementAtIndexMustBe(1, expected);
  25. }
  26. void sizeMustBe(int expected) { EXPECT_EQ(expected, array.size()); }
  27. StaticJsonBuffer<256> json;
  28. JsonArray &array;
  29. private:
  30. template <typename T>
  31. void elementAtIndexMustBe(int index, T expected) {
  32. EXPECT_EQ(expected, array[index].as<T>());
  33. }
  34. };
  35. TEST_F(JsonArray_Container_Tests, SuccessIsTrue) {
  36. EXPECT_TRUE(array.success());
  37. }
  38. TEST_F(JsonArray_Container_Tests, InitialSizeIsZero) { sizeMustBe(0); }
  39. TEST_F(JsonArray_Container_Tests, Grow_WhenValuesAreAdded) {
  40. array.add("hello");
  41. sizeMustBe(1);
  42. array.add("world");
  43. sizeMustBe(2);
  44. }
  45. TEST_F(JsonArray_Container_Tests, CanStoreIntegers) {
  46. array.add(123);
  47. array.add(456);
  48. firstElementMustBe(123);
  49. secondElementMustBe(456);
  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. }
  57. TEST_F(JsonArray_Container_Tests, CanStoreBooleans) {
  58. array.add(true);
  59. array.add(false);
  60. firstElementMustBe(true);
  61. secondElementMustBe(false);
  62. }
  63. TEST_F(JsonArray_Container_Tests, CanStoreStrings) {
  64. const char* firstString = "h3110";
  65. const char* secondString = "w0r1d";
  66. array.add(firstString);
  67. array.add(secondString);
  68. firstElementMustBe(firstString);
  69. secondElementMustBe(secondString);
  70. }
  71. TEST_F(JsonArray_Container_Tests, CanStoreNestedArrays) {
  72. JsonArray &innerarray1 = json.createArray();
  73. JsonArray &innerarray2 = json.createArray();
  74. array.add(innerarray1);
  75. array.add(innerarray2);
  76. firstElementMustBe(innerarray1);
  77. secondElementMustBe(innerarray2);
  78. }
  79. TEST_F(JsonArray_Container_Tests, CanStoreNestedObjects) {
  80. JsonObject innerObject1 = json.createObject();
  81. JsonObject innerObject2 = json.createObject();
  82. array.add(innerObject1);
  83. array.add(innerObject2);
  84. firstElementMustBe(innerObject1);
  85. secondElementMustBe(innerObject2);
  86. }
  87. TEST_F(JsonArray_Container_Tests, CanCreateNestedArrays) {
  88. JsonArray innerarray1 = array.createNestedArray();
  89. JsonArray innerarray2 = array.createNestedArray();
  90. firstElementMustBe(innerarray1);
  91. secondElementMustBe(innerarray2);
  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. }