is.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. // ArduinoJson - arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2018
  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_FALSE(var.is<bool>());
  52. REQUIRE_FALSE(var.is<int>());
  53. REQUIRE_FALSE(var.is<double>());
  54. REQUIRE_FALSE(var.is<float>());
  55. REQUIRE_FALSE(var.is<long>());
  56. REQUIRE_FALSE(var.is<JsonArray>());
  57. REQUIRE_FALSE(var.is<JsonObject>());
  58. }
  59. TEST_CASE("JsonVariant::is()") {
  60. DynamicJsonBuffer jsonBuffer;
  61. SECTION("JsonArray") {
  62. checkIsArray(jsonBuffer.createArray());
  63. }
  64. SECTION("bool") {
  65. checkIsBool(true);
  66. checkIsBool(false);
  67. }
  68. SECTION("double") {
  69. checkIsFloat(4.2);
  70. }
  71. SECTION("int") {
  72. checkIsInteger(42);
  73. }
  74. SECTION("long") {
  75. checkIsInteger(42L);
  76. }
  77. SECTION("string") {
  78. checkIsString("42");
  79. }
  80. SECTION("unparsed bool") {
  81. checkIsBool(RawJson("true"));
  82. checkIsBool(RawJson("false"));
  83. }
  84. SECTION("unparsed int") {
  85. checkIsInteger(RawJson("42"));
  86. }
  87. SECTION("unparsed float") {
  88. checkIsFloat(RawJson("4.2e-10"));
  89. }
  90. SECTION("unparsed null") {
  91. checkIsString(RawJson("null"));
  92. }
  93. }