mirror of
https://github.com/eledio-devices/thirdparty-ArduinoJson.git
synced 2025-11-01 16:14:05 +01:00
as<int>()
This commit is contained in:
@@ -323,4 +323,12 @@ TEST_CASE("JsonVariant::as()") {
|
|||||||
CHECK(o.isNull() == true);
|
CHECK(o.isNull() == true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("linked int") {
|
||||||
|
StaticJsonDocument<128> doc2;
|
||||||
|
doc2.set(42);
|
||||||
|
variant.link(doc2);
|
||||||
|
|
||||||
|
CHECK(variant.as<int>() == 42);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -199,6 +199,24 @@ TEST_CASE("JsonVariant::is<T>()") {
|
|||||||
CHECK(variant.is<JsonVariant>() == true);
|
CHECK(variant.is<JsonVariant>() == true);
|
||||||
CHECK(variant.is<JsonVariantConst>() == true);
|
CHECK(variant.is<JsonVariantConst>() == true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("linked int") {
|
||||||
|
StaticJsonDocument<1024> doc2;
|
||||||
|
doc2.set(42);
|
||||||
|
variant.link(doc2);
|
||||||
|
|
||||||
|
CHECK(variant.is<JsonObjectConst>() == false);
|
||||||
|
CHECK(variant.is<JsonVariantConst>() == true);
|
||||||
|
CHECK(variant.is<JsonObject>() == false);
|
||||||
|
CHECK(variant.is<JsonVariant>() == true);
|
||||||
|
CHECK(variant.is<JsonArray>() == false);
|
||||||
|
CHECK(variant.is<JsonArrayConst>() == false);
|
||||||
|
CHECK(variant.is<int>() == true);
|
||||||
|
CHECK(variant.is<float>() == false);
|
||||||
|
CHECK(variant.is<bool>() == false);
|
||||||
|
CHECK(variant.is<const char *>() == false);
|
||||||
|
CHECK(variant.is<MYENUM2>() == true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("JsonVariantConst::is<T>()") {
|
TEST_CASE("JsonVariantConst::is<T>()") {
|
||||||
@@ -390,4 +408,22 @@ TEST_CASE("JsonVariantConst::is<T>()") {
|
|||||||
CHECK(cvariant.is<const char *>() == false);
|
CHECK(cvariant.is<const char *>() == false);
|
||||||
CHECK(cvariant.is<MYENUM2>() == false);
|
CHECK(cvariant.is<MYENUM2>() == false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("linked int") {
|
||||||
|
StaticJsonDocument<1024> doc2;
|
||||||
|
doc2.set(42);
|
||||||
|
variant.link(doc2);
|
||||||
|
|
||||||
|
CHECK(cvariant.is<JsonObjectConst>() == false);
|
||||||
|
CHECK(cvariant.is<JsonVariantConst>() == true);
|
||||||
|
CHECK(cvariant.is<JsonObject>() == false);
|
||||||
|
CHECK(cvariant.is<JsonVariant>() == false);
|
||||||
|
CHECK(cvariant.is<JsonArray>() == false);
|
||||||
|
CHECK(cvariant.is<JsonArrayConst>() == false);
|
||||||
|
CHECK(cvariant.is<int>() == true);
|
||||||
|
CHECK(cvariant.is<float>() == false);
|
||||||
|
CHECK(cvariant.is<bool>() == false);
|
||||||
|
CHECK(cvariant.is<const char *>() == false);
|
||||||
|
CHECK(cvariant.is<MYENUM2>() == true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -156,4 +156,12 @@ TEST_CASE("JsonVariant::operator|()") {
|
|||||||
int result = variant | 42;
|
int result = variant | 42;
|
||||||
REQUIRE(result == 42);
|
REQUIRE(result == 42);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("linked int | int") {
|
||||||
|
StaticJsonDocument<128> doc2;
|
||||||
|
doc2.set(42);
|
||||||
|
variant.link(doc2);
|
||||||
|
int result = variant | 666;
|
||||||
|
CHECK(result == 42);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,6 +134,8 @@ class VariantData {
|
|||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
bool isInteger() const {
|
bool isInteger() const {
|
||||||
|
if (isPointer())
|
||||||
|
return _content.asPointer->isInteger<T>();
|
||||||
switch (type()) {
|
switch (type()) {
|
||||||
case VALUE_IS_UNSIGNED_INTEGER:
|
case VALUE_IS_UNSIGNED_INTEGER:
|
||||||
return canConvertNumber<T>(_content.asUnsignedInteger);
|
return canConvertNumber<T>(_content.asUnsignedInteger);
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ namespace ARDUINOJSON_NAMESPACE {
|
|||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline T VariantData::asIntegral() const {
|
inline T VariantData::asIntegral() const {
|
||||||
|
if (isPointer())
|
||||||
|
return _content.asPointer->asIntegral<T>();
|
||||||
switch (type()) {
|
switch (type()) {
|
||||||
case VALUE_IS_BOOLEAN:
|
case VALUE_IS_BOOLEAN:
|
||||||
return _content.asBoolean;
|
return _content.asBoolean;
|
||||||
|
|||||||
Reference in New Issue
Block a user