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