/
BirdLeon
/
ROBLOX2016
Обзор
Документация
Войти
/
BirdLeon
/
ROBLOX2016
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Library/boost/libs/asio/test/execution/context_as.cpp
157 строк
4 KB
PatoFlamejanteTV
full source code
19 дек 2024, 19:11
19 дек 2024, 19:11
05db15d
Код
Авторство
О чём код?
// // context_as.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/execution/context_as.hpp> #include <boost/asio/execution/any_executor.hpp> #include <boost/asio/io_context.hpp> #include <boost/asio/static_thread_pool.hpp> #include "../unit_test.hpp" #if defined(BOOST_ASIO_HAS_BOOST_BIND) # include <boost/bind/bind.hpp> #else // defined(BOOST_ASIO_HAS_BOOST_BIND) # include <functional> #endif // defined(BOOST_ASIO_HAS_BOOST_BIND) using namespace boost::asio; #if defined(BOOST_ASIO_HAS_BOOST_BIND) namespace bindns = boost; #else // defined(BOOST_ASIO_HAS_BOOST_BIND) namespace bindns = std; #endif void context_as_executor_query_test() { static_thread_pool pool(1); BOOST_ASIO_CHECK( &boost::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(); BOOST_ASIO_CHECK( &boost::asio::query(ex1, execution::context_as_t<static_thread_pool&>()) == &pool); BOOST_ASIO_CHECK( &boost::asio::query(ex1, execution::context) == &pool); BOOST_ASIO_CHECK( &boost::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(); BOOST_ASIO_CHECK( &boost::asio::query(ex2, execution::context_as_t<const static_thread_pool&>()) == &pool); BOOST_ASIO_CHECK( &boost::asio::query(ex2, execution::context) == &pool); io_context io_ctx; BOOST_ASIO_CHECK( &boost::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(); BOOST_ASIO_CHECK( &boost::asio::query(ex3, execution::context_as_t<io_context&>()) == &io_ctx); BOOST_ASIO_CHECK( &boost::asio::query(ex3, execution::context) == &io_ctx); BOOST_ASIO_CHECK( &boost::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(); BOOST_ASIO_CHECK( &boost::asio::query(ex4, execution::context_as_t<const io_context&>()) == &io_ctx); BOOST_ASIO_CHECK( &boost::asio::query(ex4, execution::context) == &io_ctx); BOOST_ASIO_CHECK( &boost::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(); BOOST_ASIO_CHECK( &boost::asio::query(ex5, execution::context_as_t<execution_context&>()) == &io_ctx); BOOST_ASIO_CHECK( &boost::asio::query(ex5, execution::context) == &io_ctx); BOOST_ASIO_CHECK( &boost::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(); BOOST_ASIO_CHECK( &boost::asio::query(ex6, execution::context_as_t<const execution_context&>()) == &io_ctx); BOOST_ASIO_CHECK( &boost::asio::query(ex6, execution::context) == &io_ctx); } BOOST_ASIO_TEST_SUITE ( "context_as", BOOST_ASIO_TEST_CASE(context_as_executor_query_test) )