subscript.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // Copyright Benoit Blanchon 2014-2017
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://bblanchon.github.io/ArduinoJson/
  6. // If you like this project, please add a star!
  7. #include <ArduinoJson.h>
  8. #include <catch.hpp>
  9. TEST_CASE("JsonVariant::operator[]") {
  10. DynamicJsonBuffer _jsonBuffer;
  11. SECTION("Array") {
  12. JsonArray &array = _jsonBuffer.createArray();
  13. array.add("element at index 0");
  14. array.add("element at index 1");
  15. JsonVariant var = array;
  16. REQUIRE(2 == var.size());
  17. REQUIRE(std::string("element at index 0") == var[0]);
  18. REQUIRE(std::string("element at index 1") == var[1]);
  19. REQUIRE(std::string("element at index 0") ==
  20. var[static_cast<unsigned char>(0)]); // issue #381
  21. REQUIRE_FALSE(var[-1].success());
  22. REQUIRE_FALSE(var[3].success());
  23. REQUIRE_FALSE(var["0"].success());
  24. }
  25. SECTION("Object") {
  26. JsonObject &object = _jsonBuffer.createObject();
  27. object["a"] = "element at key \"a\"";
  28. object["b"] = "element at key \"b\"";
  29. JsonVariant var = object;
  30. REQUIRE(2 == var.size());
  31. REQUIRE(std::string("element at key \"a\"") == var["a"]);
  32. REQUIRE(std::string("element at key \"b\"") == var["b"]);
  33. REQUIRE_FALSE(var["c"].success());
  34. REQUIRE_FALSE(var[0].success());
  35. }
  36. SECTION("Undefined") {
  37. JsonVariant var = JsonVariant();
  38. REQUIRE(0 == var.size());
  39. REQUIRE_FALSE(var["0"].success());
  40. REQUIRE_FALSE(var[0].success());
  41. }
  42. SECTION("String") {
  43. JsonVariant var = "hello world";
  44. REQUIRE(0 == var.size());
  45. REQUIRE_FALSE(var["0"].success());
  46. REQUIRE_FALSE(var[0].success());
  47. }
  48. SECTION("ObjectSetValue") {
  49. JsonVariant var = _jsonBuffer.createObject();
  50. var["hello"] = "world";
  51. REQUIRE(1 == var.size());
  52. REQUIRE(std::string("world") == var["hello"]);
  53. }
  54. SECTION("ArraySetValue") {
  55. JsonVariant var = _jsonBuffer.parseArray("[\"hello\"]");
  56. var[0] = "world";
  57. REQUIRE(1 == var.size());
  58. REQUIRE(std::string("world") == var[0]);
  59. }
  60. SECTION("NestedObjectSetValue") {
  61. JsonVariant var = _jsonBuffer.parseArray("[{}]");
  62. var[0]["hello"] = "world";
  63. REQUIRE(1 == var.size());
  64. REQUIRE(1 == var[0].size());
  65. REQUIRE(std::string("world") == var[0]["hello"]);
  66. }
  67. }