Files
ArduinoJson/extras/tests/JsonVariant/unbound.cpp

83 lines
2.6 KiB
C++
Raw Normal View History

// ArduinoJson - https://arduinojson.org
2024-01-03 08:47:06 +01:00
// Copyright © 2014-2024, Benoit BLANCHON
2014-11-04 13:07:14 +01:00
// MIT License
#include <ArduinoJson.h>
#include <catch.hpp>
2014-11-04 13:07:14 +01:00
TEST_CASE("Unbound JsonVariant") {
2014-11-04 13:07:14 +01:00
JsonVariant variant;
SECTION("as<T>()") {
2021-11-21 15:07:56 +01:00
CHECK(variant.as<bool>() == false);
CHECK(variant.as<int>() == 0);
CHECK(variant.as<float>() == 0.0f);
CHECK(variant.as<const char*>() == 0);
CHECK(variant.as<std::string>() == "null");
CHECK(variant.as<JsonVariant>().isNull());
CHECK(variant.as<JsonVariantConst>().isNull());
CHECK(variant.as<JsonArray>().isNull());
CHECK(variant.as<JsonArrayConst>().isNull());
CHECK(variant.as<JsonObject>().isNull());
CHECK(variant.as<JsonObjectConst>().isNull());
CHECK(variant.as<JsonString>().isNull());
CHECK(variant.as<MsgPackBinary>().data() == nullptr);
CHECK(variant.as<MsgPackBinary>().size() == 0);
2024-06-06 18:33:48 +02:00
CHECK(variant.as<MsgPackExtension>().data() == nullptr);
CHECK(variant.as<MsgPackExtension>().size() == 0);
}
SECTION("is<T>()") {
2021-11-21 15:07:56 +01:00
CHECK_FALSE(variant.is<bool>());
CHECK_FALSE(variant.is<int>());
CHECK_FALSE(variant.is<float>());
CHECK_FALSE(variant.is<const char*>());
CHECK_FALSE(variant.is<std::string>());
CHECK_FALSE(variant.is<JsonVariant>());
CHECK_FALSE(variant.is<JsonVariantConst>());
CHECK_FALSE(variant.is<JsonArray>());
CHECK_FALSE(variant.is<JsonArrayConst>());
CHECK_FALSE(variant.is<JsonObject>());
CHECK_FALSE(variant.is<JsonObjectConst>());
CHECK_FALSE(variant.is<JsonString>());
}
2021-11-21 15:07:56 +01:00
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")));
2023-04-21 16:23:03 +02:00
CHECK_FALSE(variant.set(serialized(std::string("42"))));
2021-11-21 15:07:56 +01:00
CHECK_FALSE(variant.set(true));
CHECK_FALSE(variant.set(MsgPackBinary("hello", 5)));
2024-06-06 18:33:48 +02:00
CHECK_FALSE(variant.set(MsgPackExtension(1, "hello", 5)));
2021-11-21 15:07:56 +01:00
}
2021-11-21 15:07:56 +01:00
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));
}
2021-11-21 15:07:56 +01:00
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));
}
2023-04-21 16:23:03 +02:00
SECTION("containsKey()") {
CHECK_FALSE(variant.containsKey("hello"));
}
SECTION("remove()") {
variant.remove(0);
variant.remove("hello");
}
2014-11-04 13:07:14 +01:00
}