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);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|