nestingLimit.cpp 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2018
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. static void check(const char* input, DeserializationError expected,
  7. uint8_t limit) {
  8. DynamicJsonDocument doc;
  9. doc.nestingLimit = limit;
  10. DeserializationError error = deserializeMsgPack(doc, input);
  11. REQUIRE(error == expected);
  12. }
  13. TEST_CASE("Errors returned by deserializeMsgPack()") {
  14. SECTION("object too deep") {
  15. check("\x80", DeserializationError::TooDeep, 0); // {}
  16. check("\x80", DeserializationError::Ok, 1); // {}
  17. check("\x81\xA1H\x80", DeserializationError::TooDeep, 1); // {H:{}}
  18. check("\x81\xA1H\x80", DeserializationError::Ok, 2); // {H:{}}
  19. }
  20. SECTION("array too deep") {
  21. check("\x90", DeserializationError::TooDeep, 0); // []
  22. check("\x90", DeserializationError::Ok, 1); // []
  23. check("\x91\x90", DeserializationError::TooDeep, 1); // [[]]
  24. check("\x91\x90", DeserializationError::Ok, 2); // [[]]
  25. }
  26. }