iterator.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // ArduinoJson - https://arduinojson.org
  2. // Copyright © 2014-2023, Benoit BLANCHON
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. using namespace Catch::Matchers;
  7. using ArduinoJson::detail::sizeofObject;
  8. TEST_CASE("JsonObject::begin()/end()") {
  9. JsonDocument doc(sizeofObject(2));
  10. JsonObject obj = doc.to<JsonObject>();
  11. obj["ab"] = 12;
  12. obj["cd"] = 34;
  13. SECTION("NonConstIterator") {
  14. JsonObject::iterator it = obj.begin();
  15. REQUIRE(obj.end() != it);
  16. REQUIRE(it->key() == "ab");
  17. REQUIRE(12 == it->value());
  18. ++it;
  19. REQUIRE(obj.end() != it);
  20. REQUIRE(it->key() == "cd");
  21. REQUIRE(34 == it->value());
  22. ++it;
  23. REQUIRE(obj.end() == it);
  24. }
  25. SECTION("Dereferencing end() is safe") {
  26. REQUIRE(obj.end()->key().isNull());
  27. REQUIRE(obj.end()->value().isNull());
  28. }
  29. SECTION("null JsonObject") {
  30. JsonObject null;
  31. REQUIRE(null.begin() == null.end());
  32. }
  33. }
  34. TEST_CASE("JsonObjectConst::begin()/end()") {
  35. JsonDocument doc(sizeofObject(2));
  36. JsonObject obj = doc.to<JsonObject>();
  37. obj["ab"] = 12;
  38. obj["cd"] = 34;
  39. JsonObjectConst cobj = obj;
  40. SECTION("Iteration") {
  41. JsonObjectConst::iterator it = cobj.begin();
  42. REQUIRE(cobj.end() != it);
  43. REQUIRE(it->key() == "ab");
  44. REQUIRE(12 == it->value());
  45. ++it;
  46. REQUIRE(cobj.end() != it);
  47. JsonPairConst pair = *it;
  48. REQUIRE(pair.key() == "cd");
  49. REQUIRE(34 == pair.value());
  50. ++it;
  51. REQUIRE(cobj.end() == it);
  52. }
  53. SECTION("Dereferencing end() is safe") {
  54. REQUIRE(cobj.end()->key().isNull());
  55. REQUIRE(cobj.end()->value().isNull());
  56. }
  57. SECTION("null JsonObjectConst") {
  58. JsonObjectConst null;
  59. REQUIRE(null.begin() == null.end());
  60. }
  61. }