Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/llfio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'attic/test/tests/api_error_check.cpp')
-rw-r--r--attic/test/tests/api_error_check.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/attic/test/tests/api_error_check.cpp b/attic/test/tests/api_error_check.cpp
new file mode 100644
index 00000000..3800cb41
--- /dev/null
+++ b/attic/test/tests/api_error_check.cpp
@@ -0,0 +1,39 @@
+#include "test_functions.hpp"
+
+BOOST_AFIO_AUTO_TEST_CASE(api_error_check, "Tests that every API returns errors as it is supposed to", 20)
+{
+ using namespace BOOST_AFIO_V2_NAMESPACE;
+ auto dispatcher = make_dispatcher().get();
+#define BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE(call, errcode) try { BOOST_TEST_MESSAGE("Testing " #call); call; BOOST_FAIL("Exception not thrown by " #call); } \
+ catch(const system_error &e) { BOOST_CHECK(e.code().value()==errcode); std::cout << "\nsystem_error message from " #call " was: " << e.what() << std::endl; } \
+ catch(...) { BOOST_FAIL("Exception thrown by " #call " was not a system_error"); }
+#ifdef WIN32
+# define BOOST_AFIO_FILE_NOT_FOUND_ERRCODE ERROR_FILE_NOT_FOUND
+# define BOOST_AFIO_BAD_FD ERROR_INVALID_HANDLE
+#else
+# define BOOST_AFIO_FILE_NOT_FOUND_ERRCODE ENOENT
+# define BOOST_AFIO_BAD_FD EBADF
+#endif
+
+ // Create a bad handle
+ future<> op=dispatcher->file(path_req("testfile", file_flags::create|file_flags::read_write));
+ auto h=op.get_handle();
+ dispatcher->close(dispatcher->rmfile(op)).get();
+ char buffer[32];
+
+ BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE(dispatcher->dir("should not exist this").get(), BOOST_AFIO_FILE_NOT_FOUND_ERRCODE);
+ BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE(dispatcher->file("should not exist this").get(), BOOST_AFIO_FILE_NOT_FOUND_ERRCODE);
+ // No point checking sync(), he won't call if no bytes have been written
+ BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE(dispatcher->zero(op, {{0, 0}}).get(), BOOST_AFIO_BAD_FD);
+ BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE(dispatcher->read(make_io_req(op, buffer, 32)).get(), BOOST_AFIO_BAD_FD);
+ BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE(dispatcher->write(make_io_req(op, buffer, 32)).get(), BOOST_AFIO_BAD_FD);
+ BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE(dispatcher->truncate(op, 32).get(), BOOST_AFIO_BAD_FD);
+ BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE(dispatcher->enumerate(op).get_handle(), BOOST_AFIO_BAD_FD);
+ BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE(dispatcher->enumerate(op).get(), BOOST_AFIO_BAD_FD);
+ BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE(dispatcher->extents(op).get_handle(), BOOST_AFIO_BAD_FD);
+ BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE(dispatcher->extents(op).get(), BOOST_AFIO_BAD_FD);
+ BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE(dispatcher->statfs(op, fs_metadata_flags::All).get_handle(), BOOST_AFIO_BAD_FD);
+ BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE(dispatcher->statfs(op, fs_metadata_flags::All).get(), BOOST_AFIO_BAD_FD);
+
+#undef BOOST_AFIO_CHECK_SYSTEM_ERROR_CODE
+}