nestingLimit.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2023
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. #define SHOULD_WORK(expression) REQUIRE(true == expression.success());
  7. #define SHOULD_FAIL(expression) REQUIRE(false == expression.success());
  8. TEST_CASE("JsonParser nestingLimit") {
  9. DynamicJsonBuffer jb;
  10. SECTION("parseArray()") {
  11. SECTION("limit = 0") {
  12. SHOULD_FAIL(jb.parseArray("[]", 0));
  13. }
  14. SECTION("limit = 1") {
  15. SHOULD_WORK(jb.parseArray("[]", 1));
  16. SHOULD_FAIL(jb.parseArray("[[]]", 1));
  17. }
  18. SECTION("limit = 2") {
  19. SHOULD_WORK(jb.parseArray("[[]]", 2));
  20. SHOULD_FAIL(jb.parseArray("[[[]]]", 2));
  21. }
  22. }
  23. SECTION("parseObject()") {
  24. SECTION("limit = 0") {
  25. SHOULD_FAIL(jb.parseObject("{}", 0));
  26. }
  27. SECTION("limit = 1") {
  28. SHOULD_WORK(jb.parseObject("{\"key\":42}", 1));
  29. SHOULD_FAIL(jb.parseObject("{\"key\":{\"key\":42}}", 1));
  30. }
  31. SECTION("limit = 2") {
  32. SHOULD_WORK(jb.parseObject("{\"key\":{\"key\":42}}", 2));
  33. SHOULD_FAIL(jb.parseObject("{\"key\":{\"key\":{\"key\":42}}}", 2));
  34. }
  35. }
  36. SECTION("parse()") {
  37. SECTION("limit = 0") {
  38. SHOULD_WORK(jb.parse("\"toto\"", 0));
  39. SHOULD_WORK(jb.parse("123", 0));
  40. SHOULD_WORK(jb.parse("true", 0));
  41. SHOULD_FAIL(jb.parse("[]", 0));
  42. SHOULD_FAIL(jb.parse("{}", 0));
  43. SHOULD_FAIL(jb.parse("[\"toto\"]", 0));
  44. SHOULD_FAIL(jb.parse("{\"toto\":1}", 0));
  45. }
  46. SECTION("limit = 1") {
  47. SHOULD_WORK(jb.parse("[\"toto\"]", 1));
  48. SHOULD_WORK(jb.parse("{\"toto\":1}", 1));
  49. SHOULD_FAIL(jb.parse("{\"toto\":{}}", 1));
  50. SHOULD_FAIL(jb.parse("{\"toto\":[]}", 1));
  51. SHOULD_FAIL(jb.parse("[[\"toto\"]]", 1));
  52. SHOULD_FAIL(jb.parse("[{\"toto\":1}]", 1));
  53. }
  54. }
  55. }