From 90d750e4d962f0dc4180dd1e2c007cd754a6b8bf Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Sun, 21 Nov 2021 15:07:56 +0100 Subject: [PATCH] Increase coverage --- extras/tests/JsonVariant/undefined.cpp | 122 +++++++------------ src/ArduinoJson/Variant/VariantFunctions.hpp | 14 ++- 2 files changed, 54 insertions(+), 82 deletions(-) diff --git a/extras/tests/JsonVariant/undefined.cpp b/extras/tests/JsonVariant/undefined.cpp index 8c5fdcc2..ccf76762 100644 --- a/extras/tests/JsonVariant/undefined.cpp +++ b/extras/tests/JsonVariant/undefined.cpp @@ -9,88 +9,58 @@ TEST_CASE("JsonVariant undefined") { JsonVariant variant; SECTION("as()") { - SECTION("long") { - REQUIRE(variant.as() == 0); - } - - SECTION("unsigned") { - REQUIRE(variant.as() == 0); - } - - SECTION("const char*") { - REQUIRE(variant.as() == 0); - } - - SECTION("double") { - REQUIRE(variant.as() == 0); - } - - SECTION("bool") { - REQUIRE(variant.as() == false); - } - - SECTION("JsonArray") { - REQUIRE(variant.as().isNull()); - } - - SECTION("JsonObject") { - REQUIRE(variant.as().isNull()); - } + CHECK(variant.as() == false); + CHECK(variant.as() == 0); + CHECK(variant.as() == 0.0f); + CHECK(variant.as() == 0); + CHECK(variant.as() == "null"); + CHECK(variant.as().isNull()); + CHECK(variant.as().isNull()); + CHECK(variant.as().isNull()); + CHECK(variant.as().isNull()); + CHECK(variant.as().isNull()); + CHECK(variant.as().isNull()); + CHECK(variant.as().isNull()); } SECTION("is()") { - SECTION("long") { - REQUIRE(variant.is() == false); - } - - SECTION("unsigned") { - REQUIRE(variant.is() == false); - } - - SECTION("const char*") { - REQUIRE(variant.is() == false); - } - - SECTION("double") { - REQUIRE(variant.is() == false); - } - - SECTION("bool") { - REQUIRE(variant.is() == false); - } - - SECTION("JsonArray") { - REQUIRE(variant.is() == false); - } - - SECTION("JsonObject") { - REQUIRE(variant.is() == false); - } + CHECK_FALSE(variant.is()); + CHECK_FALSE(variant.is()); + CHECK_FALSE(variant.is()); + CHECK_FALSE(variant.is()); + CHECK_FALSE(variant.is()); + CHECK_FALSE(variant.is()); + CHECK_FALSE(variant.is()); + CHECK_FALSE(variant.is()); + CHECK_FALSE(variant.is()); + CHECK_FALSE(variant.is()); + CHECK_FALSE(variant.is()); + CHECK_FALSE(variant.is()); } - SECTION("set()") { - SECTION("long") { - REQUIRE(variant.set(42L) == false); - } + SECTION("set()") { + CHECK_FALSE(variant.set("42")); + CHECK_FALSE(variant.set(42.0)); + CHECK_FALSE(variant.set(42L)); + CHECK_FALSE(variant.set(42U)); + CHECK_FALSE(variant.set(serialized("42"))); + CHECK_FALSE(variant.set(true)); + } - SECTION("unsigned") { - REQUIRE(variant.set(42U) == false); - } + SECTION("add()") { + CHECK_FALSE(variant.add("42")); + CHECK_FALSE(variant.add(42.0)); + CHECK_FALSE(variant.add(42L)); + CHECK_FALSE(variant.add(42U)); + CHECK_FALSE(variant.add(serialized("42"))); + CHECK_FALSE(variant.add(true)); + } - SECTION("const char*") { - REQUIRE(variant.set("42") == false); - } - - SECTION("Serialized") { - REQUIRE(variant.set(serialized("42")) == false); - } - - SECTION("double") { - REQUIRE(variant.set(42.0) == false); - } - - SECTION("bool") { - REQUIRE(variant.set(true) == false); - } + SECTION("operator[]") { + CHECK(variant[0].isNull()); + CHECK(variant["key"].isNull()); + CHECK_FALSE(variant[0].set(1)); + CHECK_FALSE(variant["key"].set(1)); + CHECK_FALSE(variant[std::string("key")].set(1)); } } diff --git a/src/ArduinoJson/Variant/VariantFunctions.hpp b/src/ArduinoJson/Variant/VariantFunctions.hpp index 445bbc4e..0855ba85 100644 --- a/src/ArduinoJson/Variant/VariantFunctions.hpp +++ b/src/ArduinoJson/Variant/VariantFunctions.hpp @@ -86,18 +86,20 @@ inline NO_INLINE VariantData *variantGetOrAddElement(VariantData *var, template NO_INLINE VariantData *variantGetOrAddMember(VariantData *var, TChar *key, MemoryPool *pool) { - return var != 0 ? var->getOrAddMember(adaptString(key), pool, - getStringStoragePolicy(key)) - : 0; + if (!var) + return 0; + return var->getOrAddMember(adaptString(key), pool, + getStringStoragePolicy(key)); } template NO_INLINE VariantData *variantGetOrAddMember(VariantData *var, const TString &key, MemoryPool *pool) { - return var != 0 ? var->getOrAddMember(adaptString(key), pool, - getStringStoragePolicy(key)) - : 0; + if (!var) + return 0; + return var->getOrAddMember(adaptString(key), pool, + getStringStoragePolicy(key)); } inline bool variantIsNull(const VariantData *var) {