iterator.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // ArduinoJson - https://arduinojson.org
  2. // Copyright © 2014-2023, Benoit BLANCHON
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. using ArduinoJson::detail::sizeofArray;
  7. template <typename TArray>
  8. static void run_iterator_test() {
  9. JsonDocument doc(sizeofArray(2));
  10. JsonArray tmp = doc.to<JsonArray>();
  11. tmp.add(12);
  12. tmp.add(34);
  13. TArray array = tmp;
  14. typename TArray::iterator it = array.begin();
  15. typename TArray::iterator end = array.end();
  16. REQUIRE(end != it);
  17. REQUIRE(12 == it->template as<int>());
  18. REQUIRE(12 == static_cast<int>(*it));
  19. ++it;
  20. REQUIRE(end != it);
  21. REQUIRE(34 == it->template as<int>());
  22. REQUIRE(34 == static_cast<int>(*it));
  23. ++it;
  24. REQUIRE(end == it);
  25. }
  26. TEST_CASE("JsonArray::begin()/end()") {
  27. SECTION("Non null JsonArray") {
  28. run_iterator_test<JsonArray>();
  29. }
  30. SECTION("Null JsonArray") {
  31. JsonArray array;
  32. REQUIRE(array.begin() == array.end());
  33. }
  34. }
  35. TEST_CASE("JsonArrayConst::begin()/end()") {
  36. SECTION("Non null JsonArrayConst") {
  37. run_iterator_test<JsonArrayConst>();
  38. }
  39. SECTION("Null JsonArrayConst") {
  40. JsonArrayConst array;
  41. REQUIRE(array.begin() == array.end());
  42. }
  43. }