]>
Commit | Line | Data |
---|---|---|
20effc67 TL |
1 | // |
2 | // relationship.cpp | |
3 | // ~~~~~~~~~~~~~~~~ | |
4 | // | |
5 | // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com) | |
6 | // | |
7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying | |
8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
9 | // | |
10 | ||
11 | // Disable autolinking for unit tests. | |
12 | #if !defined(BOOST_ALL_NO_LIB) | |
13 | #define BOOST_ALL_NO_LIB 1 | |
14 | #endif // !defined(BOOST_ALL_NO_LIB) | |
15 | ||
16 | // Test that header file is self-contained. | |
17 | #include <boost/asio/execution/relationship.hpp> | |
18 | ||
19 | #include <boost/asio/prefer.hpp> | |
20 | #include <boost/asio/query.hpp> | |
21 | #include <boost/asio/require.hpp> | |
22 | #include "../unit_test.hpp" | |
23 | ||
24 | namespace exec = boost::asio::execution; | |
25 | ||
26 | typedef exec::relationship_t s; | |
27 | typedef exec::relationship_t::fork_t n1; | |
28 | typedef exec::relationship_t::continuation_t n2; | |
29 | ||
30 | struct ex_nq_nr | |
31 | { | |
32 | template <typename F> | |
33 | void execute(const F&) const | |
34 | { | |
35 | } | |
36 | ||
37 | friend bool operator==(const ex_nq_nr&, const ex_nq_nr&) BOOST_ASIO_NOEXCEPT | |
38 | { | |
39 | return true; | |
40 | } | |
41 | ||
42 | friend bool operator!=(const ex_nq_nr&, const ex_nq_nr&) BOOST_ASIO_NOEXCEPT | |
43 | { | |
44 | return false; | |
45 | } | |
46 | }; | |
47 | ||
48 | #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT) | |
49 | ||
50 | namespace boost { | |
51 | namespace asio { | |
52 | namespace execution { | |
53 | ||
54 | template <> | |
55 | struct is_executor<ex_nq_nr> : boost::asio::true_type | |
56 | { | |
57 | }; | |
58 | ||
59 | } // namespace execution | |
60 | } // namespace asio | |
61 | } // namespace boost | |
62 | ||
63 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT) | |
64 | ||
65 | template <typename ResultType, typename ParamType, typename Result> | |
66 | struct ex_cq_nr | |
67 | { | |
68 | static BOOST_ASIO_CONSTEXPR ResultType query(ParamType) BOOST_ASIO_NOEXCEPT | |
69 | { | |
70 | return Result(); | |
71 | } | |
72 | ||
73 | template <typename F> | |
74 | void execute(const F&) const | |
75 | { | |
76 | } | |
77 | ||
78 | friend bool operator==(const ex_cq_nr&, const ex_cq_nr&) BOOST_ASIO_NOEXCEPT | |
79 | { | |
80 | return true; | |
81 | } | |
82 | ||
83 | friend bool operator!=(const ex_cq_nr&, const ex_cq_nr&) BOOST_ASIO_NOEXCEPT | |
84 | { | |
85 | return false; | |
86 | } | |
87 | }; | |
88 | ||
89 | #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT) | |
90 | ||
91 | namespace boost { | |
92 | namespace asio { | |
93 | namespace execution { | |
94 | ||
95 | template <typename ResultType, typename ParamType, typename Result> | |
96 | struct is_executor<ex_cq_nr<ResultType, ParamType, Result> > | |
97 | : boost::asio::true_type | |
98 | { | |
99 | }; | |
100 | ||
101 | } // namespace execution | |
102 | } // namespace asio | |
103 | } // namespace boost | |
104 | ||
105 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT) | |
106 | ||
107 | namespace boost { | |
108 | namespace asio { | |
109 | namespace traits { | |
110 | ||
111 | #if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) | |
112 | ||
113 | template <typename ResultType, typename ParamType, | |
114 | typename Result, typename Param> | |
115 | struct query_static_constexpr_member< | |
116 | ex_cq_nr<ResultType, ParamType, Result>, Param, | |
117 | typename boost::asio::enable_if< | |
118 | boost::asio::is_convertible<Param, ParamType>::value | |
119 | >::type> | |
120 | { | |
121 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); | |
122 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); | |
123 | ||
124 | typedef Result result_type; // Must return raw result type. | |
125 | ||
126 | static BOOST_ASIO_CONSTEXPR result_type value() | |
127 | { | |
128 | return Result(); | |
129 | } | |
130 | }; | |
131 | ||
132 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT) | |
133 | ||
134 | } // namespace traits | |
135 | } // namespace asio | |
136 | } // namespace boost | |
137 | ||
138 | template <typename ResultType, typename ParamType, typename Result> | |
139 | struct ex_mq_nr | |
140 | { | |
141 | ResultType query(ParamType) const BOOST_ASIO_NOEXCEPT | |
142 | { | |
143 | return Result(); | |
144 | } | |
145 | ||
146 | template <typename F> | |
147 | void execute(const F&) const | |
148 | { | |
149 | } | |
150 | ||
151 | friend bool operator==(const ex_mq_nr&, const ex_mq_nr&) BOOST_ASIO_NOEXCEPT | |
152 | { | |
153 | return true; | |
154 | } | |
155 | ||
156 | friend bool operator!=(const ex_mq_nr&, const ex_mq_nr&) BOOST_ASIO_NOEXCEPT | |
157 | { | |
158 | return false; | |
159 | } | |
160 | }; | |
161 | ||
162 | #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT) | |
163 | ||
164 | namespace boost { | |
165 | namespace asio { | |
166 | namespace execution { | |
167 | ||
168 | template <typename ResultType, typename ParamType, typename Result> | |
169 | struct is_executor<ex_mq_nr<ResultType, ParamType, Result> > | |
170 | : boost::asio::true_type | |
171 | { | |
172 | }; | |
173 | ||
174 | } // namespace execution | |
175 | } // namespace asio | |
176 | } // namespace boost | |
177 | ||
178 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT) | |
179 | ||
180 | namespace boost { | |
181 | namespace asio { | |
182 | namespace traits { | |
183 | ||
184 | #if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) | |
185 | ||
186 | template <typename ResultType, typename ParamType, | |
187 | typename Result, typename Param> | |
188 | struct query_member< | |
189 | ex_mq_nr<ResultType, ParamType, Result>, Param, | |
190 | typename boost::asio::enable_if< | |
191 | boost::asio::is_convertible<Param, ParamType>::value | |
192 | >::type> | |
193 | { | |
194 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); | |
195 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); | |
196 | ||
197 | typedef ResultType result_type; | |
198 | }; | |
199 | ||
200 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) | |
201 | ||
202 | } // namespace traits | |
203 | } // namespace asio | |
204 | } // namespace boost | |
205 | ||
206 | template <typename ResultType, typename ParamType, typename Result> | |
207 | struct ex_fq_nr | |
208 | { | |
209 | friend ResultType query(const ex_fq_nr&, ParamType) BOOST_ASIO_NOEXCEPT | |
210 | { | |
211 | return Result(); | |
212 | } | |
213 | ||
214 | template <typename F> | |
215 | void execute(const F&) const | |
216 | { | |
217 | } | |
218 | ||
219 | friend bool operator==(const ex_fq_nr&, const ex_fq_nr&) BOOST_ASIO_NOEXCEPT | |
220 | { | |
221 | return true; | |
222 | } | |
223 | ||
224 | friend bool operator!=(const ex_fq_nr&, const ex_fq_nr&) BOOST_ASIO_NOEXCEPT | |
225 | { | |
226 | return false; | |
227 | } | |
228 | }; | |
229 | ||
230 | #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT) | |
231 | ||
232 | namespace boost { | |
233 | namespace asio { | |
234 | namespace execution { | |
235 | ||
236 | template <typename ResultType, typename ParamType, typename Result> | |
237 | struct is_executor<ex_fq_nr<ResultType, ParamType, Result> > | |
238 | : boost::asio::true_type | |
239 | { | |
240 | }; | |
241 | ||
242 | } // namespace execution | |
243 | } // namespace asio | |
244 | } // namespace boost | |
245 | ||
246 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT) | |
247 | ||
248 | namespace boost { | |
249 | namespace asio { | |
250 | namespace traits { | |
251 | ||
252 | #if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) | |
253 | ||
254 | template <typename ResultType, typename ParamType, | |
255 | typename Result, typename Param> | |
256 | struct query_free< | |
257 | ex_fq_nr<ResultType, ParamType, Result>, Param, | |
258 | typename boost::asio::enable_if< | |
259 | boost::asio::is_convertible<Param, ParamType>::value | |
260 | >::type> | |
261 | { | |
262 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); | |
263 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); | |
264 | ||
265 | typedef ResultType result_type; | |
266 | }; | |
267 | ||
268 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) | |
269 | ||
270 | } // namespace traits | |
271 | } // namespace asio | |
272 | } // namespace boost | |
273 | ||
274 | template <typename CurrentType, typename OtherType> | |
275 | struct ex_mq_mr | |
276 | { | |
277 | CurrentType query(CurrentType) const BOOST_ASIO_NOEXCEPT | |
278 | { | |
279 | return CurrentType(); | |
280 | } | |
281 | ||
282 | CurrentType query(OtherType) const BOOST_ASIO_NOEXCEPT | |
283 | { | |
284 | return CurrentType(); | |
285 | } | |
286 | ||
287 | ex_mq_mr<CurrentType, OtherType> require( | |
288 | CurrentType) const BOOST_ASIO_NOEXCEPT | |
289 | { | |
290 | return ex_mq_mr<CurrentType, OtherType>(); | |
291 | } | |
292 | ||
293 | ex_mq_mr<OtherType, CurrentType> require( | |
294 | OtherType) const BOOST_ASIO_NOEXCEPT | |
295 | { | |
296 | return ex_mq_mr<OtherType, CurrentType>(); | |
297 | } | |
298 | ||
299 | template <typename F> | |
300 | void execute(const F&) const | |
301 | { | |
302 | } | |
303 | ||
304 | friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) BOOST_ASIO_NOEXCEPT | |
305 | { | |
306 | return true; | |
307 | } | |
308 | ||
309 | friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) BOOST_ASIO_NOEXCEPT | |
310 | { | |
311 | return false; | |
312 | } | |
313 | }; | |
314 | ||
315 | template <typename CurrentType> | |
316 | struct ex_mq_mr<CurrentType, CurrentType> | |
317 | { | |
318 | CurrentType query(CurrentType) const BOOST_ASIO_NOEXCEPT | |
319 | { | |
320 | return CurrentType(); | |
321 | } | |
322 | ||
323 | ex_mq_mr<CurrentType, CurrentType> require( | |
324 | CurrentType) const BOOST_ASIO_NOEXCEPT | |
325 | { | |
326 | return ex_mq_mr<CurrentType, CurrentType>(); | |
327 | } | |
328 | ||
329 | template <typename F> | |
330 | void execute(const F&) const | |
331 | { | |
332 | } | |
333 | ||
334 | friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) BOOST_ASIO_NOEXCEPT | |
335 | { | |
336 | return true; | |
337 | } | |
338 | ||
339 | friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) BOOST_ASIO_NOEXCEPT | |
340 | { | |
341 | return false; | |
342 | } | |
343 | }; | |
344 | ||
345 | #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT) | |
346 | ||
347 | namespace boost { | |
348 | namespace asio { | |
349 | namespace execution { | |
350 | ||
351 | template <typename CurrentType, typename OtherType> | |
352 | struct is_executor<ex_mq_mr<CurrentType, OtherType> > | |
353 | : boost::asio::true_type | |
354 | { | |
355 | }; | |
356 | ||
357 | } // namespace execution | |
358 | } // namespace asio | |
359 | } // namespace boost | |
360 | ||
361 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT) | |
362 | ||
363 | namespace boost { | |
364 | namespace asio { | |
365 | namespace traits { | |
366 | ||
367 | #if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) | |
368 | ||
369 | template <typename CurrentType, typename OtherType, typename Param> | |
370 | struct query_member< | |
371 | ex_mq_mr<CurrentType, OtherType>, Param, | |
372 | typename boost::asio::enable_if< | |
373 | boost::asio::is_convertible<Param, CurrentType>::value | |
374 | || boost::asio::is_convertible<Param, OtherType>::value | |
375 | >::type> | |
376 | { | |
377 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); | |
378 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); | |
379 | ||
380 | typedef CurrentType result_type; | |
381 | }; | |
382 | ||
383 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) | |
384 | ||
385 | #if !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) | |
386 | ||
387 | template <typename CurrentType, typename OtherType, typename Param> | |
388 | struct require_member< | |
389 | ex_mq_mr<CurrentType, OtherType>, Param, | |
390 | typename boost::asio::enable_if< | |
391 | boost::asio::is_convertible<Param, CurrentType>::value | |
392 | >::type> | |
393 | { | |
394 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); | |
395 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); | |
396 | ||
397 | typedef ex_mq_mr<CurrentType, OtherType> result_type; | |
398 | }; | |
399 | ||
400 | template <typename CurrentType, typename OtherType, typename Param> | |
401 | struct require_member< | |
402 | ex_mq_mr<CurrentType, OtherType>, Param, | |
403 | typename boost::asio::enable_if< | |
404 | boost::asio::is_convertible<Param, OtherType>::value | |
405 | && !boost::asio::is_same<CurrentType, OtherType>::value | |
406 | >::type> | |
407 | { | |
408 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); | |
409 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); | |
410 | ||
411 | typedef ex_mq_mr<OtherType, CurrentType> result_type; | |
412 | }; | |
413 | ||
414 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) | |
415 | ||
416 | } // namespace traits | |
417 | } // namespace asio | |
418 | } // namespace boost | |
419 | ||
420 | template <typename CurrentType, typename OtherType> | |
421 | struct ex_fq_fr | |
422 | { | |
423 | friend CurrentType query(const ex_fq_fr&, CurrentType) BOOST_ASIO_NOEXCEPT | |
424 | { | |
425 | return CurrentType(); | |
426 | } | |
427 | ||
428 | friend CurrentType query(const ex_fq_fr&, OtherType) BOOST_ASIO_NOEXCEPT | |
429 | { | |
430 | return CurrentType(); | |
431 | } | |
432 | ||
433 | friend ex_fq_fr<CurrentType, OtherType> require( | |
434 | const ex_fq_fr&, CurrentType) BOOST_ASIO_NOEXCEPT | |
435 | { | |
436 | return ex_fq_fr<CurrentType, OtherType>(); | |
437 | } | |
438 | ||
439 | friend ex_fq_fr<OtherType, CurrentType> require( | |
440 | const ex_fq_fr&, OtherType) BOOST_ASIO_NOEXCEPT | |
441 | { | |
442 | return ex_fq_fr<OtherType, CurrentType>(); | |
443 | } | |
444 | ||
445 | friend ex_fq_fr<CurrentType, OtherType> prefer( | |
446 | const ex_fq_fr&, CurrentType) BOOST_ASIO_NOEXCEPT | |
447 | { | |
448 | return ex_fq_fr<CurrentType, OtherType>(); | |
449 | } | |
450 | ||
451 | friend ex_fq_fr<OtherType, CurrentType> prefer( | |
452 | const ex_fq_fr&, OtherType) BOOST_ASIO_NOEXCEPT | |
453 | { | |
454 | return ex_fq_fr<OtherType, CurrentType>(); | |
455 | } | |
456 | ||
457 | template <typename F> | |
458 | void execute(const F&) const | |
459 | { | |
460 | } | |
461 | ||
462 | friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) BOOST_ASIO_NOEXCEPT | |
463 | { | |
464 | return true; | |
465 | } | |
466 | ||
467 | friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) BOOST_ASIO_NOEXCEPT | |
468 | { | |
469 | return false; | |
470 | } | |
471 | }; | |
472 | ||
473 | template <typename CurrentType> | |
474 | struct ex_fq_fr<CurrentType, CurrentType> | |
475 | { | |
476 | friend CurrentType query(const ex_fq_fr&, CurrentType) BOOST_ASIO_NOEXCEPT | |
477 | { | |
478 | return CurrentType(); | |
479 | } | |
480 | ||
481 | friend ex_fq_fr<CurrentType, CurrentType> require( | |
482 | const ex_fq_fr&, CurrentType) BOOST_ASIO_NOEXCEPT | |
483 | { | |
484 | return ex_fq_fr<CurrentType, CurrentType>(); | |
485 | } | |
486 | ||
487 | friend ex_fq_fr<CurrentType, CurrentType> prefer( | |
488 | const ex_fq_fr&, CurrentType) BOOST_ASIO_NOEXCEPT | |
489 | { | |
490 | return ex_fq_fr<CurrentType, CurrentType>(); | |
491 | } | |
492 | ||
493 | template <typename F> | |
494 | void execute(const F&) const | |
495 | { | |
496 | } | |
497 | ||
498 | friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) BOOST_ASIO_NOEXCEPT | |
499 | { | |
500 | return true; | |
501 | } | |
502 | ||
503 | friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) BOOST_ASIO_NOEXCEPT | |
504 | { | |
505 | return false; | |
506 | } | |
507 | }; | |
508 | ||
509 | #if !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT) | |
510 | ||
511 | namespace boost { | |
512 | namespace asio { | |
513 | namespace execution { | |
514 | ||
515 | template <typename CurrentType, typename OtherType> | |
516 | struct is_executor<ex_fq_fr<CurrentType, OtherType> > | |
517 | : boost::asio::true_type | |
518 | { | |
519 | }; | |
520 | ||
521 | } // namespace execution | |
522 | } // namespace asio | |
523 | } // namespace boost | |
524 | ||
525 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT) | |
526 | ||
527 | namespace boost { | |
528 | namespace asio { | |
529 | namespace traits { | |
530 | ||
531 | #if !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) | |
532 | ||
533 | template <typename CurrentType, typename OtherType, typename Param> | |
534 | struct query_free< | |
535 | ex_fq_fr<CurrentType, OtherType>, Param, | |
536 | typename boost::asio::enable_if< | |
537 | boost::asio::is_convertible<Param, CurrentType>::value | |
538 | || boost::asio::is_convertible<Param, OtherType>::value | |
539 | >::type> | |
540 | { | |
541 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); | |
542 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); | |
543 | ||
544 | typedef CurrentType result_type; | |
545 | }; | |
546 | ||
547 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT) | |
548 | ||
549 | #if !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT) | |
550 | ||
551 | template <typename CurrentType, typename OtherType, typename Param> | |
552 | struct require_free< | |
553 | ex_fq_fr<CurrentType, OtherType>, Param, | |
554 | typename boost::asio::enable_if< | |
555 | boost::asio::is_convertible<Param, CurrentType>::value | |
556 | >::type> | |
557 | { | |
558 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); | |
559 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); | |
560 | ||
561 | typedef ex_fq_fr<CurrentType, OtherType> result_type; | |
562 | }; | |
563 | ||
564 | template <typename CurrentType, typename OtherType, typename Param> | |
565 | struct require_free< | |
566 | ex_fq_fr<CurrentType, OtherType>, Param, | |
567 | typename boost::asio::enable_if< | |
568 | boost::asio::is_convertible<Param, OtherType>::value | |
569 | && !boost::asio::is_same<CurrentType, OtherType>::value | |
570 | >::type> | |
571 | { | |
572 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); | |
573 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); | |
574 | ||
575 | typedef ex_fq_fr<OtherType, CurrentType> result_type; | |
576 | }; | |
577 | ||
578 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT) | |
579 | ||
580 | #if !defined(BOOST_ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT) | |
581 | ||
582 | template <typename CurrentType, typename OtherType, typename Param> | |
583 | struct prefer_free< | |
584 | ex_fq_fr<CurrentType, OtherType>, Param, | |
585 | typename boost::asio::enable_if< | |
586 | boost::asio::is_convertible<Param, CurrentType>::value | |
587 | >::type> | |
588 | { | |
589 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); | |
590 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); | |
591 | ||
592 | typedef ex_fq_fr<CurrentType, OtherType> result_type; | |
593 | }; | |
594 | ||
595 | template <typename CurrentType, typename OtherType, typename Param> | |
596 | struct prefer_free< | |
597 | ex_fq_fr<CurrentType, OtherType>, Param, | |
598 | typename boost::asio::enable_if< | |
599 | boost::asio::is_convertible<Param, OtherType>::value | |
600 | && !boost::asio::is_same<CurrentType, OtherType>::value | |
601 | >::type> | |
602 | { | |
603 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_valid = true); | |
604 | BOOST_ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true); | |
605 | ||
606 | typedef ex_fq_fr<OtherType, CurrentType> result_type; | |
607 | }; | |
608 | ||
609 | #endif // !defined(BOOST_ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT) | |
610 | ||
611 | } // namespace traits | |
612 | } // namespace asio | |
613 | } // namespace boost | |
614 | ||
615 | template <typename Executor, typename Param, bool ExpectedResult> | |
616 | void test_can_query() | |
617 | { | |
618 | BOOST_ASIO_CONSTEXPR bool b1 = | |
619 | boost::asio::can_query<Executor, Param>::value; | |
620 | BOOST_ASIO_CHECK(b1 == ExpectedResult); | |
621 | ||
622 | BOOST_ASIO_CONSTEXPR bool b2 = | |
623 | boost::asio::can_query<const Executor, Param>::value; | |
624 | BOOST_ASIO_CHECK(b2 == ExpectedResult); | |
625 | ||
626 | BOOST_ASIO_CONSTEXPR bool b3 = | |
627 | boost::asio::can_query<Executor&, Param>::value; | |
628 | BOOST_ASIO_CHECK(b3 == ExpectedResult); | |
629 | ||
630 | BOOST_ASIO_CONSTEXPR bool b4 = | |
631 | boost::asio::can_query<const Executor&, Param>::value; | |
632 | BOOST_ASIO_CHECK(b4 == ExpectedResult); | |
633 | } | |
634 | ||
635 | template <typename Executor, typename Param, typename ExpectedResult> | |
636 | void test_query() | |
637 | { | |
638 | exec::relationship_t result1 = boost::asio::query(Executor(), Param()); | |
639 | BOOST_ASIO_CHECK(result1 == ExpectedResult()); | |
640 | ||
641 | Executor ex1 = {}; | |
642 | exec::relationship_t result2 = boost::asio::query(ex1, Param()); | |
643 | BOOST_ASIO_CHECK(result2 == ExpectedResult()); | |
644 | ||
645 | const Executor ex2 = {}; | |
646 | exec::relationship_t result3 = boost::asio::query(ex2, Param()); | |
647 | BOOST_ASIO_CHECK(result3 == ExpectedResult()); | |
648 | } | |
649 | ||
650 | template <typename Executor, typename Param, typename ExpectedResult> | |
651 | void test_constexpr_query() | |
652 | { | |
653 | #if defined(BOOST_ASIO_HAS_CONSTEXPR) | |
654 | constexpr Executor ex1 = {}; | |
655 | constexpr exec::relationship_t result1 = boost::asio::query(ex1, Param()); | |
656 | BOOST_ASIO_CHECK(result1 == ExpectedResult()); | |
657 | #endif // defined(BOOST_ASIO_HAS_CONSTEXPR) | |
658 | } | |
659 | ||
660 | template <typename Executor, typename Param, bool ExpectedResult> | |
661 | void test_can_require() | |
662 | { | |
663 | BOOST_ASIO_CONSTEXPR bool b1 = | |
664 | boost::asio::can_require<Executor, Param>::value; | |
665 | BOOST_ASIO_CHECK(b1 == ExpectedResult); | |
666 | ||
667 | BOOST_ASIO_CONSTEXPR bool b2 = | |
668 | boost::asio::can_require<const Executor, Param>::value; | |
669 | BOOST_ASIO_CHECK(b2 == ExpectedResult); | |
670 | ||
671 | BOOST_ASIO_CONSTEXPR bool b3 = | |
672 | boost::asio::can_require<Executor&, Param>::value; | |
673 | BOOST_ASIO_CHECK(b3 == ExpectedResult); | |
674 | ||
675 | BOOST_ASIO_CONSTEXPR bool b4 = | |
676 | boost::asio::can_require<const Executor&, Param>::value; | |
677 | BOOST_ASIO_CHECK(b4 == ExpectedResult); | |
678 | } | |
679 | ||
680 | template <typename Executor, typename Param, typename ExpectedResult> | |
681 | void test_require() | |
682 | { | |
683 | BOOST_ASIO_CHECK( | |
684 | boost::asio::query( | |
685 | boost::asio::require(Executor(), Param()), | |
686 | Param()) == ExpectedResult()); | |
687 | ||
688 | Executor ex1 = {}; | |
689 | BOOST_ASIO_CHECK( | |
690 | boost::asio::query( | |
691 | boost::asio::require(ex1, Param()), | |
692 | Param()) == ExpectedResult()); | |
693 | ||
694 | const Executor ex2 = {}; | |
695 | BOOST_ASIO_CHECK( | |
696 | boost::asio::query( | |
697 | boost::asio::require(ex2, Param()), | |
698 | Param()) == ExpectedResult()); | |
699 | } | |
700 | ||
701 | template <typename Executor, typename Param, bool ExpectedResult> | |
702 | void test_can_prefer() | |
703 | { | |
704 | BOOST_ASIO_CONSTEXPR bool b1 = | |
705 | boost::asio::can_prefer<Executor, Param>::value; | |
706 | BOOST_ASIO_CHECK(b1 == ExpectedResult); | |
707 | ||
708 | BOOST_ASIO_CONSTEXPR bool b2 = | |
709 | boost::asio::can_prefer<const Executor, Param>::value; | |
710 | BOOST_ASIO_CHECK(b2 == ExpectedResult); | |
711 | ||
712 | BOOST_ASIO_CONSTEXPR bool b3 = | |
713 | boost::asio::can_prefer<Executor&, Param>::value; | |
714 | BOOST_ASIO_CHECK(b3 == ExpectedResult); | |
715 | ||
716 | BOOST_ASIO_CONSTEXPR bool b4 = | |
717 | boost::asio::can_prefer<const Executor&, Param>::value; | |
718 | BOOST_ASIO_CHECK(b4 == ExpectedResult); | |
719 | } | |
720 | ||
721 | template <typename Executor, typename Param, typename ExpectedResult> | |
722 | void test_prefer() | |
723 | { | |
724 | BOOST_ASIO_CHECK( | |
725 | s(boost::asio::query( | |
726 | boost::asio::prefer(Executor(), Param()), | |
727 | s())) == s(ExpectedResult())); | |
728 | ||
729 | Executor ex1 = {}; | |
730 | BOOST_ASIO_CHECK( | |
731 | s(boost::asio::query( | |
732 | boost::asio::prefer(ex1, Param()), | |
733 | s())) == s(ExpectedResult())); | |
734 | ||
735 | const Executor ex2 = {}; | |
736 | BOOST_ASIO_CHECK( | |
737 | s(boost::asio::query( | |
738 | boost::asio::prefer(ex2, Param()), | |
739 | s())) == s(ExpectedResult())); | |
740 | } | |
741 | ||
742 | void test_vars() | |
743 | { | |
744 | BOOST_ASIO_CHECK(s() == exec::relationship); | |
745 | BOOST_ASIO_CHECK(n1() == exec::relationship.fork); | |
746 | BOOST_ASIO_CHECK(n2() == exec::relationship.continuation); | |
747 | } | |
748 | ||
749 | BOOST_ASIO_TEST_SUITE | |
750 | ( | |
751 | "relationship", | |
752 | ||
753 | BOOST_ASIO_TEST_CASE3(test_can_query<ex_nq_nr, s, true>) | |
754 | BOOST_ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n1, true>) | |
755 | BOOST_ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n2, false>) | |
756 | ||
757 | BOOST_ASIO_TEST_CASE3(test_query<ex_nq_nr, s, n1>) | |
758 | BOOST_ASIO_TEST_CASE3(test_query<ex_nq_nr, n1, n1>) | |
759 | ||
760 | BOOST_ASIO_TEST_CASE3(test_constexpr_query<ex_nq_nr, s, n1>) | |
761 | BOOST_ASIO_TEST_CASE3(test_constexpr_query<ex_nq_nr, n1, n1>) | |
762 | ||
763 | BOOST_ASIO_TEST_CASE3(test_can_require<ex_nq_nr, s, false>) | |
764 | BOOST_ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n1, true>) | |
765 | BOOST_ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n2, false>) | |
766 | ||
767 | BOOST_ASIO_TEST_CASE3(test_require<ex_nq_nr, n1, n1>) | |
768 | ||
769 | BOOST_ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, s, false>) | |
770 | BOOST_ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n1, true>) | |
771 | BOOST_ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n2, true>) | |
772 | ||
773 | BOOST_ASIO_TEST_CASE3(test_prefer<ex_nq_nr, n1, n1>) | |
774 | BOOST_ASIO_TEST_CASE3(test_prefer<ex_nq_nr, n2, n1>) | |
775 | ||
776 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, s, true>) | |
777 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n1, true>) | |
778 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n2, true>) | |
779 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, s, true>) | |
780 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n1, true>) | |
781 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n2, true>) | |
782 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, s, true>) | |
783 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n1, true>) | |
784 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n2, false>) | |
785 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, s, true>) | |
786 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n1, true>) | |
787 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n2, false>) | |
788 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, s, true>) | |
789 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n1, false>) | |
790 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n2, true>) | |
791 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, s, true>) | |
792 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n1, false>) | |
793 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n2, true>) | |
794 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, s, true>) | |
795 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n1, true>) | |
796 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n2, true>) | |
797 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, s, true>) | |
798 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n1, true>) | |
799 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n2, true>) | |
800 | ||
801 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, s, n1>) | |
802 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n1, n1>) | |
803 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n2, n1>) | |
804 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, s, n2>) | |
805 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n1, n2>) | |
806 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n2, n2>) | |
807 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n1>, s, n1>) | |
808 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n1>, n1, n1>) | |
809 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n2>, s, n2>) | |
810 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n2>, n1, n2>) | |
811 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n1>, s, n1>) | |
812 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n1>, n2, n1>) | |
813 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n2>, s, n2>) | |
814 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n2>, n2, n2>) | |
815 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, s, n1>) | |
816 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n1, n1>) | |
817 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n2, n1>) | |
818 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, s, n2>) | |
819 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n1, n2>) | |
820 | BOOST_ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n2, n2>) | |
821 | ||
822 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, s, n1>) | |
823 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n1, n1>) | |
824 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n2, n1>) | |
825 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, s, n2>) | |
826 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n1, n2>) | |
827 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n2, n2>) | |
828 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n1>, s, n1>) | |
829 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n1>, n1, n1>) | |
830 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n2>, s, n2>) | |
831 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n2>, n1, n2>) | |
832 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n1>, s, n1>) | |
833 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n1>, n2, n1>) | |
834 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n2>, s, n2>) | |
835 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n2>, n2, n2>) | |
836 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, s, n1>) | |
837 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n1, n1>) | |
838 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n2, n1>) | |
839 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, s, n2>) | |
840 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n1, n2>) | |
841 | BOOST_ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n2, n2>) | |
842 | ||
843 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, s, false>) | |
844 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n1, true>) | |
845 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n2, false>) | |
846 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, s, false>) | |
847 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n1, false>) | |
848 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n2, true>) | |
849 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, s, false>) | |
850 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n1, true>) | |
851 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n2, false>) | |
852 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, s, false>) | |
853 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n1, false>) | |
854 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n2, false>) | |
855 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, s, false>) | |
856 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n1, false>) | |
857 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n2, false>) | |
858 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, s, false>) | |
859 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n1, false>) | |
860 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n2, true>) | |
861 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, s, false>) | |
862 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n1, true>) | |
863 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n2, false>) | |
864 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, s, false>) | |
865 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n1, false>) | |
866 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n2, true>) | |
867 | ||
868 | BOOST_ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n1>, n1, n1>) | |
869 | BOOST_ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n2>, n2, n2>) | |
870 | BOOST_ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n1, n1>, n1, n1>) | |
871 | BOOST_ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n2, n2>, n2, n2>) | |
872 | BOOST_ASIO_TEST_CASE5(test_require<ex_cq_nr<n1, s, n1>, n1, n1>) | |
873 | BOOST_ASIO_TEST_CASE5(test_require<ex_cq_nr<n2, s, n2>, n2, n2>) | |
874 | ||
875 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, s, false>) | |
876 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n1, true>) | |
877 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n2, true>) | |
878 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, s, false>) | |
879 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n1, true>) | |
880 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n2, true>) | |
881 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, s, false>) | |
882 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n1, true>) | |
883 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n2, true>) | |
884 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, s, false>) | |
885 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n1, true>) | |
886 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n2, true>) | |
887 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, s, false>) | |
888 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n1, true>) | |
889 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n2, true>) | |
890 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, s, false>) | |
891 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n1, true>) | |
892 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n2, true>) | |
893 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, s, false>) | |
894 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n1, true>) | |
895 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n2, true>) | |
896 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, s, false>) | |
897 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n1, true>) | |
898 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n2, true>) | |
899 | ||
900 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n1>, n1, n1>) | |
901 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n1>, n2, n1>) | |
902 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n2>, n1, n2>) | |
903 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n2>, n2, n2>) | |
904 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n1>, n1, n1>) | |
905 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n1>, n2, n1>) | |
906 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n2>, n1, n2>) | |
907 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n2>, n2, n2>) | |
908 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n1>, n1, n1>) | |
909 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n1>, n2, n1>) | |
910 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n2>, n1, n2>) | |
911 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n2>, n2, n2>) | |
912 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n1, s, n1>, n1, n1>) | |
913 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n1, s, n1>, n2, n1>) | |
914 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n2, s, n2>, n1, n2>) | |
915 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n2, s, n2>, n2, n2>) | |
916 | ||
917 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, s, true>) | |
918 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n1, true>) | |
919 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n2, true>) | |
920 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, s, true>) | |
921 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n1, true>) | |
922 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n2, true>) | |
923 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, s, true>) | |
924 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n1, true>) | |
925 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n2, false>) | |
926 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, s, true>) | |
927 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n1, true>) | |
928 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n2, false>) | |
929 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, s, true>) | |
930 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n1, false>) | |
931 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n2, true>) | |
932 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, s, true>) | |
933 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n1, false>) | |
934 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n2, true>) | |
935 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, s, true>) | |
936 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n1, true>) | |
937 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n2, true>) | |
938 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, s, true>) | |
939 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n1, true>) | |
940 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n2, true>) | |
941 | ||
942 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, s, n1>) | |
943 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n1, n1>) | |
944 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n2, n1>) | |
945 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, s, n2>) | |
946 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n1, n2>) | |
947 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n2, n2>) | |
948 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n1>, s, n1>) | |
949 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n1>, n1, n1>) | |
950 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n2>, s, n2>) | |
951 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n2>, n1, n2>) | |
952 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n1>, s, n1>) | |
953 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n1>, n2, n1>) | |
954 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n2>, s, n2>) | |
955 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n2>, n2, n2>) | |
956 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, s, n1>) | |
957 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n1, n1>) | |
958 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n2, n1>) | |
959 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, s, n2>) | |
960 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n1, n2>) | |
961 | BOOST_ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n2, n2>) | |
962 | ||
963 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, s, false>) | |
964 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n1, false>) | |
965 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n2, false>) | |
966 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, s, false>) | |
967 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n1, false>) | |
968 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n2, false>) | |
969 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, s, false>) | |
970 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n1, false>) | |
971 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n2, false>) | |
972 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, s, false>) | |
973 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n1, false>) | |
974 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n2, false>) | |
975 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, s, false>) | |
976 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n1, false>) | |
977 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n2, false>) | |
978 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, s, false>) | |
979 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n1, false>) | |
980 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n2, false>) | |
981 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, s, false>) | |
982 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n1, false>) | |
983 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n2, false>) | |
984 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, s, false>) | |
985 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n1, false>) | |
986 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n2, false>) | |
987 | ||
988 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, s, false>) | |
989 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n1, true>) | |
990 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n2, true>) | |
991 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, s, false>) | |
992 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n1, true>) | |
993 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n2, true>) | |
994 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, s, false>) | |
995 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n1, true>) | |
996 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n2, true>) | |
997 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, s, false>) | |
998 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n1, true>) | |
999 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n2, true>) | |
1000 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, s, false>) | |
1001 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n1, true>) | |
1002 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n2, true>) | |
1003 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, s, false>) | |
1004 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n1, true>) | |
1005 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n2, true>) | |
1006 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, s, false>) | |
1007 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n1, true>) | |
1008 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n2, true>) | |
1009 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, s, false>) | |
1010 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n1, true>) | |
1011 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n2, true>) | |
1012 | ||
1013 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n1>, n1, n1>) | |
1014 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n1>, n2, n1>) | |
1015 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n2>, n1, n2>) | |
1016 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n2>, n2, n2>) | |
1017 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n1>, n1, n1>) | |
1018 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n1>, n2, n1>) | |
1019 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n2>, n1, n2>) | |
1020 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n2>, n2, n2>) | |
1021 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n1>, n1, n1>) | |
1022 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n1>, n2, n1>) | |
1023 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n2>, n1, n2>) | |
1024 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n2>, n2, n2>) | |
1025 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n1, s, n1>, n1, n1>) | |
1026 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n1, s, n1>, n2, n1>) | |
1027 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n2, s, n2>, n1, n2>) | |
1028 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n2, s, n2>, n2, n2>) | |
1029 | ||
1030 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, s, true>) | |
1031 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n1, true>) | |
1032 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n2, true>) | |
1033 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, s, true>) | |
1034 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n1, true>) | |
1035 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n2, true>) | |
1036 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, s, true>) | |
1037 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n1, true>) | |
1038 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n2, false>) | |
1039 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, s, true>) | |
1040 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n1, true>) | |
1041 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n2, false>) | |
1042 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, s, true>) | |
1043 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n1, false>) | |
1044 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n2, true>) | |
1045 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, s, true>) | |
1046 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n1, false>) | |
1047 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n2, true>) | |
1048 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, s, true>) | |
1049 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n1, true>) | |
1050 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n2, true>) | |
1051 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, s, true>) | |
1052 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n1, true>) | |
1053 | BOOST_ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n2, true>) | |
1054 | ||
1055 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, s, n1>) | |
1056 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n1, n1>) | |
1057 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n2, n1>) | |
1058 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, s, n2>) | |
1059 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n1, n2>) | |
1060 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n2, n2>) | |
1061 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n1>, s, n1>) | |
1062 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n1>, n1, n1>) | |
1063 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n2>, s, n2>) | |
1064 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n2>, n1, n2>) | |
1065 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n1>, s, n1>) | |
1066 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n1>, n2, n1>) | |
1067 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n2>, s, n2>) | |
1068 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n2>, n2, n2>) | |
1069 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, s, n1>) | |
1070 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n1, n1>) | |
1071 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n2, n1>) | |
1072 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, s, n2>) | |
1073 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n1, n2>) | |
1074 | BOOST_ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n2, n2>) | |
1075 | ||
1076 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, s, false>) | |
1077 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n1, false>) | |
1078 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n2, false>) | |
1079 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, s, false>) | |
1080 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n1, false>) | |
1081 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n2, false>) | |
1082 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, s, false>) | |
1083 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n1, false>) | |
1084 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n2, false>) | |
1085 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, s, false>) | |
1086 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n1, false>) | |
1087 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n2, false>) | |
1088 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, s, false>) | |
1089 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n1, false>) | |
1090 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n2, false>) | |
1091 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, s, false>) | |
1092 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n1, false>) | |
1093 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n2, false>) | |
1094 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, s, false>) | |
1095 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n1, false>) | |
1096 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n2, false>) | |
1097 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, s, false>) | |
1098 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n1, false>) | |
1099 | BOOST_ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n2, false>) | |
1100 | ||
1101 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, s, false>) | |
1102 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n1, true>) | |
1103 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n2, true>) | |
1104 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, s, false>) | |
1105 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n1, true>) | |
1106 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n2, true>) | |
1107 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, s, false>) | |
1108 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n1, true>) | |
1109 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n2, true>) | |
1110 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, s, false>) | |
1111 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n1, true>) | |
1112 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n2, true>) | |
1113 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, s, false>) | |
1114 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n1, true>) | |
1115 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n2, true>) | |
1116 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, s, false>) | |
1117 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n1, true>) | |
1118 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n2, true>) | |
1119 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, s, false>) | |
1120 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n1, true>) | |
1121 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n2, true>) | |
1122 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, s, false>) | |
1123 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n1, true>) | |
1124 | BOOST_ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n2, true>) | |
1125 | ||
1126 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n1>, n1, n1>) | |
1127 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n1>, n2, n1>) | |
1128 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n2>, n1, n2>) | |
1129 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n2>, n2, n2>) | |
1130 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n1>, n1, n1>) | |
1131 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n1>, n2, n1>) | |
1132 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n2>, n1, n2>) | |
1133 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n2>, n2, n2>) | |
1134 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n1>, n1, n1>) | |
1135 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n1>, n2, n1>) | |
1136 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n2>, n1, n2>) | |
1137 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n2>, n2, n2>) | |
1138 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n1, s, n1>, n1, n1>) | |
1139 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n1, s, n1>, n2, n1>) | |
1140 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n2, s, n2>, n1, n2>) | |
1141 | BOOST_ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n2, s, n2>, n2, n2>) | |
1142 | ||
1143 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, s, true>) | |
1144 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n1, true>) | |
1145 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n2, false>) | |
1146 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, s, true>) | |
1147 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n1, true>) | |
1148 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n2, true>) | |
1149 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, s, true>) | |
1150 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n1, true>) | |
1151 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n2, true>) | |
1152 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, s, true>) | |
1153 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n1, false>) | |
1154 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n2, true>) | |
1155 | ||
1156 | BOOST_ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n1>, s, n1>) | |
1157 | BOOST_ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n1>, n1, n1>) | |
1158 | BOOST_ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n2>, s, n1>) | |
1159 | BOOST_ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n2>, n1, n1>) | |
1160 | BOOST_ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n1>, s, n2>) | |
1161 | BOOST_ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n1>, n2, n2>) | |
1162 | BOOST_ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n2>, s, n2>) | |
1163 | BOOST_ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n2>, n2, n2>) | |
1164 | ||
1165 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, s, false>) | |
1166 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n1, true>) | |
1167 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n2, false>) | |
1168 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, s, false>) | |
1169 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n1, true>) | |
1170 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n2, true>) | |
1171 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, s, false>) | |
1172 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n1, true>) | |
1173 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n2, true>) | |
1174 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, s, false>) | |
1175 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n1, false>) | |
1176 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n2, true>) | |
1177 | ||
1178 | BOOST_ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n1>, n1, n1>) | |
1179 | BOOST_ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n2>, n1, n1>) | |
1180 | BOOST_ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n2>, n2, n2>) | |
1181 | BOOST_ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n1>, n1, n1>) | |
1182 | BOOST_ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n1>, n2, n2>) | |
1183 | BOOST_ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n2>, n2, n2>) | |
1184 | ||
1185 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, s, false>) | |
1186 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n1, true>) | |
1187 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n2, true>) | |
1188 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, s, false>) | |
1189 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n1, true>) | |
1190 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n2, true>) | |
1191 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, s, false>) | |
1192 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n1, true>) | |
1193 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n2, true>) | |
1194 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, s, false>) | |
1195 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n1, true>) | |
1196 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n2, true>) | |
1197 | ||
1198 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n1>, n1, n1>) | |
1199 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n1>, n2, n1>) | |
1200 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n2>, n1, n1>) | |
1201 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n2>, n2, n2>) | |
1202 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n1>, n1, n1>) | |
1203 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n1>, n2, n2>) | |
1204 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n2>, n1, n2>) | |
1205 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n2>, n2, n2>) | |
1206 | ||
1207 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, s, true>) | |
1208 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n1, true>) | |
1209 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n2, false>) | |
1210 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, s, true>) | |
1211 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n1, true>) | |
1212 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n2, true>) | |
1213 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, s, true>) | |
1214 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n1, true>) | |
1215 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n2, true>) | |
1216 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, s, true>) | |
1217 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n1, false>) | |
1218 | BOOST_ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n2, true>) | |
1219 | ||
1220 | BOOST_ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n1>, s, n1>) | |
1221 | BOOST_ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n1>, n1, n1>) | |
1222 | BOOST_ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n2>, s, n1>) | |
1223 | BOOST_ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n2>, n1, n1>) | |
1224 | BOOST_ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n1>, s, n2>) | |
1225 | BOOST_ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n1>, n2, n2>) | |
1226 | BOOST_ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n2>, s, n2>) | |
1227 | BOOST_ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n2>, n2, n2>) | |
1228 | ||
1229 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, s, false>) | |
1230 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n1, true>) | |
1231 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n2, false>) | |
1232 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, s, false>) | |
1233 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n1, true>) | |
1234 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n2, true>) | |
1235 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, s, false>) | |
1236 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n1, true>) | |
1237 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n2, true>) | |
1238 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, s, false>) | |
1239 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n1, false>) | |
1240 | BOOST_ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n2, true>) | |
1241 | ||
1242 | BOOST_ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n1>, n1, n1>) | |
1243 | BOOST_ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n2>, n1, n1>) | |
1244 | BOOST_ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n2>, n2, n2>) | |
1245 | BOOST_ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n1>, n1, n1>) | |
1246 | BOOST_ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n1>, n2, n2>) | |
1247 | BOOST_ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n2>, n2, n2>) | |
1248 | ||
1249 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, s, false>) | |
1250 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n1, true>) | |
1251 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n2, true>) | |
1252 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, s, false>) | |
1253 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n1, true>) | |
1254 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n2, true>) | |
1255 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, s, false>) | |
1256 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n1, true>) | |
1257 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n2, true>) | |
1258 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, s, false>) | |
1259 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n1, true>) | |
1260 | BOOST_ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n2, true>) | |
1261 | ||
1262 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n1>, n1, n1>) | |
1263 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n1>, n2, n1>) | |
1264 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n2>, n1, n1>) | |
1265 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n2>, n2, n2>) | |
1266 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n1>, n1, n1>) | |
1267 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n1>, n2, n2>) | |
1268 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n2>, n1, n2>) | |
1269 | BOOST_ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n2>, n2, n2>) | |
1270 | ||
1271 | BOOST_ASIO_TEST_CASE(test_vars) | |
1272 | ) |