JsonArray.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2018
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. static void check(JsonArray &array, std::string expected) {
  7. std::string actual;
  8. size_t actualLen = serializeJson(array, actual);
  9. REQUIRE(expected == actual);
  10. REQUIRE(actualLen == expected.size());
  11. size_t measuredLen = measureJson(array);
  12. REQUIRE(measuredLen == expected.size());
  13. }
  14. TEST_CASE("serializeJson(JsonArray)") {
  15. StaticJsonArray<JSON_ARRAY_SIZE(2)> array;
  16. SECTION("Empty") {
  17. check(array, "[]");
  18. }
  19. SECTION("Null") {
  20. array.add(static_cast<char *>(0));
  21. check(array, "[null]");
  22. }
  23. SECTION("OneString") {
  24. array.add("hello");
  25. check(array, "[\"hello\"]");
  26. }
  27. SECTION("TwoStrings") {
  28. array.add("hello");
  29. array.add("world");
  30. check(array, "[\"hello\",\"world\"]");
  31. }
  32. SECTION("OneStringOverCapacity") {
  33. array.add("hello");
  34. array.add("world");
  35. array.add("lost");
  36. check(array, "[\"hello\",\"world\"]");
  37. }
  38. SECTION("One double") {
  39. array.add(3.1415927);
  40. check(array, "[3.1415927]");
  41. }
  42. SECTION("OneInteger") {
  43. array.add(1);
  44. check(array, "[1]");
  45. }
  46. SECTION("TwoIntegers") {
  47. array.add(1);
  48. array.add(2);
  49. check(array, "[1,2]");
  50. }
  51. SECTION("RawJson(const char*)") {
  52. array.add(RawJson("{\"key\":\"value\"}"));
  53. check(array, "[{\"key\":\"value\"}]");
  54. }
  55. SECTION("RawJson(char*)") {
  56. char tmp[] = "{\"key\":\"value\"}";
  57. array.add(RawJson(tmp));
  58. check(array, "[{\"key\":\"value\"}]");
  59. }
  60. SECTION("OneIntegerOverCapacity") {
  61. array.add(1);
  62. array.add(2);
  63. array.add(3);
  64. check(array, "[1,2]");
  65. }
  66. SECTION("OneTrue") {
  67. array.add(true);
  68. check(array, "[true]");
  69. }
  70. SECTION("OneFalse") {
  71. array.add(false);
  72. check(array, "[false]");
  73. }
  74. SECTION("TwoBooleans") {
  75. array.add(false);
  76. array.add(true);
  77. check(array, "[false,true]");
  78. }
  79. SECTION("OneBooleanOverCapacity") {
  80. array.add(false);
  81. array.add(true);
  82. array.add(false);
  83. check(array, "[false,true]");
  84. }
  85. SECTION("OneEmptyNestedArray") {
  86. array.createNestedArray();
  87. check(array, "[[]]");
  88. }
  89. SECTION("OneEmptyNestedHash") {
  90. array.createNestedObject();
  91. check(array, "[{}]");
  92. }
  93. }