mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	as<int>()
This commit is contained in:
		| @@ -323,4 +323,12 @@ TEST_CASE("JsonVariant::as()") { | ||||
|       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<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>()") { | ||||
| @@ -390,4 +408,22 @@ TEST_CASE("JsonVariantConst::is<T>()") { | ||||
|     CHECK(cvariant.is<const char *>() == 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; | ||||
|     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> | ||||
|   bool isInteger() const { | ||||
|     if (isPointer()) | ||||
|       return _content.asPointer->isInteger<T>(); | ||||
|     switch (type()) { | ||||
|       case VALUE_IS_UNSIGNED_INTEGER: | ||||
|         return canConvertNumber<T>(_content.asUnsignedInteger); | ||||
|   | ||||
| @@ -17,6 +17,8 @@ namespace ARDUINOJSON_NAMESPACE { | ||||
|  | ||||
| template <typename T> | ||||
| inline T VariantData::asIntegral() const { | ||||
|   if (isPointer()) | ||||
|     return _content.asPointer->asIntegral<T>(); | ||||
|   switch (type()) { | ||||
|     case VALUE_IS_BOOLEAN: | ||||
|       return _content.asBoolean; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user