// ArduinoJson - arduinojson.org // Copyright Benoit Blanchon 2014-2018 // MIT License #include #include #include static const char* null = 0; TEST_CASE("JsonVariant::as()") { SECTION("DoubleAsBool") { JsonVariant variant = 4.2; REQUIRE(variant.as()); } SECTION("DoubleAsCstr") { JsonVariant variant = 4.2; REQUIRE_FALSE(variant.as()); } SECTION("DoubleAsString") { JsonVariant variant = 4.2; REQUIRE(std::string("4.2") == variant.as()); } SECTION("DoubleAsLong") { JsonVariant variant = 4.2; REQUIRE(4L == variant.as()); } SECTION("DoubleAsUnsigned") { JsonVariant variant = 4.2; REQUIRE(4U == variant.as()); } SECTION("DoubleZeroAsBool") { JsonVariant variant = 0.0; REQUIRE_FALSE(variant.as()); } SECTION("DoubleZeroAsLong") { JsonVariant variant = 0.0; REQUIRE(0L == variant.as()); } SECTION("FalseAsBool") { JsonVariant variant = false; REQUIRE_FALSE(variant.as()); } SECTION("FalseAsDouble") { JsonVariant variant = false; REQUIRE(0.0 == variant.as()); } SECTION("FalseAsLong") { JsonVariant variant = false; REQUIRE(0L == variant.as()); } SECTION("FalseAsString") { JsonVariant variant = false; REQUIRE(std::string("false") == variant.as()); } SECTION("TrueAsBool") { JsonVariant variant = true; REQUIRE(variant.as()); } SECTION("TrueAsDouble") { JsonVariant variant = true; REQUIRE(1.0 == variant.as()); } SECTION("TrueAsLong") { JsonVariant variant = true; REQUIRE(1L == variant.as()); } SECTION("TrueAsString") { JsonVariant variant = true; REQUIRE(std::string("true") == variant.as()); } SECTION("LongAsBool") { JsonVariant variant = 42L; REQUIRE(variant.as()); } SECTION("LongZeroAsBool") { JsonVariant variant = 0L; REQUIRE_FALSE(variant.as()); } SECTION("PositiveLongAsDouble") { JsonVariant variant = 42L; REQUIRE(42.0 == variant.as()); } SECTION("NegativeLongAsDouble") { JsonVariant variant = -42L; REQUIRE(-42.0 == variant.as()); } SECTION("LongAsString") { JsonVariant variant = 42L; REQUIRE(std::string("42") == variant.as()); } SECTION("LongZeroAsDouble") { JsonVariant variant = 0L; REQUIRE(0.0 == variant.as()); } SECTION("NullAsBool") { JsonVariant variant = null; REQUIRE_FALSE(variant.as()); } SECTION("NullAsDouble") { JsonVariant variant = null; REQUIRE(0.0 == variant.as()); } SECTION("NullAsLong") { JsonVariant variant = null; REQUIRE(0L == variant.as()); } SECTION("NullAsString") { JsonVariant variant = null; REQUIRE(std::string("null") == variant.as()); } SECTION("NumberStringAsBool") { JsonVariant variant = "42"; REQUIRE(variant.as()); } SECTION("NumberStringAsLong") { JsonVariant variant = "42"; REQUIRE(42L == variant.as()); } #if ARDUINOJSON_USE_LONG_LONG || ARDUINOJSON_USE_INT64 SECTION("NumberStringAsInt64Negative") { JsonVariant variant = "-9223372036854775808"; REQUIRE(-9223372036854775807 - 1 == variant.as()); } SECTION("NumberStringAsInt64Positive") { JsonVariant variant = "9223372036854775807"; REQUIRE(9223372036854775807 == variant.as()); } #endif SECTION("RandomStringAsBool") { JsonVariant variant = "hello"; REQUIRE_FALSE(variant.as()); } SECTION("RandomStringAsLong") { JsonVariant variant = "hello"; REQUIRE(0L == variant.as()); } SECTION("RandomStringAsConstCharPtr") { JsonVariant variant = "hello"; REQUIRE(std::string("hello") == variant.as()); } SECTION("RandomStringAsCharPtr") { JsonVariant variant = "hello"; REQUIRE(std::string("hello") == variant.as()); } SECTION("RandomStringAsString") { JsonVariant variant = "hello"; REQUIRE(std::string("hello") == variant.as()); } SECTION("TrueStringAsBool") { JsonVariant variant = "true"; REQUIRE(variant.as()); } SECTION("TrueStringAsLong") { JsonVariant variant = "true"; REQUIRE(1L == variant.as()); } SECTION("ObjectAsString") { DynamicJsonBuffer buffer; JsonObject& obj = buffer.createObject(); obj["key"] = "value"; JsonVariant variant = obj; REQUIRE(std::string("{\"key\":\"value\"}") == variant.as()); } SECTION("ArrayAsString") { DynamicJsonBuffer buffer; JsonArray& arr = buffer.createArray(); arr.add(4); arr.add(2); JsonVariant variant = arr; REQUIRE(std::string("[4,2]") == variant.as()); } SECTION("ArrayAsJsonArray") { DynamicJsonBuffer buffer; JsonArray& arr = buffer.createArray(); JsonVariant variant = arr; REQUIRE(&arr == &variant.as()); REQUIRE(&arr == &variant.as()); // <- shorthand } SECTION("ObjectAsJsonObject") { DynamicJsonBuffer buffer; JsonObject& arr = buffer.createObject(); JsonVariant variant = arr; REQUIRE(&arr == &variant.as()); REQUIRE(&arr == &variant.as()); // <- shorthand } }