is.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. SECTION("JsonArray") {
  61. DynamicJsonDocument doc;
  62. JsonArray array = doc.to<JsonArray>();
  63. checkIsArray(array);
  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. }