createNestedObject.cpp 3.3 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::createNestedObject()") {
  9. JsonDocument doc;
  10. SECTION("createNestedObject()") {
  11. JsonObject object = doc.createNestedObject();
  12. object["hello"] = "world";
  13. REQUIRE(doc.as<std::string>() == "[{\"hello\":\"world\"}]");
  14. }
  15. SECTION("createNestedObject(const char*)") {
  16. JsonObject object = doc.createNestedObject("key");
  17. object["hello"] = "world";
  18. REQUIRE(doc.as<std::string>() == "{\"key\":{\"hello\":\"world\"}}");
  19. }
  20. SECTION("createNestedObject(std::string)") {
  21. JsonObject object = doc.createNestedObject("key"_s);
  22. object["hello"] = "world";
  23. REQUIRE(doc.as<std::string>() == "{\"key\":{\"hello\":\"world\"}}");
  24. }
  25. #ifdef HAS_VARIABLE_LENGTH_ARRAY
  26. SECTION("createNestedObject(VLA)") {
  27. size_t i = 16;
  28. char vla[i];
  29. strcpy(vla, "key");
  30. JsonObject object = doc.createNestedObject(vla);
  31. object["hello"] = "world";
  32. REQUIRE(doc.as<std::string>() == "{\"key\":{\"hello\":\"world\"}}");
  33. }
  34. #endif
  35. }
  36. TEST_CASE("JsonArray::createNestedObject()") {
  37. JsonDocument doc;
  38. JsonArray array = doc.to<JsonArray>();
  39. JsonObject object = array.createNestedObject();
  40. object["hello"] = "world";
  41. REQUIRE(doc.as<std::string>() == "[{\"hello\":\"world\"}]");
  42. }
  43. TEST_CASE("JsonObject::createNestedObject()") {
  44. JsonDocument doc;
  45. JsonObject object = doc.to<JsonObject>();
  46. SECTION("createNestedObject(const char*)") {
  47. JsonObject nestedObject = object.createNestedObject("key");
  48. nestedObject["hello"] = "world";
  49. REQUIRE(doc.as<std::string>() == "{\"key\":{\"hello\":\"world\"}}");
  50. }
  51. SECTION("createNestedObject(std::string)") {
  52. JsonObject nestedObject = object.createNestedObject("key"_s);
  53. nestedObject["hello"] = "world";
  54. REQUIRE(doc.as<std::string>() == "{\"key\":{\"hello\":\"world\"}}");
  55. }
  56. #ifdef HAS_VARIABLE_LENGTH_ARRAY
  57. SECTION("createNestedObject(VLA)") {
  58. size_t i = 16;
  59. char vla[i];
  60. strcpy(vla, "key");
  61. JsonObject nestedObject = object.createNestedObject(vla);
  62. nestedObject["hello"] = "world";
  63. REQUIRE(doc.as<std::string>() == "{\"key\":{\"hello\":\"world\"}}");
  64. }
  65. #endif
  66. }
  67. TEST_CASE("JsonVariant::createNestedObject()") {
  68. JsonDocument doc;
  69. JsonVariant variant = doc.to<JsonVariant>();
  70. SECTION("createNestedObject()") {
  71. JsonObject object = variant.createNestedObject();
  72. object["hello"] = "world";
  73. REQUIRE(doc.as<std::string>() == "[{\"hello\":\"world\"}]");
  74. }
  75. SECTION("createNestedObject(const char*)") {
  76. JsonObject object = variant.createNestedObject("key");
  77. object["hello"] = "world";
  78. REQUIRE(doc.as<std::string>() == "{\"key\":{\"hello\":\"world\"}}");
  79. }
  80. SECTION("createNestedObject(std::string)") {
  81. JsonObject object = variant.createNestedObject("key"_s);
  82. object["hello"] = "world";
  83. REQUIRE(doc.as<std::string>() == "{\"key\":{\"hello\":\"world\"}}");
  84. }
  85. #ifdef HAS_VARIABLE_LENGTH_ARRAY
  86. SECTION("createNestedObject(VLA)") {
  87. size_t i = 16;
  88. char vla[i];
  89. strcpy(vla, "key");
  90. JsonObject object = variant.createNestedObject(vla);
  91. object["hello"] = "world";
  92. REQUIRE(doc.as<std::string>() == "{\"key\":{\"hello\":\"world\"}}");
  93. }
  94. #endif
  95. }