createNested.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. // ArduinoJson - https://arduinojson.org
  2. // Copyright © 2014-2022, Benoit BLANCHON
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <stdint.h>
  6. #include <catch.hpp>
  7. TEST_CASE("JsonVariant::createNestedObject()") {
  8. DynamicJsonDocument doc(4096);
  9. JsonVariant variant = doc.to<JsonVariant>();
  10. SECTION("promotes to array") {
  11. JsonObject obj = variant.createNestedObject();
  12. obj["value"] = 42;
  13. REQUIRE(variant.is<JsonArray>() == true);
  14. REQUIRE(variant[0]["value"] == 42);
  15. REQUIRE(obj.isNull() == false);
  16. }
  17. SECTION("does nothing on linked array") {
  18. StaticJsonDocument<128> doc2;
  19. doc2[0] = 42;
  20. variant.link(doc2);
  21. variant.createNestedObject();
  22. CHECK(variant.size() == 1);
  23. CHECK(variant[0] == 42);
  24. }
  25. }
  26. TEST_CASE("JsonVariant::createNestedArray()") {
  27. DynamicJsonDocument doc(4096);
  28. JsonVariant variant = doc.to<JsonVariant>();
  29. SECTION("promotes to array") {
  30. JsonArray arr = variant.createNestedArray();
  31. REQUIRE(variant.is<JsonArray>() == true);
  32. REQUIRE(arr.isNull() == false);
  33. }
  34. SECTION("does nothing on linked array") {
  35. StaticJsonDocument<128> doc2;
  36. doc2[0] = 42;
  37. variant.link(doc2);
  38. variant.createNestedArray();
  39. CHECK(variant.size() == 1);
  40. CHECK(variant[0] == 42);
  41. }
  42. }
  43. TEST_CASE("JsonVariant::createNestedObject(key)") {
  44. DynamicJsonDocument doc(4096);
  45. JsonVariant variant = doc.to<JsonVariant>();
  46. SECTION("promotes to object") {
  47. JsonObject obj = variant.createNestedObject("weather");
  48. obj["temp"] = 42;
  49. REQUIRE(variant.is<JsonObject>() == true);
  50. REQUIRE(variant["weather"]["temp"] == 42);
  51. }
  52. SECTION("does nothing on linked object") {
  53. StaticJsonDocument<128> doc2;
  54. doc2["hello"] = "world";
  55. variant.link(doc2);
  56. variant.createNestedObject("weather");
  57. CHECK(variant.size() == 1);
  58. CHECK(variant["hello"] == "world");
  59. }
  60. }
  61. TEST_CASE("JsonVariant::createNestedArray(key)") {
  62. DynamicJsonDocument doc(4096);
  63. JsonVariant variant = doc.to<JsonVariant>();
  64. SECTION("promotes to object") {
  65. JsonArray arr = variant.createNestedArray("items");
  66. REQUIRE(variant.is<JsonObject>() == true);
  67. REQUIRE(arr.isNull() == false);
  68. }
  69. SECTION("does nothing on linked object") {
  70. StaticJsonDocument<128> doc2;
  71. doc2["hello"] = "world";
  72. variant.link(doc2);
  73. variant.createNestedArray("items");
  74. CHECK(variant.size() == 1);
  75. CHECK(variant["hello"] == "world");
  76. }
  77. }