72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "catch.hpp"
 | |
| 
 | |
| #include <osmium/util/file.hpp>
 | |
| 
 | |
| #ifdef _WIN32
 | |
| #include <crtdbg.h>
 | |
| // https://msdn.microsoft.com/en-us/library/ksazx244.aspx
 | |
| // https://msdn.microsoft.com/en-us/library/a9yf33zb.aspx
 | |
| class DoNothingInvalidParameterHandler {
 | |
| 
 | |
|     static void invalid_parameter_handler(
 | |
|                     const wchar_t* expression,
 | |
|                     const wchar_t* function,
 | |
|                     const wchar_t* file,
 | |
|                     unsigned int line,
 | |
|                     uintptr_t pReserved
 | |
|                 ) {
 | |
|         // do nothing
 | |
|     }
 | |
| 
 | |
|     _invalid_parameter_handler old_handler;
 | |
| 
 | |
| public:
 | |
| 
 | |
|     DoNothingInvalidParameterHandler() :
 | |
|         old_handler(_set_invalid_parameter_handler(invalid_parameter_handler)) {
 | |
|         _CrtSetReportMode(_CRT_ASSERT, 0);
 | |
|     }
 | |
| 
 | |
|     ~DoNothingInvalidParameterHandler() {
 | |
|         _set_invalid_parameter_handler(old_handler);
 | |
|     }
 | |
| 
 | |
| }; // class InvalidParameterHandler
 | |
| #endif
 | |
| 
 | |
| 
 | |
| TEST_CASE("file_size") {
 | |
| 
 | |
| #ifdef _WIN32
 | |
|     DoNothingInvalidParameterHandler handler;
 | |
| #endif
 | |
| 
 | |
|     SECTION("illegal fd should throw") {
 | |
|         REQUIRE_THROWS_AS(osmium::util::file_size(-1), std::system_error);
 | |
|     }
 | |
| 
 | |
|     SECTION("unused fd should throw") {
 | |
|         // its unlikely that fd 1000 is open...
 | |
|         REQUIRE_THROWS_AS(osmium::util::file_size(1000), std::system_error);
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| TEST_CASE("resize_file") {
 | |
| 
 | |
| #ifdef _WIN32
 | |
|     DoNothingInvalidParameterHandler handler;
 | |
| #endif
 | |
| 
 | |
|     SECTION("illegal fd should throw") {
 | |
|         REQUIRE_THROWS_AS(osmium::util::resize_file(-1, 10), std::system_error);
 | |
|     }
 | |
| 
 | |
|     SECTION("unused fd should throw") {
 | |
|         // its unlikely that fd 1000 is open...
 | |
|         REQUIRE_THROWS_AS(osmium::util::resize_file(1000, 10), std::system_error);
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 |