summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/asio/test/is_read_buffered.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/asio/test/is_read_buffered.cpp')
-rw-r--r--src/boost/libs/asio/test/is_read_buffered.cpp129
1 files changed, 129 insertions, 0 deletions
diff --git a/src/boost/libs/asio/test/is_read_buffered.cpp b/src/boost/libs/asio/test/is_read_buffered.cpp
new file mode 100644
index 000000000..868c64644
--- /dev/null
+++ b/src/boost/libs/asio/test/is_read_buffered.cpp
@@ -0,0 +1,129 @@
+//
+// is_read_buffered.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/is_read_buffered.hpp>
+
+#include <boost/asio/buffered_read_stream.hpp>
+#include <boost/asio/buffered_write_stream.hpp>
+#include <boost/asio/io_context.hpp>
+#include <boost/asio/ip/tcp.hpp>
+#include "unit_test.hpp"
+
+using namespace std; // For memcmp, memcpy and memset.
+
+class test_stream
+{
+public:
+ typedef boost::asio::io_context io_context_type;
+
+ typedef test_stream lowest_layer_type;
+
+ typedef io_context_type::executor_type executor_type;
+
+ test_stream(boost::asio::io_context& io_context)
+ : io_context_(io_context)
+ {
+ }
+
+ io_context_type& io_context()
+ {
+ return io_context_;
+ }
+
+ lowest_layer_type& lowest_layer()
+ {
+ return *this;
+ }
+
+ template <typename Const_Buffers>
+ size_t write(const Const_Buffers&)
+ {
+ return 0;
+ }
+
+ template <typename Const_Buffers>
+ size_t write(const Const_Buffers&, boost::system::error_code& ec)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ template <typename Const_Buffers, typename Handler>
+ void async_write(const Const_Buffers&, Handler handler)
+ {
+ boost::system::error_code error;
+ boost::asio::post(io_context_,
+ boost::asio::detail::bind_handler(handler, error, 0));
+ }
+
+ template <typename Mutable_Buffers>
+ size_t read(const Mutable_Buffers&)
+ {
+ return 0;
+ }
+
+ template <typename Mutable_Buffers>
+ size_t read(const Mutable_Buffers&, boost::system::error_code& ec)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ template <typename Mutable_Buffers, typename Handler>
+ void async_read(const Mutable_Buffers&, Handler handler)
+ {
+ boost::system::error_code error;
+ boost::asio::post(io_context_,
+ boost::asio::detail::bind_handler(handler, error, 0));
+ }
+
+private:
+ io_context_type& io_context_;
+};
+
+void is_read_buffered_test()
+{
+ BOOST_ASIO_CHECK(!boost::asio::is_read_buffered<
+ boost::asio::ip::tcp::socket>::value);
+
+ BOOST_ASIO_CHECK(!!boost::asio::is_read_buffered<
+ boost::asio::buffered_read_stream<
+ boost::asio::ip::tcp::socket> >::value);
+
+ BOOST_ASIO_CHECK(!boost::asio::is_read_buffered<
+ boost::asio::buffered_write_stream<
+ boost::asio::ip::tcp::socket> >::value);
+
+ BOOST_ASIO_CHECK(!!boost::asio::is_read_buffered<
+ boost::asio::buffered_stream<boost::asio::ip::tcp::socket> >::value);
+
+ BOOST_ASIO_CHECK(!boost::asio::is_read_buffered<test_stream>::value);
+
+ BOOST_ASIO_CHECK(!!boost::asio::is_read_buffered<
+ boost::asio::buffered_read_stream<test_stream> >::value);
+
+ BOOST_ASIO_CHECK(!boost::asio::is_read_buffered<
+ boost::asio::buffered_write_stream<test_stream> >::value);
+
+ BOOST_ASIO_CHECK(!!boost::asio::is_read_buffered<
+ boost::asio::buffered_stream<test_stream> >::value);
+}
+
+BOOST_ASIO_TEST_SUITE
+(
+ "is_read_buffered",
+ BOOST_ASIO_TEST_CASE(is_read_buffered_test)
+)