std_string.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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("containsKey()") {
  27. char json[] = "{\"key\":\"value\"}";
  28. deserializeJson(doc, json);
  29. JsonObject obj = doc.as<JsonObject>();
  30. REQUIRE(true == obj.containsKey("key"_s));
  31. }
  32. SECTION("remove()") {
  33. JsonObject obj = doc.to<JsonObject>();
  34. obj["key"] = "value";
  35. obj.remove("key"_s);
  36. REQUIRE(0 == obj.size());
  37. }
  38. SECTION("operator[], set key") {
  39. std::string key("hello");
  40. JsonObject obj = doc.to<JsonObject>();
  41. obj[key] = "world";
  42. eraseString(key);
  43. REQUIRE("world"_s == obj["hello"]);
  44. }
  45. SECTION("operator[], set value") {
  46. std::string value("world");
  47. JsonObject obj = doc.to<JsonObject>();
  48. obj["hello"] = value;
  49. eraseString(value);
  50. REQUIRE("world"_s == obj["hello"]);
  51. }
  52. }