JsonArray.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. // ArduinoJson - https://arduinojson.org
  2. // Copyright © 2014-2022, Benoit BLANCHON
  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. StaticJsonDocument<JSON_ARRAY_SIZE(2)> doc;
  16. JsonArray array = doc.to<JsonArray>();
  17. SECTION("Empty") {
  18. check(array, "[]");
  19. }
  20. SECTION("Null") {
  21. array.add(static_cast<char*>(0));
  22. check(array, "[null]");
  23. }
  24. SECTION("OneString") {
  25. array.add("hello");
  26. check(array, "[\"hello\"]");
  27. }
  28. SECTION("TwoStrings") {
  29. array.add("hello");
  30. array.add("world");
  31. check(array, "[\"hello\",\"world\"]");
  32. }
  33. SECTION("OneStringOverCapacity") {
  34. array.add("hello");
  35. array.add("world");
  36. array.add("lost");
  37. check(array, "[\"hello\",\"world\"]");
  38. }
  39. SECTION("One double") {
  40. array.add(3.1415927);
  41. check(array, "[3.1415927]");
  42. }
  43. SECTION("OneInteger") {
  44. array.add(1);
  45. check(array, "[1]");
  46. }
  47. SECTION("TwoIntegers") {
  48. array.add(1);
  49. array.add(2);
  50. check(array, "[1,2]");
  51. }
  52. SECTION("serialized(const char*)") {
  53. array.add(serialized("{\"key\":\"value\"}"));
  54. check(array, "[{\"key\":\"value\"}]");
  55. }
  56. SECTION("serialized(char*)") {
  57. char tmp[] = "{\"key\":\"value\"}";
  58. array.add(serialized(tmp));
  59. check(array, "[{\"key\":\"value\"}]");
  60. }
  61. SECTION("OneIntegerOverCapacity") {
  62. array.add(1);
  63. array.add(2);
  64. array.add(3);
  65. check(array, "[1,2]");
  66. }
  67. SECTION("OneTrue") {
  68. array.add(true);
  69. check(array, "[true]");
  70. }
  71. SECTION("OneFalse") {
  72. array.add(false);
  73. check(array, "[false]");
  74. }
  75. SECTION("TwoBooleans") {
  76. array.add(false);
  77. array.add(true);
  78. check(array, "[false,true]");
  79. }
  80. SECTION("OneBooleanOverCapacity") {
  81. array.add(false);
  82. array.add(true);
  83. array.add(false);
  84. check(array, "[false,true]");
  85. }
  86. SECTION("OneEmptyNestedArray") {
  87. array.createNestedArray();
  88. check(array, "[[]]");
  89. }
  90. SECTION("OneEmptyNestedHash") {
  91. array.createNestedObject();
  92. check(array, "[{}]");
  93. }
  94. }