is.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2023
  3. // MIT License
  4. #include <ArduinoJson.h>
  5. #include <catch.hpp>
  6. void checkIsArray(JsonVariant var) {
  7. REQUIRE(var.is<JsonArray>());
  8. REQUIRE(var.is<JsonArray&>());
  9. REQUIRE(var.is<const JsonArray>());
  10. REQUIRE(var.is<const JsonArray&>());
  11. REQUIRE_FALSE(var.is<bool>());
  12. REQUIRE_FALSE(var.is<double>());
  13. REQUIRE_FALSE(var.is<float>());
  14. REQUIRE_FALSE(var.is<int>());
  15. REQUIRE_FALSE(var.is<long>());
  16. REQUIRE_FALSE(var.is<const char*>());
  17. REQUIRE_FALSE(var.is<JsonObject>());
  18. }
  19. void checkIsBool(JsonVariant var) {
  20. REQUIRE(var.is<bool>());
  21. REQUIRE_FALSE(var.is<double>());
  22. REQUIRE_FALSE(var.is<float>());
  23. REQUIRE_FALSE(var.is<int>());
  24. REQUIRE_FALSE(var.is<long>());
  25. REQUIRE_FALSE(var.is<const char*>());
  26. REQUIRE_FALSE(var.is<JsonArray>());
  27. REQUIRE_FALSE(var.is<JsonObject>());
  28. }
  29. void checkIsFloat(JsonVariant var) {
  30. REQUIRE(var.is<double>());
  31. REQUIRE(var.is<float>());
  32. REQUIRE_FALSE(var.is<bool>());
  33. REQUIRE_FALSE(var.is<int>());
  34. REQUIRE_FALSE(var.is<long>());
  35. REQUIRE_FALSE(var.is<const char*>());
  36. REQUIRE_FALSE(var.is<JsonArray>());
  37. REQUIRE_FALSE(var.is<JsonObject>());
  38. }
  39. void checkIsInteger(JsonVariant var) {
  40. REQUIRE(var.is<long>());
  41. REQUIRE(var.is<int>());
  42. REQUIRE(var.is<float>());
  43. REQUIRE(var.is<double>());
  44. REQUIRE_FALSE(var.is<bool>());
  45. REQUIRE_FALSE(var.is<const char*>());
  46. REQUIRE_FALSE(var.is<JsonArray>());
  47. REQUIRE_FALSE(var.is<JsonObject>());
  48. }
  49. void checkIsString(JsonVariant var) {
  50. REQUIRE(var.is<const char*>());
  51. REQUIRE(var.is<std::string>());
  52. REQUIRE_FALSE(var.is<bool>());
  53. REQUIRE_FALSE(var.is<int>());
  54. REQUIRE_FALSE(var.is<double>());
  55. REQUIRE_FALSE(var.is<float>());
  56. REQUIRE_FALSE(var.is<long>());
  57. REQUIRE_FALSE(var.is<JsonArray>());
  58. REQUIRE_FALSE(var.is<JsonObject>());
  59. }
  60. TEST_CASE("JsonVariant::is()") {
  61. DynamicJsonBuffer jsonBuffer;
  62. SECTION("JsonArray") {
  63. checkIsArray(jsonBuffer.createArray());
  64. }
  65. SECTION("bool") {
  66. checkIsBool(true);
  67. checkIsBool(false);
  68. }
  69. SECTION("double") {
  70. checkIsFloat(4.2);
  71. }
  72. SECTION("int") {
  73. checkIsInteger(42);
  74. }
  75. SECTION("long") {
  76. checkIsInteger(42L);
  77. }
  78. SECTION("string") {
  79. checkIsString("42");
  80. }
  81. SECTION("unparsed bool") {
  82. checkIsBool(RawJson("true"));
  83. checkIsBool(RawJson("false"));
  84. }
  85. SECTION("unparsed int") {
  86. checkIsInteger(RawJson("42"));
  87. }
  88. SECTION("unparsed float") {
  89. checkIsFloat(RawJson("4.2e-10"));
  90. }
  91. SECTION("unparsed null") {
  92. checkIsString(RawJson("null"));
  93. }
  94. }