// // blocking_adaptation.cpp // ~~~~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2003-2023 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 #include #include #include #include "../unit_test.hpp" namespace exec = boost::asio::execution; typedef exec::blocking_adaptation_t s; typedef exec::blocking_adaptation_t::disallowed_t n1; typedef exec::blocking_adaptation_t::allowed_t n2; struct ex_nq_nr { template void execute(const F&) const { } friend bool operator==(const ex_nq_nr&, const ex_nq_nr&) BOOST_ASIO_NOEXCEPT { return true; } friend bool operator!=(const ex_nq_nr&, const ex_nq_nr&) BOOST_ASIO_NOEXCEPT { return false; } }; namespace boost { namespace asio { namespace traits { #if !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) template <> struct equality_comparable { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) template struct execute_member { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); typedef void result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) } // namespace traits } // namespace asio } // namespace boost template struct ex_cq_nr { static BOOST_ASIO_CONSTEXPR ResultType query(ParamType) BOOST_ASIO_NOEXCEPT { return Result(); } template void execute(const F&) const { } friend bool operator==(const ex_cq_nr&, const ex_cq_nr&) BOOST_ASIO_NOEXCEPT { return true; } friend bool operator!=(const ex_cq_nr&, const ex_cq_nr&) BOOST_ASIO_NOEXCEPT { return false; } }; namespace boost { namespace asio { namespace traits { #if !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) template struct equality_comparable > { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) template struct execute_member, Function> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); typedef void result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) template struct query_static_constexpr_member< ex_cq_nr, Param, typename boost::asio::enable_if< boost::asio::is_convertible::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); typedef Result result_type; // Must return raw result type. static BOOST_ASIO_CONSTEXPR result_type value() { return Result(); } }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) } // namespace traits } // namespace asio } // namespace boost template struct ex_mq_nr { ResultType query(ParamType) const BOOST_ASIO_NOEXCEPT { return Result(); } template void execute(const F&) const { } friend bool operator==(const ex_mq_nr&, const ex_mq_nr&) BOOST_ASIO_NOEXCEPT { return true; } friend bool operator!=(const ex_mq_nr&, const ex_mq_nr&) BOOST_ASIO_NOEXCEPT { return false; } }; namespace boost { namespace asio { namespace traits { #if !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) template struct equality_comparable > { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) template struct execute_member, Function> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); typedef void result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) template struct query_member< ex_mq_nr, Param, typename boost::asio::enable_if< boost::asio::is_convertible::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); typedef ResultType result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) } // namespace traits } // namespace asio } // namespace boost template struct ex_fq_nr { friend ResultType query(const ex_fq_nr&, ParamType) BOOST_ASIO_NOEXCEPT { return Result(); } template void execute(const F&) const { } friend bool operator==(const ex_fq_nr&, const ex_fq_nr&) BOOST_ASIO_NOEXCEPT { return true; } friend bool operator!=(const ex_fq_nr&, const ex_fq_nr&) BOOST_ASIO_NOEXCEPT { return false; } }; namespace boost { namespace asio { namespace traits { #if !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) template struct equality_comparable > { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) template struct execute_member, Function> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); typedef void result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) template struct query_free< ex_fq_nr, Param, typename boost::asio::enable_if< boost::asio::is_convertible::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); typedef ResultType result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) } // namespace traits } // namespace asio } // namespace boost template struct ex_mq_mr { CurrentType query(CurrentType) const BOOST_ASIO_NOEXCEPT { return CurrentType(); } CurrentType query(OtherType) const BOOST_ASIO_NOEXCEPT { return CurrentType(); } ex_mq_mr require( CurrentType) const BOOST_ASIO_NOEXCEPT { return ex_mq_mr(); } ex_mq_mr require( OtherType) const BOOST_ASIO_NOEXCEPT { return ex_mq_mr(); } template void execute(const F&) const { } friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) BOOST_ASIO_NOEXCEPT { return true; } friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) BOOST_ASIO_NOEXCEPT { return false; } }; template struct ex_mq_mr { CurrentType query(CurrentType) const BOOST_ASIO_NOEXCEPT { return CurrentType(); } ex_mq_mr require( CurrentType) const BOOST_ASIO_NOEXCEPT { return ex_mq_mr(); } template void execute(const F&) const { } friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) BOOST_ASIO_NOEXCEPT { return true; } friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) BOOST_ASIO_NOEXCEPT { return false; } }; namespace boost { namespace asio { namespace traits { #if !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) template struct equality_comparable > { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) template struct execute_member, Function> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); typedef void result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) template struct query_member< ex_mq_mr, Param, typename boost::asio::enable_if< boost::asio::is_convertible::value || boost::asio::is_convertible::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); typedef CurrentType result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) template struct require_member< ex_mq_mr, Param, typename boost::asio::enable_if< boost::asio::is_convertible::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); typedef ex_mq_mr result_type; }; template struct require_member< ex_mq_mr, Param, typename boost::asio::enable_if< boost::asio::is_convertible::value && !boost::asio::is_same::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); typedef ex_mq_mr result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) } // namespace traits } // namespace asio } // namespace boost template struct ex_fq_fr { friend CurrentType query(const ex_fq_fr&, CurrentType) BOOST_ASIO_NOEXCEPT { return CurrentType(); } friend CurrentType query(const ex_fq_fr&, OtherType) BOOST_ASIO_NOEXCEPT { return CurrentType(); } friend ex_fq_fr require( const ex_fq_fr&, CurrentType) BOOST_ASIO_NOEXCEPT { return ex_fq_fr(); } friend ex_fq_fr require( const ex_fq_fr&, OtherType) BOOST_ASIO_NOEXCEPT { return ex_fq_fr(); } friend ex_fq_fr prefer( const ex_fq_fr&, CurrentType) BOOST_ASIO_NOEXCEPT { return ex_fq_fr(); } friend ex_fq_fr prefer( const ex_fq_fr&, OtherType) BOOST_ASIO_NOEXCEPT { return ex_fq_fr(); } template void execute(const F&) const { } friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) BOOST_ASIO_NOEXCEPT { return true; } friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) BOOST_ASIO_NOEXCEPT { return false; } }; template struct ex_fq_fr { friend CurrentType query(const ex_fq_fr&, CurrentType) BOOST_ASIO_NOEXCEPT { return CurrentType(); } friend ex_fq_fr require( const ex_fq_fr&, CurrentType) BOOST_ASIO_NOEXCEPT { return ex_fq_fr(); } friend ex_fq_fr prefer( const ex_fq_fr&, CurrentType) BOOST_ASIO_NOEXCEPT { return ex_fq_fr(); } template void execute(const F&) const { } friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) BOOST_ASIO_NOEXCEPT { return true; } friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) BOOST_ASIO_NOEXCEPT { return false; } }; namespace boost { namespace asio { namespace traits { #if !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) template struct equality_comparable > { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) template struct execute_member, Function> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false); typedef void result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) template struct query_free< ex_fq_fr, Param, typename boost::asio::enable_if< boost::asio::is_convertible::value || boost::asio::is_convertible::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); typedef CurrentType result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT) template struct require_free< ex_fq_fr, Param, typename boost::asio::enable_if< boost::asio::is_convertible::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); typedef ex_fq_fr result_type; }; template struct require_free< ex_fq_fr, Param, typename boost::asio::enable_if< boost::asio::is_convertible::value && !boost::asio::is_same::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); typedef ex_fq_fr result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT) #if !defined(BOOST_ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT) template struct prefer_free< ex_fq_fr, Param, typename boost::asio::enable_if< boost::asio::is_convertible::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); typedef ex_fq_fr result_type; }; template struct prefer_free< ex_fq_fr, Param, typename boost::asio::enable_if< boost::asio::is_convertible::value && !boost::asio::is_same::value >::type> { BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); typedef ex_fq_fr result_type; }; #endif // !defined(BOOST_ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT) } // namespace traits } // namespace asio } // namespace boost template void test_can_query() { BOOST_ASIO_CONSTEXPR bool b1 = boost::asio::can_query::value; BOOST_ASIO_CHECK(b1 == ExpectedResult); BOOST_ASIO_CONSTEXPR bool b2 = boost::asio::can_query::value; BOOST_ASIO_CHECK(b2 == ExpectedResult); BOOST_ASIO_CONSTEXPR bool b3 = boost::asio::can_query::value; BOOST_ASIO_CHECK(b3 == ExpectedResult); BOOST_ASIO_CONSTEXPR bool b4 = boost::asio::can_query::value; BOOST_ASIO_CHECK(b4 == ExpectedResult); } template void test_query() { exec::blocking_adaptation_t result1 = boost::asio::query(Executor(), Param()); BOOST_ASIO_CHECK(result1 == ExpectedResult()); Executor ex1 = {}; exec::blocking_adaptation_t result2 = boost::asio::query(ex1, Param()); BOOST_ASIO_CHECK(result2 == ExpectedResult()); const Executor ex2 = {}; exec::blocking_adaptation_t result3 = boost::asio::query(ex2, Param()); BOOST_ASIO_CHECK(result3 == ExpectedResult()); } template void test_constexpr_query() { #if defined(BOOST_ASIO_HAS_CONSTEXPR) constexpr Executor ex1 = {}; constexpr exec::blocking_adaptation_t result1 = boost::asio::query(ex1, Param()); BOOST_ASIO_CHECK(result1 == ExpectedResult()); #endif // defined(BOOST_ASIO_HAS_CONSTEXPR) } template void test_can_require() { BOOST_ASIO_CONSTEXPR bool b1 = boost::asio::can_require::value; BOOST_ASIO_CHECK(b1 == ExpectedResult); BOOST_ASIO_CONSTEXPR bool b2 = boost::asio::can_require::value; BOOST_ASIO_CHECK(b2 == ExpectedResult); BOOST_ASIO_CONSTEXPR bool b3 = boost::asio::can_require::value; BOOST_ASIO_CHECK(b3 == ExpectedResult); BOOST_ASIO_CONSTEXPR bool b4 = boost::asio::can_require::value; BOOST_ASIO_CHECK(b4 == ExpectedResult); } void do_nothing() { } template void test_require() { BOOST_ASIO_CHECK( boost::asio::query( boost::asio::require(Executor(), Param()), Param()) == ExpectedResult()); Executor ex1 = {}; BOOST_ASIO_CHECK( boost::asio::query( boost::asio::require(ex1, Param()), Param()) == ExpectedResult()); BOOST_ASIO_CHECK(( boost::asio::execution::is_executor< typename boost::asio::decay< typename boost::asio::require_result::type >::type >::value)); const Executor ex2 = {}; BOOST_ASIO_CHECK( boost::asio::query( boost::asio::require(ex2, Param()), Param()) == ExpectedResult()); BOOST_ASIO_CHECK(( boost::asio::execution::is_executor< typename boost::asio::decay< typename boost::asio::require_result::type >::type >::value)); } template void test_can_prefer() { BOOST_ASIO_CONSTEXPR bool b1 = boost::asio::can_prefer::value; BOOST_ASIO_CHECK(b1 == ExpectedResult); BOOST_ASIO_CONSTEXPR bool b2 = boost::asio::can_prefer::value; BOOST_ASIO_CHECK(b2 == ExpectedResult); BOOST_ASIO_CONSTEXPR bool b3 = boost::asio::can_prefer::value; BOOST_ASIO_CHECK(b3 == ExpectedResult); BOOST_ASIO_CONSTEXPR bool b4 = boost::asio::can_prefer::value; BOOST_ASIO_CHECK(b4 == ExpectedResult); } template void test_prefer() { BOOST_ASIO_CHECK( s(boost::asio::query( boost::asio::prefer(Executor(), Param()), s())) == s(ExpectedResult())); Executor ex1 = {}; BOOST_ASIO_CHECK( s(boost::asio::query( boost::asio::prefer(ex1, Param()), s())) == s(ExpectedResult())); const Executor ex2 = {}; BOOST_ASIO_CHECK( s(boost::asio::query( boost::asio::prefer(ex2, Param()), s())) == s(ExpectedResult())); } void test_vars() { BOOST_ASIO_CHECK(s() == exec::blocking_adaptation); BOOST_ASIO_CHECK(n1() == exec::blocking_adaptation.disallowed); BOOST_ASIO_CHECK(n2() == exec::blocking_adaptation.allowed); } BOOST_ASIO_TEST_SUITE ( "blocking_adaptation", BOOST_ASIO_TEST_CASE3(test_can_query) BOOST_ASIO_TEST_CASE3(test_can_query) BOOST_ASIO_TEST_CASE3(test_can_query) BOOST_ASIO_TEST_CASE3(test_query) BOOST_ASIO_TEST_CASE3(test_query) BOOST_ASIO_TEST_CASE3(test_constexpr_query) BOOST_ASIO_TEST_CASE3(test_constexpr_query) BOOST_ASIO_TEST_CASE3(test_can_require) BOOST_ASIO_TEST_CASE3(test_can_require) BOOST_ASIO_TEST_CASE3(test_can_require) BOOST_ASIO_TEST_CASE3(test_require) BOOST_ASIO_TEST_CASE3(test_require) BOOST_ASIO_TEST_CASE3(test_can_prefer) BOOST_ASIO_TEST_CASE3(test_can_prefer) BOOST_ASIO_TEST_CASE3(test_can_prefer) BOOST_ASIO_TEST_CASE3(test_prefer) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_query, n1, n1>) BOOST_ASIO_TEST_CASE5(test_query, n2, n1>) BOOST_ASIO_TEST_CASE5(test_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_query, n1, n2>) BOOST_ASIO_TEST_CASE5(test_query, n2, n2>) BOOST_ASIO_TEST_CASE5(test_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_query, n1, n1>) BOOST_ASIO_TEST_CASE5(test_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_query, n1, n2>) BOOST_ASIO_TEST_CASE5(test_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_query, n2, n1>) BOOST_ASIO_TEST_CASE5(test_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_query, n2, n2>) BOOST_ASIO_TEST_CASE5(test_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_query, n1, n1>) BOOST_ASIO_TEST_CASE5(test_query, n2, n1>) BOOST_ASIO_TEST_CASE5(test_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_query, n1, n2>) BOOST_ASIO_TEST_CASE5(test_query, n2, n2>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, n1, n1>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, n2, n1>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, n1, n2>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, n2, n2>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, n1, n1>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, n1, n2>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, n2, n1>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, n2, n2>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, n1, n1>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, n2, n1>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, n1, n2>) BOOST_ASIO_TEST_CASE5(test_constexpr_query, n2, n2>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_require, n1, n1>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n1, n1>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n1, n1>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_query, n1, n1>) BOOST_ASIO_TEST_CASE5(test_query, n2, n1>) BOOST_ASIO_TEST_CASE5(test_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_query, n1, n2>) BOOST_ASIO_TEST_CASE5(test_query, n2, n2>) BOOST_ASIO_TEST_CASE5(test_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_query, n1, n1>) BOOST_ASIO_TEST_CASE5(test_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_query, n1, n2>) BOOST_ASIO_TEST_CASE5(test_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_query, n2, n1>) BOOST_ASIO_TEST_CASE5(test_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_query, n2, n2>) BOOST_ASIO_TEST_CASE5(test_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_query, n1, n1>) BOOST_ASIO_TEST_CASE5(test_query, n2, n1>) BOOST_ASIO_TEST_CASE5(test_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_query, n1, n2>) BOOST_ASIO_TEST_CASE5(test_query, n2, n2>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_query, s, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE5(test_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_query, n1, n1>) BOOST_ASIO_TEST_CASE5(test_query, n2, n1>) BOOST_ASIO_TEST_CASE5(test_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_query, n1, n2>) BOOST_ASIO_TEST_CASE5(test_query, n2, n2>) BOOST_ASIO_TEST_CASE5(test_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_query, n1, n1>) BOOST_ASIO_TEST_CASE5(test_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_query, n1, n2>) BOOST_ASIO_TEST_CASE5(test_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_query, n2, n1>) BOOST_ASIO_TEST_CASE5(test_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_query, n2, n2>) BOOST_ASIO_TEST_CASE5(test_query, s, n1>) BOOST_ASIO_TEST_CASE5(test_query, n1, n1>) BOOST_ASIO_TEST_CASE5(test_query, n2, n1>) BOOST_ASIO_TEST_CASE5(test_query, s, n2>) BOOST_ASIO_TEST_CASE5(test_query, n1, n2>) BOOST_ASIO_TEST_CASE5(test_query, n2, n2>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_can_require, s, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE5(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_require, n2, n2>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE5(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE5(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE4(test_can_query, s, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n2, false>) BOOST_ASIO_TEST_CASE4(test_can_query, s, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE4(test_can_query, s, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE4(test_can_query, s, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n1, false>) BOOST_ASIO_TEST_CASE4(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE4(test_query, s, n1>) BOOST_ASIO_TEST_CASE4(test_query, n1, n1>) BOOST_ASIO_TEST_CASE4(test_query, s, n1>) BOOST_ASIO_TEST_CASE4(test_query, n1, n1>) BOOST_ASIO_TEST_CASE4(test_query, s, n2>) BOOST_ASIO_TEST_CASE4(test_query, n2, n2>) BOOST_ASIO_TEST_CASE4(test_query, s, n2>) BOOST_ASIO_TEST_CASE4(test_query, n2, n2>) BOOST_ASIO_TEST_CASE4(test_can_require, s, false>) BOOST_ASIO_TEST_CASE4(test_can_require, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE4(test_can_require, s, false>) BOOST_ASIO_TEST_CASE4(test_can_require, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE4(test_can_require, s, false>) BOOST_ASIO_TEST_CASE4(test_can_require, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE4(test_can_require, s, false>) BOOST_ASIO_TEST_CASE4(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE4(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE4(test_require, n1, n1>) BOOST_ASIO_TEST_CASE4(test_require, n2, n2>) BOOST_ASIO_TEST_CASE4(test_require, n1, n1>) BOOST_ASIO_TEST_CASE4(test_require, n2, n2>) BOOST_ASIO_TEST_CASE4(test_require, n1, n1>) BOOST_ASIO_TEST_CASE4(test_require, n2, n2>) BOOST_ASIO_TEST_CASE4(test_require, n2, n2>) BOOST_ASIO_TEST_CASE4(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE4(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE4(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE4(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE4(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE4(test_can_query, s, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n2, false>) BOOST_ASIO_TEST_CASE4(test_can_query, s, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE4(test_can_query, s, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE4(test_can_query, s, true>) BOOST_ASIO_TEST_CASE4(test_can_query, n1, false>) BOOST_ASIO_TEST_CASE4(test_can_query, n2, true>) BOOST_ASIO_TEST_CASE4(test_query, s, n1>) BOOST_ASIO_TEST_CASE4(test_query, n1, n1>) BOOST_ASIO_TEST_CASE4(test_query, s, n1>) BOOST_ASIO_TEST_CASE4(test_query, n1, n1>) BOOST_ASIO_TEST_CASE4(test_query, s, n2>) BOOST_ASIO_TEST_CASE4(test_query, n2, n2>) BOOST_ASIO_TEST_CASE4(test_query, s, n2>) BOOST_ASIO_TEST_CASE4(test_query, n2, n2>) BOOST_ASIO_TEST_CASE4(test_can_require, s, false>) BOOST_ASIO_TEST_CASE4(test_can_require, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE4(test_can_require, s, false>) BOOST_ASIO_TEST_CASE4(test_can_require, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE4(test_can_require, s, false>) BOOST_ASIO_TEST_CASE4(test_can_require, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE4(test_can_require, s, false>) BOOST_ASIO_TEST_CASE4(test_can_require, n1, false>) BOOST_ASIO_TEST_CASE4(test_can_require, n2, true>) BOOST_ASIO_TEST_CASE4(test_require, n1, n1>) BOOST_ASIO_TEST_CASE4(test_require, n2, n2>) BOOST_ASIO_TEST_CASE4(test_require, n1, n1>) BOOST_ASIO_TEST_CASE4(test_require, n2, n2>) BOOST_ASIO_TEST_CASE4(test_require, n1, n1>) BOOST_ASIO_TEST_CASE4(test_require, n2, n2>) BOOST_ASIO_TEST_CASE4(test_require, n2, n2>) BOOST_ASIO_TEST_CASE4(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, s, false>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n1, true>) BOOST_ASIO_TEST_CASE4(test_can_prefer, n2, false>) BOOST_ASIO_TEST_CASE4(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE4(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE4(test_prefer, n1, n1>) BOOST_ASIO_TEST_CASE4(test_prefer, n1, n2>) BOOST_ASIO_TEST_CASE(test_vars) )