diff options
Diffstat (limited to 'src/boost/libs/asio/test/windows/overlapped_ptr.cpp')
-rw-r--r-- | src/boost/libs/asio/test/windows/overlapped_ptr.cpp | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/src/boost/libs/asio/test/windows/overlapped_ptr.cpp b/src/boost/libs/asio/test/windows/overlapped_ptr.cpp new file mode 100644 index 000000000..da20280b9 --- /dev/null +++ b/src/boost/libs/asio/test/windows/overlapped_ptr.cpp @@ -0,0 +1,107 @@ +// +// overlapped_ptr.cpp +// ~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +// Disable autolinking for unit tests. +#if !defined(BOOST_ALL_NO_LIB) +#define BOOST_ALL_NO_LIB 1 +#endif // !defined(BOOST_ALL_NO_LIB) + +// Test that header file is self-contained. +#include <boost/asio/windows/overlapped_ptr.hpp> + +#include <boost/asio/executor.hpp> +#include <boost/asio/io_context.hpp> +#include "../unit_test.hpp" + +//------------------------------------------------------------------------------ + +// windows_overlapped_ptr_compile test +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// The following test checks that all public member functions on the class +// windows::overlapped_ptr compile and link correctly. Runtime failures are +// ignored. + +namespace windows_overlapped_ptr_compile { + +void overlapped_handler_1(const boost::system::error_code&, std::size_t) +{ +} + +struct overlapped_handler_2 +{ + void operator()(const boost::system::error_code&, std::size_t) + { + } +}; + +void test() +{ +#if defined(BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR) + using namespace boost::asio; + namespace win = boost::asio::windows; + + try + { + io_context ioc; + boost::asio::executor ex(ioc.get_executor()); + + // basic_overlapped_ptr constructors. + + win::overlapped_ptr ptr1; + + win::overlapped_ptr ptr2(ioc, &overlapped_handler_1); + win::overlapped_ptr ptr3(ioc, overlapped_handler_2()); + + win::overlapped_ptr ptr4(ioc.get_executor(), &overlapped_handler_1); + win::overlapped_ptr ptr5(ioc.get_executor(), overlapped_handler_2()); + win::overlapped_ptr ptr6(ex, &overlapped_handler_1); + win::overlapped_ptr ptr7(ex, overlapped_handler_2()); + + // overlapped_ptr functions. + + ptr1.reset(); + + ptr2.reset(ioc, &overlapped_handler_1); + ptr3.reset(ioc, overlapped_handler_2()); + + ptr2.reset(ioc.get_executor(), &overlapped_handler_1); + ptr3.reset(ioc.get_executor(), overlapped_handler_2()); + ptr2.reset(ex, &overlapped_handler_1); + ptr3.reset(ex, overlapped_handler_2()); + + OVERLAPPED* ov1 = ptr1.get(); + (void)ov1; + + const win::overlapped_ptr& ptr8(ptr1); + const OVERLAPPED* ov2 = ptr4.get(); + (void)ov2; + + OVERLAPPED* ov3 = ptr1.release(); + (void)ov3; + + boost::system::error_code ec; + std::size_t bytes_transferred = 0; + ptr1.complete(ec, bytes_transferred); + } + catch (std::exception&) + { + } +#endif // defined(BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR) +} + +} // namespace windows_overlapped_ptr_compile + +//------------------------------------------------------------------------------ + +BOOST_ASIO_TEST_SUITE +( + "windows/overlapped_ptr", + BOOST_ASIO_TEST_CASE(windows_overlapped_ptr_compile::test) +) |