parseArray.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2023
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. TEST_CASE("StaticJsonBuffer::parseArray()") {
  7. SECTION("TooSmallBufferForEmptyArray") {
  8. StaticJsonBuffer<JSON_ARRAY_SIZE(0) - 1> bufferTooSmall;
  9. char input[] = "[]";
  10. JsonArray& arr = bufferTooSmall.parseArray(input);
  11. REQUIRE_FALSE(arr.success());
  12. }
  13. SECTION("BufferOfTheRightSizeForEmptyArray") {
  14. StaticJsonBuffer<JSON_ARRAY_SIZE(0)> bufferOfRightSize;
  15. char input[] = "[]";
  16. JsonArray& arr = bufferOfRightSize.parseArray(input);
  17. REQUIRE(arr.success());
  18. }
  19. SECTION("TooSmallBufferForArrayWithOneValue") {
  20. StaticJsonBuffer<JSON_ARRAY_SIZE(1) - 1> bufferTooSmall;
  21. char input[] = "[1]";
  22. JsonArray& arr = bufferTooSmall.parseArray(input);
  23. REQUIRE_FALSE(arr.success());
  24. }
  25. SECTION("BufferOfTheRightSizeForArrayWithOneValue") {
  26. StaticJsonBuffer<JSON_ARRAY_SIZE(1)> bufferOfRightSize;
  27. char input[] = "[1]";
  28. JsonArray& arr = bufferOfRightSize.parseArray(input);
  29. REQUIRE(arr.success());
  30. }
  31. SECTION("TooSmallBufferForArrayWithNestedObject") {
  32. StaticJsonBuffer<JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(0) - 1>
  33. bufferTooSmall;
  34. char input[] = "[{}]";
  35. JsonArray& arr = bufferTooSmall.parseArray(input);
  36. REQUIRE_FALSE(arr.success());
  37. }
  38. SECTION("BufferOfTheRightSizeForArrayWithNestedObject") {
  39. StaticJsonBuffer<JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(0)>
  40. bufferOfRightSize;
  41. char input[] = "[{}]";
  42. JsonArray& arr = bufferOfRightSize.parseArray(input);
  43. REQUIRE(arr.success());
  44. }
  45. SECTION("CharPtrNull") {
  46. REQUIRE_FALSE(
  47. StaticJsonBuffer<100>().parseArray(static_cast<char*>(0)).success());
  48. }
  49. SECTION("ConstCharPtrNull") {
  50. REQUIRE_FALSE(StaticJsonBuffer<100>()
  51. .parseArray(static_cast<const char*>(0))
  52. .success());
  53. }
  54. SECTION("CopyStringNotSpaces") {
  55. StaticJsonBuffer<100> jsonBuffer;
  56. jsonBuffer.parseArray(" [ \"1234567\" ] ");
  57. REQUIRE(JSON_ARRAY_SIZE(1) + sizeof("1234567") == jsonBuffer.size());
  58. // note we use a string of 8 bytes to be sure that the StaticJsonBuffer
  59. // will not insert bytes to enforce alignement
  60. }
  61. }