createNestedArray.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. // ArduinoJson - https://arduinojson.org
  2. // Copyright © 2014-2025, Benoit BLANCHON
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. #include <string>
  7. #include "Literals.hpp"
  8. TEST_CASE("JsonDocument::createNestedArray()") {
  9. JsonDocument doc;
  10. SECTION("createNestedArray()") {
  11. JsonArray array = doc.createNestedArray();
  12. array.add(42);
  13. REQUIRE(doc.as<std::string>() == "[[42]]");
  14. }
  15. SECTION("createNestedArray(const char*)") {
  16. JsonArray array = doc.createNestedArray("key");
  17. array.add(42);
  18. REQUIRE(doc.as<std::string>() == "{\"key\":[42]}");
  19. }
  20. SECTION("createNestedArray(std::string)") {
  21. JsonArray array = doc.createNestedArray("key"_s);
  22. array.add(42);
  23. REQUIRE(doc.as<std::string>() == "{\"key\":[42]}");
  24. }
  25. #ifdef HAS_VARIABLE_LENGTH_ARRAY
  26. SECTION("createNestedArray(VLA)") {
  27. size_t i = 16;
  28. char vla[i];
  29. strcpy(vla, "key");
  30. JsonArray array = doc.createNestedArray(vla);
  31. array.add(42);
  32. REQUIRE(doc.as<std::string>() == "{\"key\":[42]}");
  33. }
  34. #endif
  35. }
  36. TEST_CASE("JsonArray::createNestedArray()") {
  37. JsonDocument doc;
  38. JsonArray array = doc.to<JsonArray>();
  39. JsonArray nestedArray = array.createNestedArray();
  40. nestedArray.add(42);
  41. REQUIRE(doc.as<std::string>() == "[[42]]");
  42. }
  43. TEST_CASE("JsonObject::createNestedArray()") {
  44. JsonDocument doc;
  45. JsonObject object = doc.to<JsonObject>();
  46. SECTION("createNestedArray(const char*)") {
  47. JsonArray array = object.createNestedArray("key");
  48. array.add(42);
  49. REQUIRE(doc.as<std::string>() == "{\"key\":[42]}");
  50. }
  51. SECTION("createNestedArray(std::string)") {
  52. JsonArray array = object.createNestedArray("key"_s);
  53. array.add(42);
  54. REQUIRE(doc.as<std::string>() == "{\"key\":[42]}");
  55. }
  56. #ifdef HAS_VARIABLE_LENGTH_ARRAY
  57. SECTION("createNestedArray(VLA)") {
  58. size_t i = 16;
  59. char vla[i];
  60. strcpy(vla, "key");
  61. JsonArray array = object.createNestedArray(vla);
  62. array.add(42);
  63. REQUIRE(doc.as<std::string>() == "{\"key\":[42]}");
  64. }
  65. #endif
  66. }
  67. TEST_CASE("JsonVariant::createNestedArray()") {
  68. JsonDocument doc;
  69. JsonVariant variant = doc.to<JsonVariant>();
  70. SECTION("createNestedArray()") {
  71. JsonArray array = variant.createNestedArray();
  72. array.add(42);
  73. REQUIRE(doc.as<std::string>() == "[[42]]");
  74. }
  75. SECTION("createNestedArray(const char*)") {
  76. JsonArray array = variant.createNestedArray("key");
  77. array.add(42);
  78. REQUIRE(doc.as<std::string>() == "{\"key\":[42]}");
  79. }
  80. SECTION("createNestedArray(std::string)") {
  81. JsonArray array = variant.createNestedArray("key"_s);
  82. array.add(42);
  83. REQUIRE(doc.as<std::string>() == "{\"key\":[42]}");
  84. }
  85. #ifdef HAS_VARIABLE_LENGTH_ARRAY
  86. SECTION("createNestedArray(VLA)") {
  87. size_t i = 16;
  88. char vla[i];
  89. strcpy(vla, "key");
  90. JsonArray array = variant.createNestedArray(vla);
  91. array.add(42);
  92. REQUIRE(doc.as<std::string>() == "{\"key\":[42]}");
  93. }
  94. #endif
  95. }