printTo.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2023
  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 = array.printTo(actual);
  9. REQUIRE(expected == actual);
  10. REQUIRE(actualLen == expected.size());
  11. size_t measuredLen = array.measureLength();
  12. REQUIRE(measuredLen == expected.size());
  13. }
  14. TEST_CASE("JsonArray::printTo()") {
  15. StaticJsonBuffer<JSON_ARRAY_SIZE(2)> jb;
  16. JsonArray &array = jb.createArray();
  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("RawJson(const char*)") {
  53. array.add(RawJson("{\"key\":\"value\"}"));
  54. check(array, "[{\"key\":\"value\"}]");
  55. }
  56. SECTION("RawJson(char*)") {
  57. DynamicJsonBuffer jb2;
  58. JsonArray &arr = jb2.createArray();
  59. char tmp[] = "{\"key\":\"value\"}";
  60. arr.add(RawJson(tmp));
  61. check(arr, "[{\"key\":\"value\"}]");
  62. }
  63. SECTION("OneIntegerOverCapacity") {
  64. array.add(1);
  65. array.add(2);
  66. array.add(3);
  67. check(array, "[1,2]");
  68. }
  69. SECTION("OneTrue") {
  70. array.add(true);
  71. check(array, "[true]");
  72. }
  73. SECTION("OneFalse") {
  74. array.add(false);
  75. check(array, "[false]");
  76. }
  77. SECTION("TwoBooleans") {
  78. array.add(false);
  79. array.add(true);
  80. check(array, "[false,true]");
  81. }
  82. SECTION("OneBooleanOverCapacity") {
  83. array.add(false);
  84. array.add(true);
  85. array.add(false);
  86. check(array, "[false,true]");
  87. }
  88. SECTION("OneEmptyNestedArray") {
  89. array.createNestedArray();
  90. check(array, "[[]]");
  91. }
  92. SECTION("OneEmptyNestedHash") {
  93. array.createNestedObject();
  94. check(array, "[{}]");
  95. }
  96. }