2017-11-07 20:42:50 +01:00
|
|
|
// ArduinoJson - arduinojson.org
|
2018-01-05 09:20:01 +01:00
|
|
|
// Copyright Benoit Blanchon 2014-2018
|
2015-08-10 17:22:22 +02:00
|
|
|
// MIT License
|
|
|
|
|
|
|
|
#include <ArduinoJson.h>
|
2017-04-18 18:22:24 +02:00
|
|
|
#include <catch.hpp>
|
2015-08-10 17:22:22 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
void checkIsArray(JsonVariant var) {
|
|
|
|
REQUIRE(var.is<JsonArray>());
|
2018-07-02 09:35:21 +02:00
|
|
|
REQUIRE(var.is<JsonArray>());
|
|
|
|
REQUIRE(var.is<const JsonArray>());
|
2017-04-18 18:22:24 +02:00
|
|
|
REQUIRE(var.is<const JsonArray>());
|
2015-08-10 17:22:22 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
REQUIRE_FALSE(var.is<bool>());
|
|
|
|
REQUIRE_FALSE(var.is<double>());
|
|
|
|
REQUIRE_FALSE(var.is<float>());
|
|
|
|
REQUIRE_FALSE(var.is<int>());
|
|
|
|
REQUIRE_FALSE(var.is<long>());
|
|
|
|
REQUIRE_FALSE(var.is<const char*>());
|
|
|
|
REQUIRE_FALSE(var.is<JsonObject>());
|
2015-08-10 17:22:22 +02:00
|
|
|
}
|
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
void checkIsBool(JsonVariant var) {
|
|
|
|
REQUIRE(var.is<bool>());
|
2015-08-10 17:22:22 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
REQUIRE_FALSE(var.is<double>());
|
|
|
|
REQUIRE_FALSE(var.is<float>());
|
|
|
|
REQUIRE_FALSE(var.is<int>());
|
|
|
|
REQUIRE_FALSE(var.is<long>());
|
|
|
|
REQUIRE_FALSE(var.is<const char*>());
|
|
|
|
REQUIRE_FALSE(var.is<JsonArray>());
|
|
|
|
REQUIRE_FALSE(var.is<JsonObject>());
|
2015-08-10 17:22:22 +02:00
|
|
|
}
|
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
void checkIsFloat(JsonVariant var) {
|
|
|
|
REQUIRE(var.is<double>());
|
|
|
|
REQUIRE(var.is<float>());
|
2015-08-10 17:22:22 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
REQUIRE_FALSE(var.is<bool>());
|
|
|
|
REQUIRE_FALSE(var.is<int>());
|
|
|
|
REQUIRE_FALSE(var.is<long>());
|
|
|
|
REQUIRE_FALSE(var.is<const char*>());
|
|
|
|
REQUIRE_FALSE(var.is<JsonArray>());
|
|
|
|
REQUIRE_FALSE(var.is<JsonObject>());
|
2016-08-15 12:24:08 +02:00
|
|
|
}
|
2017-04-18 18:22:24 +02:00
|
|
|
|
|
|
|
void checkIsInteger(JsonVariant var) {
|
|
|
|
REQUIRE(var.is<long>());
|
|
|
|
REQUIRE(var.is<int>());
|
2017-05-20 09:06:53 +02:00
|
|
|
REQUIRE(var.is<float>());
|
|
|
|
REQUIRE(var.is<double>());
|
2017-04-18 18:22:24 +02:00
|
|
|
|
|
|
|
REQUIRE_FALSE(var.is<bool>());
|
|
|
|
REQUIRE_FALSE(var.is<const char*>());
|
|
|
|
REQUIRE_FALSE(var.is<JsonArray>());
|
|
|
|
REQUIRE_FALSE(var.is<JsonObject>());
|
2016-08-15 12:24:08 +02:00
|
|
|
}
|
2017-04-18 18:22:24 +02:00
|
|
|
|
|
|
|
void checkIsString(JsonVariant var) {
|
|
|
|
REQUIRE(var.is<const char*>());
|
|
|
|
|
|
|
|
REQUIRE_FALSE(var.is<bool>());
|
|
|
|
REQUIRE_FALSE(var.is<int>());
|
|
|
|
REQUIRE_FALSE(var.is<double>());
|
|
|
|
REQUIRE_FALSE(var.is<float>());
|
|
|
|
REQUIRE_FALSE(var.is<long>());
|
|
|
|
REQUIRE_FALSE(var.is<JsonArray>());
|
|
|
|
REQUIRE_FALSE(var.is<JsonObject>());
|
2016-08-15 12:24:08 +02:00
|
|
|
}
|
2017-04-18 18:22:24 +02:00
|
|
|
|
|
|
|
TEST_CASE("JsonVariant::is()") {
|
|
|
|
SECTION("JsonArray") {
|
2018-04-17 21:27:45 +02:00
|
|
|
DynamicJsonDocument doc;
|
2018-07-02 09:35:21 +02:00
|
|
|
JsonArray array = doc.to<JsonArray>();
|
2018-02-26 16:05:16 +01:00
|
|
|
checkIsArray(array);
|
2017-04-18 18:22:24 +02:00
|
|
|
}
|
2016-08-15 12:24:08 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("bool") {
|
|
|
|
checkIsBool(true);
|
|
|
|
checkIsBool(false);
|
|
|
|
}
|
2016-08-15 12:24:08 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("double") {
|
|
|
|
checkIsFloat(4.2);
|
|
|
|
}
|
2016-08-15 12:24:08 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("int") {
|
|
|
|
checkIsInteger(42);
|
|
|
|
}
|
2016-08-15 12:24:08 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("long") {
|
|
|
|
checkIsInteger(42L);
|
|
|
|
}
|
2016-08-15 12:24:08 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("string") {
|
|
|
|
checkIsString("42");
|
|
|
|
}
|
2016-08-15 12:24:08 +02:00
|
|
|
}
|