remove.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // ArduinoJson - https://arduinojson.org
  2. // Copyright © 2014-2025, Benoit BLANCHON
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. #include "Literals.hpp"
  7. TEST_CASE("JsonDocument::remove()") {
  8. JsonDocument doc;
  9. SECTION("remove(int)") {
  10. doc.add(1);
  11. doc.add(2);
  12. doc.add(3);
  13. doc.remove(1);
  14. REQUIRE(doc.as<std::string>() == "[1,3]");
  15. }
  16. SECTION("string literal") {
  17. doc["a"] = 1;
  18. doc["ab"_s] = 2;
  19. doc["b"] = 3;
  20. doc.remove("ab");
  21. REQUIRE(doc.as<std::string>() == "{\"a\":1,\"b\":3}");
  22. }
  23. SECTION("remove(const char *)") {
  24. doc["a"] = 1;
  25. doc["b"] = 2;
  26. doc.remove(static_cast<const char*>("a"));
  27. REQUIRE(doc.as<std::string>() == "{\"b\":2}");
  28. }
  29. SECTION("remove(std::string)") {
  30. doc["a"] = 1;
  31. doc["b"] = 2;
  32. doc.remove("b"_s);
  33. REQUIRE(doc.as<std::string>() == "{\"a\":1}");
  34. }
  35. #ifdef HAS_VARIABLE_LENGTH_ARRAY
  36. SECTION("remove(vla)") {
  37. doc["a"] = 1;
  38. doc["b"] = 2;
  39. size_t i = 4;
  40. char vla[i];
  41. strcpy(vla, "b");
  42. doc.remove(vla);
  43. REQUIRE(doc.as<std::string>() == "{\"a\":1}");
  44. }
  45. #endif
  46. SECTION("remove(JsonVariant) from object") {
  47. doc["a"] = 1;
  48. doc["b"] = 2;
  49. doc["c"] = "b";
  50. doc.remove(doc["c"]);
  51. REQUIRE(doc.as<std::string>() == "{\"a\":1,\"c\":\"b\"}");
  52. }
  53. SECTION("remove(JsonVariant) from array") {
  54. doc[0] = 3;
  55. doc[1] = 2;
  56. doc[2] = 1;
  57. doc.remove(doc[2]);
  58. doc.remove(doc[3]); // noop
  59. REQUIRE(doc.as<std::string>() == "[3,1]");
  60. }
  61. }