issue1120.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include <ArduinoJson.h>
  2. #include <catch.hpp>
  3. #include "Literals.hpp"
  4. TEST_CASE("Issue #1120") {
  5. JsonDocument doc;
  6. constexpr char str[] =
  7. "{\"contents\":[{\"module\":\"Packet\"},{\"module\":\"Analog\"}]}";
  8. deserializeJson(doc, str);
  9. SECTION("MemberProxy<std::string>::isNull()") {
  10. SECTION("returns false") {
  11. auto value = doc["contents"_s];
  12. CHECK(value.isNull() == false);
  13. }
  14. SECTION("returns true") {
  15. auto value = doc["zontents"_s];
  16. CHECK(value.isNull() == true);
  17. }
  18. }
  19. SECTION("ElementProxy<MemberProxy<const char*> >::isNull()") {
  20. SECTION("returns false") { // Issue #1120
  21. auto value = doc["contents"][1];
  22. CHECK(value.isNull() == false);
  23. }
  24. SECTION("returns true") {
  25. auto value = doc["contents"][2];
  26. CHECK(value.isNull() == true);
  27. }
  28. }
  29. SECTION("MemberProxy<ElementProxy<MemberProxy>, const char*>::isNull()") {
  30. SECTION("returns false") {
  31. auto value = doc["contents"][1]["module"];
  32. CHECK(value.isNull() == false);
  33. }
  34. SECTION("returns true") {
  35. auto value = doc["contents"][1]["zodule"];
  36. CHECK(value.isNull() == true);
  37. }
  38. }
  39. SECTION("MemberProxy<ElementProxy<MemberProxy>, std::string>::isNull()") {
  40. SECTION("returns false") {
  41. auto value = doc["contents"][1]["module"_s];
  42. CHECK(value.isNull() == false);
  43. }
  44. SECTION("returns true") {
  45. auto value = doc["contents"][1]["zodule"_s];
  46. CHECK(value.isNull() == true);
  47. }
  48. }
  49. }