mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Break build if using 64-bit integers with ARDUINOJSON_USE_LONG_LONG==0
This commit is contained in:
		| @@ -28,3 +28,11 @@ build_should_fail(Issue978) | ||||
|  | ||||
| add_executable(Issue1189 Issue1189.cpp) | ||||
| build_should_fail(Issue1189) | ||||
|  | ||||
| add_executable(read_long_long read_long_long.cpp) | ||||
| set_property(TARGET read_long_long PROPERTY CXX_STANDARD 11) | ||||
| build_should_fail(read_long_long) | ||||
|  | ||||
| add_executable(write_long_long write_long_long.cpp) | ||||
| set_property(TARGET write_long_long PROPERTY CXX_STANDARD 11) | ||||
| build_should_fail(write_long_long) | ||||
|   | ||||
							
								
								
									
										20
									
								
								extras/tests/FailingBuilds/read_long_long.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								extras/tests/FailingBuilds/read_long_long.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| // ArduinoJson - arduinojson.org | ||||
| // Copyright Benoit Blanchon 2014-2020 | ||||
| // MIT License | ||||
|  | ||||
| #define ARDUINOJSON_USE_LONG_LONG 0 | ||||
| #include <ArduinoJson.h> | ||||
|  | ||||
| #if defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ >= 8 | ||||
| #error This test requires sizeof(long) < 8 | ||||
| #endif | ||||
|  | ||||
| #if !ARDUINOJSON_HAS_LONG_LONG | ||||
| #error This test requires C++11 | ||||
| #endif | ||||
|  | ||||
| ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED(long long) | ||||
| int main() { | ||||
|   DynamicJsonDocument doc(1024); | ||||
|   doc["dummy"].as<long long>(); | ||||
| } | ||||
							
								
								
									
										19
									
								
								extras/tests/FailingBuilds/write_long_long.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								extras/tests/FailingBuilds/write_long_long.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| // ArduinoJson - arduinojson.org | ||||
| // Copyright Benoit Blanchon 2014-2020 | ||||
| // MIT License | ||||
|  | ||||
| #define ARDUINOJSON_USE_LONG_LONG 0 | ||||
| #include <ArduinoJson.h> | ||||
|  | ||||
| #if defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ >= 8 | ||||
| #error This test requires sizeof(long) < 8 | ||||
| #endif | ||||
|  | ||||
| #if !ARDUINOJSON_HAS_LONG_LONG | ||||
| #error This test requires C++11 | ||||
| #endif | ||||
|  | ||||
| int main() { | ||||
|   DynamicJsonDocument doc(1024); | ||||
|   doc["dummy"] = static_cast<long long>(42); | ||||
| } | ||||
| @@ -3,28 +3,14 @@ | ||||
|  | ||||
| #include <catch.hpp> | ||||
|  | ||||
| template <size_t size_of_long> | ||||
| std::string get_expected_json(); | ||||
|  | ||||
| template <> | ||||
| std::string get_expected_json<4>() { | ||||
|   return "{\"A\":2899336981,\"B\":2129924785}"; | ||||
| } | ||||
|  | ||||
| template <> | ||||
| std::string get_expected_json<8>() { | ||||
|   return "{\"A\":123456789123456789,\"B\":987654321987654321}"; | ||||
| } | ||||
|  | ||||
| TEST_CASE("ARDUINOJSON_USE_LONG_LONG == 0") { | ||||
|   DynamicJsonDocument doc(4096); | ||||
|   JsonObject root = doc.to<JsonObject>(); | ||||
|  | ||||
|   root["A"] = 123456789123456789; | ||||
|   root["B"] = 987654321987654321; | ||||
|   doc["A"] = 42; | ||||
|   doc["B"] = 84; | ||||
|  | ||||
|   std::string json; | ||||
|   serializeJson(doc, json); | ||||
|  | ||||
|   REQUIRE(json == get_expected_json<sizeof(long)>()); | ||||
|   REQUIRE(json == "{\"A\":42,\"B\":84}"); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user