summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/asio/src/tests/unit/execution/context_as.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/asio/src/tests/unit/execution/context_as.cpp')
-rw-r--r--3rdparty/asio/src/tests/unit/execution/context_as.cpp147
1 files changed, 147 insertions, 0 deletions
diff --git a/3rdparty/asio/src/tests/unit/execution/context_as.cpp b/3rdparty/asio/src/tests/unit/execution/context_as.cpp
new file mode 100644
index 00000000000..13311ba262b
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/execution/context_as.cpp
@@ -0,0 +1,147 @@
+//
+// context_as.cpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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 "asio/execution/context_as.hpp"
+
+#include <functional>
+#include "asio/execution/any_executor.hpp"
+#include "asio/io_context.hpp"
+#include "asio/static_thread_pool.hpp"
+#include "../unit_test.hpp"
+
+using namespace asio;
+namespace bindns = std;
+
+void context_as_executor_query_test()
+{
+ static_thread_pool pool(1);
+
+ ASIO_CHECK(
+ &asio::query(pool.executor(),
+ execution::context_as_t<static_thread_pool&>())
+ == &pool);
+
+ execution::any_executor<
+ execution::context_as_t<static_thread_pool&>
+ > ex1 = pool.executor();
+
+ ASIO_CHECK(
+ &asio::query(ex1,
+ execution::context_as_t<static_thread_pool&>())
+ == &pool);
+
+ ASIO_CHECK(
+ &asio::query(ex1, execution::context)
+ == &pool);
+
+ ASIO_CHECK(
+ &asio::query(pool.executor(),
+ execution::context_as_t<const static_thread_pool&>())
+ == &pool);
+
+ execution::any_executor<
+ execution::context_as_t<const static_thread_pool&>
+ > ex2 = pool.executor();
+
+ ASIO_CHECK(
+ &asio::query(ex2,
+ execution::context_as_t<const static_thread_pool&>())
+ == &pool);
+
+ ASIO_CHECK(
+ &asio::query(ex2, execution::context)
+ == &pool);
+
+ io_context io_ctx;
+
+ ASIO_CHECK(
+ &asio::query(io_ctx.get_executor(),
+ execution::context_as_t<io_context&>())
+ == &io_ctx);
+
+ execution::any_executor<
+ execution::context_as_t<io_context&>
+ > ex3 = io_ctx.get_executor();
+
+ ASIO_CHECK(
+ &asio::query(ex3,
+ execution::context_as_t<io_context&>())
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(ex3, execution::context)
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(io_ctx.get_executor(),
+ execution::context_as_t<const io_context&>())
+ == &io_ctx);
+
+ execution::any_executor<
+ execution::context_as_t<const io_context&>
+ > ex4 = io_ctx.get_executor();
+
+ ASIO_CHECK(
+ &asio::query(ex4,
+ execution::context_as_t<const io_context&>())
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(ex4, execution::context)
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(io_ctx.get_executor(),
+ execution::context_as_t<execution_context&>())
+ == &io_ctx);
+
+ execution::any_executor<
+ execution::context_as_t<execution_context&>
+ > ex5 = io_ctx.get_executor();
+
+ ASIO_CHECK(
+ &asio::query(ex5,
+ execution::context_as_t<execution_context&>())
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(ex5, execution::context)
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(io_ctx.get_executor(),
+ execution::context_as_t<const execution_context&>())
+ == &io_ctx);
+
+ execution::any_executor<
+ execution::context_as_t<const execution_context&>
+ > ex6 = io_ctx.get_executor();
+
+ ASIO_CHECK(
+ &asio::query(ex6,
+ execution::context_as_t<const execution_context&>())
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(ex6, execution::context)
+ == &io_ctx);
+}
+
+ASIO_TEST_SUITE
+(
+ "context_as",
+ ASIO_TEST_CASE(context_as_executor_query_test)
+)