add.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // ArduinoJson - https://arduinojson.org
  2. // Copyright © 2014-2024, Benoit BLANCHON
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <stdint.h>
  6. #include <catch.hpp>
  7. TEST_CASE("JsonVariant::add(T)") {
  8. JsonDocument doc;
  9. JsonVariant var = doc.to<JsonVariant>();
  10. SECTION("add integer to new variant") {
  11. var.add(42);
  12. REQUIRE(var.as<std::string>() == "[42]");
  13. }
  14. SECTION("add const char* to new variant") {
  15. var.add("hello");
  16. REQUIRE(var.as<std::string>() == "[\"hello\"]");
  17. }
  18. SECTION("add std::string to new variant") {
  19. var.add(std::string("hello"));
  20. REQUIRE(var.as<std::string>() == "[\"hello\"]");
  21. }
  22. SECTION("add integer to integer") {
  23. var.set(123);
  24. var.add(456); // no-op
  25. REQUIRE(var.as<std::string>() == "123");
  26. }
  27. SECTION("add integer to object") {
  28. var["val"] = 123;
  29. var.add(456); // no-op
  30. REQUIRE(var.as<std::string>() == "{\"val\":123}");
  31. }
  32. }
  33. TEST_CASE("JsonVariant::add<T>()") {
  34. JsonDocument doc;
  35. JsonVariant var = doc.to<JsonVariant>();
  36. SECTION("JsonArray") {
  37. JsonArray array = var.add<JsonArray>();
  38. array.add(1);
  39. array.add(2);
  40. REQUIRE(doc.as<std::string>() == "[[1,2]]");
  41. }
  42. SECTION("JsonObject") {
  43. JsonObject object = var.add<JsonObject>();
  44. object["hello"] = "world";
  45. REQUIRE(doc.as<std::string>() == "[{\"hello\":\"world\"}]");
  46. }
  47. SECTION("JsonVariant") {
  48. JsonVariant variant = var.add<JsonVariant>();
  49. variant.set(42);
  50. REQUIRE(doc.as<std::string>() == "[42]");
  51. }
  52. }