From 8a3f8510d6d6f4fa44b55052efb92307fa9373a6 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Tue, 23 Feb 2021 08:27:48 +0100 Subject: [PATCH] Simplified tests of JsonVariant::is() --- extras/tests/JsonVariant/is.cpp | 343 +++++++++++++++++++------------- 1 file changed, 204 insertions(+), 139 deletions(-) diff --git a/extras/tests/JsonVariant/is.cpp b/extras/tests/JsonVariant/is.cpp index 1483e167..7e94ad20 100644 --- a/extras/tests/JsonVariant/is.cpp +++ b/extras/tests/JsonVariant/is.cpp @@ -7,160 +7,225 @@ enum MYENUM2 { ONE = 1, TWO = 2 }; -template -void checkIsArray(TVariant var) { - REQUIRE(var.template is()); - - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); -} - -void testArray(JsonArray value) { +TEST_CASE("JsonVariant::is()") { DynamicJsonDocument doc(4096); + JsonVariant variant = doc.to(); - JsonVariant var = doc.to(); - var.set(value); - - checkIsArray(var); - - JsonVariantConst cvar = var; - checkIsArray(cvar); -} - -template -void checkIsBool(TVariant var) { - REQUIRE(var.template is()); - - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); -} - -void testBool(bool value) { - DynamicJsonDocument doc(4096); - JsonVariant var = doc.to(); - var.set(value); - - checkIsBool(var); - checkIsBool(JsonVariantConst(var)); -} - -template -void checkIsFloat(TVariant var) { - REQUIRE(var.template is()); - REQUIRE(var.template is()); - - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); -} - -void testFloat(double value) { - DynamicJsonDocument doc(4096); - JsonVariant var = doc.to(); - var.set(value); - - checkIsFloat(var); - checkIsFloat(JsonVariantConst(var)); -} - -template -void checkIsInteger(TVariant var) { - REQUIRE(var.template is()); - REQUIRE(var.template is()); - REQUIRE(var.template is()); - REQUIRE(var.template is()); - REQUIRE(var.template is()); - - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); -} - -template -void testInteger(T value) { - DynamicJsonDocument doc(4096); - JsonVariant var = doc.to(); - var.set(value); - - checkIsInteger(var); - checkIsInteger(JsonVariantConst(var)); -} - -template -void checkIsString(TVariant var) { - REQUIRE(var.template is()); - REQUIRE(var.template is()); - - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); - REQUIRE_FALSE(var.template is()); -} - -void testString(const char *value) { - DynamicJsonDocument doc(4096); - JsonVariant var = doc.to(); - var.set(value); - - checkIsString(var); - checkIsString(JsonVariantConst(var)); -} - -TEST_CASE("JsonVariant::is()") { - SECTION("JsonArray") { - DynamicJsonDocument doc(4096); - JsonArray array = doc.to(); - testArray(array); + SECTION("null") { + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); } - SECTION("bool") { - testBool(true); - testBool(false); + SECTION("true") { + variant.set(true); + + CHECK(variant.is() == true); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); } - SECTION("double") { - testFloat(4.2); + SECTION("false") { + variant.set(false); + + CHECK(variant.is() == true); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); } SECTION("int") { - testInteger(42); + variant.set(42); + + CHECK(variant.is() == true); + CHECK(variant.is() == true); + CHECK(variant.is() == true); + CHECK(variant.is() == true); + CHECK(variant.is() == true); + CHECK(variant.is() == true); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); } - SECTION("long") { - testInteger(42L); + SECTION("double") { + variant.set(4.2); + + CHECK(variant.is() == true); + CHECK(variant.is() == true); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); } - SECTION("string") { - testString("42"); + SECTION("const char*") { + variant.set("4.2"); + + CHECK(variant.is() == true); + CHECK(variant.is() == true); + CHECK(variant.is() == true); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); } - SECTION("null") { - DynamicJsonDocument doc(4096); - deserializeJson(doc, "[null]"); - JsonVariant v = doc[0]; + SECTION("JsonArray") { + variant.to(); - REQUIRE(v.is() == false); - REQUIRE(v.is() == false); - REQUIRE(v.is() == false); - REQUIRE(v.is() == false); - REQUIRE(v.is() == false); + CHECK(variant.is() == true); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + } + + SECTION("JsonObject") { + variant.to(); + + CHECK(variant.is() == true); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + CHECK(variant.is() == false); + } +} + +TEST_CASE("JsonVariantConst::is()") { + DynamicJsonDocument doc(4096); + JsonVariant variant = doc.to(); + JsonVariantConst cvariant = variant; + + SECTION("null") { + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + } + + SECTION("true") { + variant.set(true); + + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + } + + SECTION("false") { + variant.set(false); + + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + } + + SECTION("int") { + variant.set(42); + + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + } + + SECTION("double") { + variant.set(4.2); + + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + } + + SECTION("const char*") { + variant.set("4.2"); + + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + } + + SECTION("JsonArray") { + variant.to(); + + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + } + + SECTION("JsonObject") { + variant.to(); + + CHECK(cvariant.is() == true); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); + CHECK(cvariant.is() == false); } }