// ArduinoJson - https://arduinojson.org // Copyright © 2014-2022, Benoit BLANCHON // MIT License #include #include TEST_CASE("JsonVariant::isNull()") { DynamicJsonDocument doc(4096); JsonVariant variant = doc.to(); SECTION("returns true when Undefined") { REQUIRE(variant.isNull() == true); } SECTION("returns false when Integer") { variant.set(42); REQUIRE(variant.isNull() == false); } SECTION("returns false when EmptyArray") { DynamicJsonDocument doc2(4096); JsonArray array = doc2.to(); variant.set(array); REQUIRE(variant.isNull() == false); } SECTION("returns false when EmptyObject") { DynamicJsonDocument doc2(4096); JsonObject obj = doc2.to(); variant.set(obj); REQUIRE(variant.isNull() == false); } SECTION("returns true after set(JsonArray())") { variant.set(JsonArray()); REQUIRE(variant.isNull() == true); } SECTION("returns true after set(JsonObject())") { variant.set(JsonObject()); REQUIRE(variant.isNull() == true); } SECTION("returns false after set('hello')") { variant.set("hello"); REQUIRE(variant.isNull() == false); } SECTION("returns true after set((char*)0)") { variant.set(static_cast(0)); REQUIRE(variant.isNull() == true); } SECTION("returns true after set((const char*)0)") { variant.set(static_cast(0)); REQUIRE(variant.isNull() == true); } SECTION("returns true after set(serialized((char*)0))") { variant.set(serialized(static_cast(0))); REQUIRE(variant.isNull() == true); } SECTION("returns true after set(serialized((const char*)0))") { variant.set(serialized(static_cast(0))); REQUIRE(variant.isNull() == true); } SECTION("returns true for a shallow null copy") { StaticJsonDocument<128> doc2; variant.shallowCopy(doc2); CHECK(variant.isNull() == true); } SECTION("returns false for a shallow array copy") { StaticJsonDocument<128> doc2; doc2[0] = 42; variant.shallowCopy(doc2); CHECK(variant.isNull() == false); } SECTION("works with JsonVariantConst") { variant.set(42); JsonVariantConst cvar = variant; REQUIRE(cvar.isNull() == false); } }