mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	as<double>, as<string>
This commit is contained in:
		| @@ -330,5 +330,23 @@ TEST_CASE("JsonVariant::as()") { | ||||
|     variant.link(doc2); | ||||
|  | ||||
|     CHECK(variant.as<int>() == 42); | ||||
|     CHECK(variant.as<double>() == 42.0); | ||||
|   } | ||||
|  | ||||
|   SECTION("linked double") { | ||||
|     StaticJsonDocument<128> doc2; | ||||
|     doc2.set(42.0); | ||||
|     variant.link(doc2); | ||||
|  | ||||
|     CHECK(variant.as<int>() == 42); | ||||
|     CHECK(variant.as<double>() == 42.0); | ||||
|   } | ||||
|  | ||||
|   SECTION("linked string") { | ||||
|     StaticJsonDocument<128> doc2; | ||||
|     doc2.set("hello"); | ||||
|     variant.link(doc2); | ||||
|  | ||||
|     CHECK(variant.as<std::string>() == "hello"); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -17,8 +17,6 @@ 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; | ||||
| @@ -31,6 +29,8 @@ inline T VariantData::asIntegral() const { | ||||
|       return parseNumber<T>(_content.asString.data); | ||||
|     case VALUE_IS_FLOAT: | ||||
|       return convertNumber<T>(_content.asFloat); | ||||
|     case VALUE_IS_POINTER: | ||||
|       return _content.asPointer->asIntegral<T>(); | ||||
|     default: | ||||
|       return 0; | ||||
|   } | ||||
| @@ -67,6 +67,8 @@ inline T VariantData::asFloat() const { | ||||
|       return parseNumber<T>(_content.asString.data); | ||||
|     case VALUE_IS_FLOAT: | ||||
|       return static_cast<T>(_content.asFloat); | ||||
|     case VALUE_IS_POINTER: | ||||
|       return _content.asPointer->asFloat<T>(); | ||||
|     default: | ||||
|       return 0; | ||||
|   } | ||||
| @@ -80,6 +82,8 @@ inline String VariantData::asString() const { | ||||
|     case VALUE_IS_OWNED_STRING: | ||||
|       return String(_content.asString.data, _content.asString.size, | ||||
|                     String::Copied); | ||||
|     case VALUE_IS_POINTER: | ||||
|       return _content.asPointer->asString(); | ||||
|     default: | ||||
|       return String(); | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user