std_string.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. static void eraseString(std::string& str) {
  8. char* p = const_cast<char*>(str.c_str());
  9. while (*p)
  10. *p++ = '*';
  11. }
  12. TEST_CASE("std::string") {
  13. JsonDocument doc;
  14. SECTION("operator[]") {
  15. char json[] = "{\"key\":\"value\"}";
  16. deserializeJson(doc, json);
  17. JsonObject obj = doc.as<JsonObject>();
  18. REQUIRE("value"_s == obj["key"_s]);
  19. }
  20. SECTION("operator[] const") {
  21. char json[] = "{\"key\":\"value\"}";
  22. deserializeJson(doc, json);
  23. JsonObject obj = doc.as<JsonObject>();
  24. REQUIRE("value"_s == obj["key"_s]);
  25. }
  26. SECTION("remove()") {
  27. JsonObject obj = doc.to<JsonObject>();
  28. obj["key"] = "value";
  29. obj.remove("key"_s);
  30. REQUIRE(0 == obj.size());
  31. }
  32. SECTION("operator[], set key") {
  33. std::string key("hello");
  34. JsonObject obj = doc.to<JsonObject>();
  35. obj[key] = "world";
  36. eraseString(key);
  37. REQUIRE("world"_s == obj["hello"]);
  38. }
  39. SECTION("operator[], set value") {
  40. std::string value("world");
  41. JsonObject obj = doc.to<JsonObject>();
  42. obj["hello"] = value;
  43. eraseString(value);
  44. REQUIRE("world"_s == obj["hello"]);
  45. }
  46. }