StaticJsonArray.cpp 2.2 KB

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