JsonArray.cpp 2.3 KB

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