2017-01-06 21:07:34 +01:00
|
|
|
// Copyright Benoit Blanchon 2014-2017
|
2015-08-10 17:22:22 +02:00
|
|
|
// MIT License
|
|
|
|
//
|
|
|
|
// Arduino JSON library
|
2017-03-25 22:05:06 +01:00
|
|
|
// https://bblanchon.github.io/ArduinoJson/
|
2016-01-07 22:35:12 +01:00
|
|
|
// If you like this project, please add a star!
|
2015-08-10 17:22:22 +02:00
|
|
|
|
|
|
|
#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>());
|
|
|
|
REQUIRE(var.is<JsonArray&>());
|
|
|
|
REQUIRE(var.is<const JsonArray>());
|
|
|
|
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>());
|
|
|
|
|
|
|
|
REQUIRE_FALSE(var.is<bool>());
|
|
|
|
REQUIRE_FALSE(var.is<double>());
|
|
|
|
REQUIRE_FALSE(var.is<float>());
|
|
|
|
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()") {
|
2016-08-29 20:54:39 +02:00
|
|
|
DynamicJsonBuffer jsonBuffer;
|
2016-08-15 12:24:08 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("JsonArray") {
|
|
|
|
checkIsArray(jsonBuffer.createArray());
|
|
|
|
}
|
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-01-31 21:56:04 +01:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("unparsed bool") {
|
|
|
|
checkIsBool(RawJson("true"));
|
|
|
|
checkIsBool(RawJson("false"));
|
|
|
|
}
|
2016-08-15 12:24:08 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("unparsed int") {
|
|
|
|
checkIsInteger(RawJson("42"));
|
|
|
|
}
|
2016-08-15 12:24:08 +02:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("unparsed float") {
|
|
|
|
checkIsFloat(RawJson("4.2e-10"));
|
|
|
|
}
|
|
|
|
|
|
|
|
SECTION("unparsed null") {
|
|
|
|
checkIsString(RawJson("null"));
|
|
|
|
}
|
2016-08-15 12:24:08 +02:00
|
|
|
}
|