remove.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // ArduinoJson - https://arduinojson.org
  2. // Copyright © 2014-2024, 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("remove(const char *)") {
  17. doc["a"] = 1;
  18. doc["b"] = 2;
  19. doc.remove("a");
  20. REQUIRE(doc.as<std::string>() == "{\"b\":2}");
  21. }
  22. SECTION("remove(std::string)") {
  23. doc["a"] = 1;
  24. doc["b"] = 2;
  25. doc.remove("b"_s);
  26. REQUIRE(doc.as<std::string>() == "{\"a\":1}");
  27. }
  28. #ifdef HAS_VARIABLE_LENGTH_ARRAY
  29. SECTION("remove(vla)") {
  30. doc["a"] = 1;
  31. doc["b"] = 2;
  32. size_t i = 4;
  33. char vla[i];
  34. strcpy(vla, "b");
  35. doc.remove(vla);
  36. REQUIRE(doc.as<std::string>() == "{\"a\":1}");
  37. }
  38. #endif
  39. SECTION("remove(JsonVariant) from object") {
  40. doc["a"] = 1;
  41. doc["b"] = 2;
  42. doc["c"] = "b";
  43. doc.remove(doc["c"]);
  44. REQUIRE(doc.as<std::string>() == "{\"a\":1,\"c\":\"b\"}");
  45. }
  46. SECTION("remove(JsonVariant) from array") {
  47. doc[0] = 3;
  48. doc[1] = 2;
  49. doc[2] = 1;
  50. doc.remove(doc[2]);
  51. doc.remove(doc[3]); // noop
  52. REQUIRE(doc.as<std::string>() == "[3,1]");
  53. }
  54. }