DeserializationError.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2021
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. void testStringification(DeserializationError error, std::string expected) {
  7. REQUIRE(error.c_str() == expected);
  8. }
  9. void testBoolification(DeserializationError error, bool expected) {
  10. // DeserializationError on left-hand side
  11. CHECK(error == expected);
  12. CHECK(error != !expected);
  13. CHECK(!error == !expected);
  14. // DeserializationError on right-hand side
  15. CHECK(expected == error);
  16. CHECK(!expected != error);
  17. CHECK(!expected == !error);
  18. }
  19. #define TEST_STRINGIFICATION(symbol) \
  20. testStringification(DeserializationError::symbol, #symbol)
  21. #define TEST_BOOLIFICATION(symbol, expected) \
  22. testBoolification(DeserializationError::symbol, expected)
  23. TEST_CASE("DeserializationError") {
  24. SECTION("c_str()") {
  25. TEST_STRINGIFICATION(Ok);
  26. TEST_STRINGIFICATION(EmptyInput);
  27. TEST_STRINGIFICATION(IncompleteInput);
  28. TEST_STRINGIFICATION(InvalidInput);
  29. TEST_STRINGIFICATION(NoMemory);
  30. TEST_STRINGIFICATION(NotSupported);
  31. TEST_STRINGIFICATION(TooDeep);
  32. }
  33. SECTION("as boolean") {
  34. TEST_BOOLIFICATION(Ok, false);
  35. TEST_BOOLIFICATION(EmptyInput, true);
  36. TEST_BOOLIFICATION(IncompleteInput, true);
  37. TEST_BOOLIFICATION(InvalidInput, true);
  38. TEST_BOOLIFICATION(NoMemory, true);
  39. TEST_BOOLIFICATION(NotSupported, true);
  40. TEST_BOOLIFICATION(TooDeep, true);
  41. }
  42. SECTION("ostream DeserializationError") {
  43. std::stringstream s;
  44. s << DeserializationError(DeserializationError::InvalidInput);
  45. REQUIRE(s.str() == "InvalidInput");
  46. }
  47. SECTION("ostream DeserializationError::Code") {
  48. std::stringstream s;
  49. s << DeserializationError::InvalidInput;
  50. REQUIRE(s.str() == "InvalidInput");
  51. }
  52. SECTION("switch") {
  53. DeserializationError err = DeserializationError::InvalidInput;
  54. switch (err.code()) {
  55. case DeserializationError::InvalidInput:
  56. SUCCEED();
  57. break;
  58. default:
  59. FAIL();
  60. break;
  61. }
  62. }
  63. SECTION("Comparisons") {
  64. DeserializationError invalidInput(DeserializationError::InvalidInput);
  65. DeserializationError ok(DeserializationError::Ok);
  66. SECTION("DeserializationError == bool") {
  67. REQUIRE(invalidInput == true);
  68. REQUIRE(ok == false);
  69. }
  70. SECTION("bool == DeserializationError") {
  71. REQUIRE(true == invalidInput);
  72. REQUIRE(false == ok);
  73. }
  74. SECTION("DeserializationError != bool") {
  75. REQUIRE(invalidInput != false);
  76. REQUIRE(ok != true);
  77. }
  78. SECTION("bool != DeserializationError") {
  79. REQUIRE(false != invalidInput);
  80. REQUIRE(true != ok);
  81. }
  82. SECTION("Negations") {
  83. REQUIRE(!invalidInput == false);
  84. REQUIRE(!ok == true);
  85. }
  86. SECTION("DeserializationError == Code") {
  87. REQUIRE(invalidInput == DeserializationError::InvalidInput);
  88. REQUIRE(ok == DeserializationError::Ok);
  89. }
  90. SECTION("Code == DeserializationError") {
  91. REQUIRE(DeserializationError::InvalidInput == invalidInput);
  92. REQUIRE(DeserializationError::Ok == ok);
  93. }
  94. SECTION("DeserializationError != Code") {
  95. REQUIRE(invalidInput != DeserializationError::Ok);
  96. REQUIRE(ok != DeserializationError::InvalidInput);
  97. }
  98. SECTION("Code != DeserializationError") {
  99. REQUIRE(DeserializationError::Ok != invalidInput);
  100. REQUIRE(DeserializationError::InvalidInput != ok);
  101. }
  102. SECTION("DeserializationError == DeserializationError") {
  103. REQUIRE_FALSE(invalidInput == ok);
  104. }
  105. SECTION("DeserializationError != DeserializationError") {
  106. REQUIRE(invalidInput != ok);
  107. }
  108. }
  109. }