createNestedArray.cpp 2.9 KB

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