iterator.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2018
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. using namespace Catch::Matchers;
  7. TEST_CASE("JsonObject::begin()/end()") {
  8. StaticJsonDocument<JSON_OBJECT_SIZE(2)> doc;
  9. JsonObject obj = doc.to<JsonObject>();
  10. obj["ab"] = 12;
  11. obj["cd"] = 34;
  12. SECTION("NonConstIterator") {
  13. JsonObject::iterator it = obj.begin();
  14. REQUIRE(obj.end() != it);
  15. REQUIRE_THAT(it->key(), Equals("ab"));
  16. REQUIRE(12 == it->value());
  17. ++it;
  18. REQUIRE(obj.end() != it);
  19. REQUIRE_THAT(it->key(), Equals("cd"));
  20. REQUIRE(34 == it->value());
  21. ++it;
  22. REQUIRE(obj.end() == it);
  23. }
  24. // SECTION("ConstIterator") {
  25. // const JsonObject const_object = obj;
  26. // JsonObject::iterator it = const_object.begin();
  27. // REQUIRE(const_object.end() != it);
  28. // REQUIRE_THAT(it->key(), Equals("ab"));
  29. // REQUIRE(12 == it->value());
  30. // ++it;
  31. // REQUIRE(const_object.end() != it);
  32. // REQUIRE_THAT(it->key(), Equals("cd"));
  33. // REQUIRE(34 == it->value());
  34. // ++it;
  35. // REQUIRE(const_object.end() == it);
  36. // }
  37. SECTION("Dereferencing end() is safe") {
  38. REQUIRE(obj.end()->key() == 0);
  39. REQUIRE(obj.end()->value().isNull());
  40. }
  41. }