mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Simplified the implementation of parseNumber()
This commit is contained in:
		| @@ -2,22 +2,37 @@ | ||||
| // Copyright Benoit Blanchon 2014-2020 | ||||
| // MIT License | ||||
|  | ||||
| #include <ArduinoJson/Numbers/Integer.hpp> | ||||
| #include <ArduinoJson/Numbers/parseNumber.hpp> | ||||
| #include <ArduinoJson/Variant/VariantImpl.hpp> | ||||
| #include <catch.hpp> | ||||
|  | ||||
| using namespace ARDUINOJSON_NAMESPACE; | ||||
|  | ||||
| TEST_CASE("Test uint32_t overflow") { | ||||
|   ParsedNumber<float, uint32_t> first, second; | ||||
|   parseNumber("4294967295", first); | ||||
|   parseNumber("4294967296", second); | ||||
| TEST_CASE("Test unsigned integer overflow") { | ||||
|   VariantData first, second; | ||||
|   first.init(); | ||||
|   second.init(); | ||||
|  | ||||
|   // Avoids MSVC warning C4127 (conditional expression is constant) | ||||
|   size_t integerSize = sizeof(Integer); | ||||
|  | ||||
|   if (integerSize == 8) { | ||||
|     parseNumber("18446744073709551615", first); | ||||
|     parseNumber("18446744073709551616", second); | ||||
|   } else { | ||||
|     parseNumber("4294967295", first); | ||||
|     parseNumber("4294967296", second); | ||||
|   } | ||||
|  | ||||
|   REQUIRE(first.type() == uint8_t(VALUE_IS_POSITIVE_INTEGER)); | ||||
|   REQUIRE(second.type() == uint8_t(VALUE_IS_FLOAT)); | ||||
| } | ||||
|  | ||||
| TEST_CASE("Invalid value") { | ||||
|   ParsedNumber<float, uint32_t> result; | ||||
|   VariantData result; | ||||
|   result.init(); | ||||
|  | ||||
|   parseNumber("6a3", result); | ||||
|  | ||||
|   REQUIRE(result.type() == uint8_t(VALUE_IS_NULL)); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user