nestingLimit.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. bool tryParseArray(const char *json, uint8_t nestingLimit) {
  10. DynamicJsonBuffer buffer;
  11. return buffer.parseArray(json, nestingLimit).success();
  12. }
  13. bool tryParseObject(const char *json, uint8_t nestingLimit) {
  14. DynamicJsonBuffer buffer;
  15. return buffer.parseObject(json, nestingLimit).success();
  16. }
  17. TEST_CASE("JsonParser nestingLimit") {
  18. SECTION("ParseArrayWithNestingLimit0") {
  19. REQUIRE(true == tryParseArray("[]", 0));
  20. REQUIRE(false == tryParseArray("[[]]", 0));
  21. }
  22. SECTION("ParseArrayWithNestingLimit1") {
  23. REQUIRE(true == tryParseArray("[[]]", 1));
  24. REQUIRE(false == tryParseArray("[[[]]]", 1));
  25. }
  26. SECTION("ParseArrayWithNestingLimit2") {
  27. REQUIRE(true == tryParseArray("[[[]]]", 2));
  28. REQUIRE(false == tryParseArray("[[[[]]]]", 2));
  29. }
  30. SECTION("ParseObjectWithNestingLimit0") {
  31. REQUIRE(true == tryParseObject("{}", 0));
  32. REQUIRE(false == tryParseObject("{\"key\":{}}", 0));
  33. }
  34. SECTION("ParseObjectWithNestingLimit1") {
  35. REQUIRE(true == tryParseObject("{\"key\":{}}", 1));
  36. REQUIRE(false == tryParseObject("{\"key\":{\"key\":{}}}", 1));
  37. }
  38. SECTION("ParseObjectWithNestingLimit2") {
  39. REQUIRE(true == tryParseObject("{\"key\":{\"key\":{}}}", 2));
  40. REQUIRE(false == tryParseObject("{\"key\":{\"key\":{\"key\":{}}}}", 2));
  41. }
  42. }