21 #define BOOST_TEST_MODULE libjmmcg_tests
22 #include <boost/test/included/unit_test.hpp>
24 #include <boost/mpl/list.hpp>
26 #include "core/thread_pool_sequential.hpp"
27 #include "core/thread_pool_master.hpp"
28 #include "core/thread_pool_workers.hpp"
30 #include <boost/bind/bind.hpp>
32 using namespace libjmmcg;
83 typedef boost::mpl::list<
84 fifo_queue_t<pool_traits::work_distribution_mode_t::worker_threads_get_work<pool_traits::work_distribution_mode_t::queue_model_t::pool_owns_queue>, pool_traits::size_mode_t::sequential, generic_traits::return_data::joinable, sequential_mode>,
85 lifo_queue_t<pool_traits::work_distribution_mode_t::worker_threads_get_work<pool_traits::work_distribution_mode_t::queue_model_t::pool_owns_queue>, pool_traits::size_mode_t::sequential, generic_traits::return_data::joinable, sequential_mode>,
86 priority_queue_t<pool_traits::work_distribution_mode_t::worker_threads_get_work<pool_traits::work_distribution_mode_t::queue_model_t::pool_owns_queue>, pool_traits::size_mode_t::sequential, generic_traits::return_data::joinable, sequential_mode>,
88 fifo_queue_t<pool_traits::work_distribution_mode_t::worker_threads_get_work<pool_traits::work_distribution_mode_t::queue_model_t::pool_owns_queue>, pool_traits::size_mode_t::fixed_size, generic_traits::return_data::joinable, heavyweight_threading, 1>,
90 lifo_queue_t<pool_traits::work_distribution_mode_t::worker_threads_get_work<pool_traits::work_distribution_mode_t::queue_model_t::pool_owns_queue>, pool_traits::size_mode_t::fixed_size, generic_traits::return_data::joinable, heavyweight_threading, 1>,
92 priority_queue_t<pool_traits::work_distribution_mode_t::worker_threads_get_work<pool_traits::work_distribution_mode_t::queue_model_t::pool_owns_queue>, pool_traits::size_mode_t::fixed_size, generic_traits::return_data::joinable, heavyweight_threading, 1>,
95 fifo_queue_t<pool_traits::work_distribution_mode_t::worker_threads_get_work<pool_traits::work_distribution_mode_t::queue_model_t::pool_owns_queue>, pool_traits::size_mode_t::fixed_size, generic_traits::return_data::joinable, heavyweight_threading, 2>,
96 lifo_queue_t<pool_traits::work_distribution_mode_t::worker_threads_get_work<pool_traits::work_distribution_mode_t::queue_model_t::pool_owns_queue>, pool_traits::size_mode_t::fixed_size, generic_traits::return_data::joinable, heavyweight_threading, 2>,
97 priority_queue_t<pool_traits::work_distribution_mode_t::worker_threads_get_work<pool_traits::work_distribution_mode_t::queue_model_t::pool_owns_queue>, pool_traits::size_mode_t::fixed_size, generic_traits::return_data::joinable, heavyweight_threading, 2>
100 typedef boost::mpl::list<
101 fifo_queue_t<pool_traits::work_distribution_mode_t::one_thread_distributes<>, pool_traits::size_mode_t::sequential, generic_traits::return_data::joinable, sequential_mode>,
102 lifo_queue_t<pool_traits::work_distribution_mode_t::one_thread_distributes<>, pool_traits::size_mode_t::sequential, generic_traits::return_data::joinable, sequential_mode>,
103 priority_queue_t<pool_traits::work_distribution_mode_t::one_thread_distributes<>, pool_traits::size_mode_t::sequential, generic_traits::return_data::joinable, sequential_mode>,
113 fifo_queue_t<pool_traits::work_distribution_mode_t::one_thread_distributes<>, pool_traits::size_mode_t::infinite, generic_traits::return_data::joinable, heavyweight_threading>,
114 lifo_queue_t<pool_traits::work_distribution_mode_t::one_thread_distributes<>, pool_traits::size_mode_t::infinite, generic_traits::return_data::joinable, heavyweight_threading>,
115 priority_queue_t<pool_traits::work_distribution_mode_t::one_thread_distributes<>, pool_traits::size_mode_t::infinite, generic_traits::return_data::joinable, heavyweight_threading>
116 > infinite_test_types;
177 api_threading_traits<API, Mdl>::sleep(10);
206 r=
static_cast<
bool>(
i_);
241 api_threading_traits<API, Mdl>::sleep(10);
282 BOOST_AUTO_TEST_SUITE(thread_pool_tests)
284 BOOST_AUTO_TEST_SUITE(joinable)
286 BOOST_AUTO_TEST_SUITE(finite)
288 BOOST_AUTO_TEST_SUITE(nowait)
290 BOOST_AUTO_TEST_CASE_TEMPLATE(one_thread, T, finite_test_types) {
291 typedef typename T::pool_type pool_type;
294 BOOST_CHECK_EQUAL(pool.pool_size(), 1U);
295 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
296 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::erew_memory_access), 0U);
297 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::erew_memory_access), 0U);
298 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::crew_memory_access), 0U);
299 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::crew_memory_access), 0U);
302 BOOST_AUTO_TEST_CASE_TEMPLATE(n_threads, T, finite_test_types) {
303 typedef typename T::pool_type pool_type;
305 pool_type pool(T::pool_size);
306 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
307 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
308 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::erew_memory_access), 0U);
309 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::erew_memory_access), 0U);
310 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::crew_memory_access), 0U);
311 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::crew_memory_access), 0U);
314 BOOST_AUTO_TEST_SUITE_END()
316 BOOST_AUTO_TEST_SUITE(wait_dataflow)
318 BOOST_AUTO_TEST_CASE_TEMPLATE(add_one_work, T, finite_test_types) {
319 typedef typename T::pool_type pool_type;
320 typedef typename pool_type::joinable joinable;
322 pool_type pool(T::pool_size);
324 BOOST_CHECK_EQUAL(exec->i, 2);
325 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
326 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
327 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::erew_memory_access), 0U);
328 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::erew_memory_access), 0U);
329 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::crew_memory_access), 0U);
330 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::crew_memory_access), 0U);
331 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
332 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
335 BOOST_AUTO_TEST_CASE_TEMPLATE(add_one_work_boost_bind, T, finite_test_types) {
336 typedef typename T::pool_type pool_type;
337 typedef typename pool_type::joinable joinable;
339 pool_type pool(T::pool_size);
341 BOOST_CHECK_EQUAL(exec->i, 2);
342 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
343 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
344 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::erew_memory_access), 0U);
345 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::erew_memory_access), 0U);
346 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::crew_memory_access), 0U);
347 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::crew_memory_access), 0U);
348 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
349 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
352 BOOST_AUTO_TEST_CASE_TEMPLATE(erase_one_work_after_waiting, T, finite_test_types) {
353 typedef typename T::pool_type pool_type;
354 typedef typename pool_type::joinable joinable;
356 pool_type pool(T::pool_size);
360 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
361 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
362 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::erew_memory_access), 0U);
363 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::erew_memory_access), 0U);
364 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::crew_memory_access), 0U);
365 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::crew_memory_access), 0U);
366 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
367 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
370 BOOST_AUTO_TEST_CASE_TEMPLATE(access_erased_work, T, finite_test_types) {
371 typedef typename T::pool_type pool_type;
372 typedef typename pool_type::nonjoinable nonjoinable;
373 typedef typename pool_type::joinable joinable;
375 typedef erase_test_work_type<T::thread_pool_traits::os_traits::thread_traits::api_params_type::api_type,
typename T::thread_pool_traits::os_traits::thread_traits::model_type> erase_wk_t;
377 pool_type pool(T::pool_size);
379 for (
typename pool_type::pool_type::size_type i=0; i<pool.pool_size(); ++i) {
380 pool<<nonjoinable()<<erase_wk_t();
385 bool exeception_caught=
std::is_same<
typename T::thread_pool_traits::os_traits::thread_traits::model_type, sequential_mode>::value;
387 [[maybe_unused]]
auto const ret=exec->i;
388 }
catch (
const typename pool_type::exception_type &) {
389 exeception_caught=
true;
392 erase_wk_t::waiting=
false;
393 api_threading_traits<T::thread_pool_traits::os_traits::thread_traits::api_params_type::api_type,
typename T::thread_pool_traits::os_traits::thread_traits::model_type>::sleep(100);
394 BOOST_CHECK_EQUAL(exeception_caught,
true);
395 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
396 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
397 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::erew_memory_access), 0U);
398 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::erew_memory_access), 0U);
399 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::crew_memory_access), 0U);
400 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::crew_memory_access), 0U);
401 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
402 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
405 BOOST_AUTO_TEST_CASE_TEMPLATE(add_one_work_time_critical, T, finite_test_types) {
406 typedef typename T::pool_type pool_type;
407 typedef typename pool_type::joinable joinable;
408 typedef typename pool_type::
template priority<pool_type::api_params_type::time_critical> time_critical;
410 pool_type pool(T::pool_size);
412 BOOST_CHECK_EQUAL(exec->i, 2);
413 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
414 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
415 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
416 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
419 BOOST_AUTO_TEST_CASE_TEMPLATE(add_one_work_throw_exception, T, finite_test_types) {
420 typedef typename T::pool_type pool_type;
421 typedef typename pool_type::joinable joinable;
423 bool exception_caught=
false;
424 pool_type pool(T::pool_size);
429 exception_caught=(std::string(e.what())==
"test");
431 exception_caught=
false;
433 BOOST_CHECK_EQUAL(exception_caught,
true);
436 BOOST_AUTO_TEST_CASE_TEMPLATE(add_two_work, T, finite_test_types) {
437 typedef typename T::pool_type pool_type;
438 typedef typename pool_type::joinable joinable;
440 pool_type pool(T::pool_size);
443 BOOST_CHECK_EQUAL(exec->i, 2);
444 BOOST_CHECK_EQUAL(exec2->i, 6);
445 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
446 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
447 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::erew_memory_access), 0U);
448 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::erew_memory_access), 0U);
449 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::crew_memory_access), 0U);
450 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::crew_memory_access), 0U);
453 BOOST_AUTO_TEST_CASE_TEMPLATE(horizontal_threading, T, finite_test_types) {
454 typedef horizontal_work_type<T::thread_pool_traits::os_traits::thread_traits::api_params_type::api_type,
typename T::thread_pool_traits::os_traits::thread_traits::model_type> hrz_wk_t;
455 typedef horizontal_work_type_rel<T::thread_pool_traits::os_traits::thread_traits::api_params_type::api_type,
typename T::thread_pool_traits::os_traits::thread_traits::model_type> hrz_wk_rel_t;
456 typedef typename T::pool_type pool_type;
457 typedef typename pool_type::joinable joinable;
459 pool_type pool(T::pool_size);
461 hrz_wk_t hz(release);
462 hrz_wk_rel_t hz_rel(release);
463 auto const &exec=pool<<joinable()<<hz;
464 auto const &exec_rel=pool<<joinable()<<hz_rel;
467 BOOST_CHECK_EQUAL(hz.release,
true);
468 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
471 BOOST_AUTO_TEST_CASE_TEMPLATE(unary_fn, T, finite_test_types) {
472 typedef typename T::pool_type pool_type;
474 pool_type pool(T::pool_size);
475 auto const &exec=pool.unary_fun(bool_work_type(0), std::logical_not<bool_work_type::result_type>());
476 BOOST_CHECK_EQUAL(*exec,
true);
477 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
478 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
479 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
480 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
483 BOOST_AUTO_TEST_CASE_TEMPLATE(logical_and_false, T, finite_test_types) {
484 typedef typename T::pool_type pool_type;
486 pool_type pool(T::pool_size);
487 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
489 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
490 BOOST_CHECK_EQUAL(*exec,
false);
491 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
492 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
493 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
494 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
497 BOOST_AUTO_TEST_CASE_TEMPLATE(logical_and_true, T, finite_test_types) {
498 typedef typename T::pool_type pool_type;
500 pool_type pool(T::pool_size);
501 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
503 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
504 BOOST_CHECK_EQUAL(*exec,
true);
505 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
506 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
507 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
508 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
511 BOOST_AUTO_TEST_CASE_TEMPLATE(logical_or_false, T, finite_test_types) {
512 typedef typename T::pool_type pool_type;
514 pool_type pool(T::pool_size);
515 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
517 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
518 BOOST_CHECK_EQUAL(*exec,
false);
519 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
520 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
521 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
522 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
525 BOOST_AUTO_TEST_CASE_TEMPLATE(logical_or_true, T, finite_test_types) {
526 typedef typename T::pool_type pool_type;
528 pool_type pool(T::pool_size);
529 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
531 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
532 BOOST_CHECK_EQUAL(*exec,
true);
533 BOOST_CHECK_EQUAL(pool.pool_size(), T::pool_size);
534 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
535 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
536 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
539 BOOST_AUTO_TEST_SUITE_END()
541 BOOST_AUTO_TEST_SUITE_END()
543 BOOST_AUTO_TEST_SUITE(infinite)
545 BOOST_AUTO_TEST_SUITE(nowait)
547 BOOST_AUTO_TEST_CASE_TEMPLATE(default_ctor, T, infinite_test_types) {
548 typedef typename T::pool_type pool_type;
551 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
552 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::erew_memory_access), 0U);
553 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::erew_memory_access), 0U);
554 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::crew_memory_access), 0U);
555 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::crew_memory_access), 0U);
558 BOOST_AUTO_TEST_SUITE_END()
560 BOOST_AUTO_TEST_SUITE(wait_dataflow)
562 BOOST_AUTO_TEST_CASE_TEMPLATE(add_one_work, T, infinite_test_types) {
563 typedef typename T::pool_type pool_type;
564 typedef typename pool_type::joinable joinable;
568 BOOST_CHECK_EQUAL(exec->i, 2);
569 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
570 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::erew_memory_access), 0U);
571 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::erew_memory_access), 0U);
572 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::crew_memory_access), 0U);
573 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::crew_memory_access), 0U);
574 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
575 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
578 BOOST_AUTO_TEST_CASE_TEMPLATE(add_one_work_boost_bind, T, infinite_test_types) {
579 typedef typename T::pool_type pool_type;
580 typedef typename pool_type::joinable joinable;
584 BOOST_CHECK_EQUAL(exec->i, 2);
585 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
586 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::erew_memory_access), 0U);
587 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::erew_memory_access), 0U);
588 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::crew_memory_access), 0U);
589 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::crew_memory_access), 0U);
590 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
591 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
594 BOOST_AUTO_TEST_CASE_TEMPLATE(add_one_work_time_critical, T, infinite_test_types) {
595 typedef typename T::pool_type pool_type;
596 typedef typename pool_type::joinable joinable;
597 typedef typename pool_type::
template priority<pool_type::api_params_type::time_critical> time_critical;
601 BOOST_CHECK_EQUAL(exec->i, 2);
602 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
603 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
604 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
607 BOOST_AUTO_TEST_CASE_TEMPLATE(add_one_work_throw_exception, T, infinite_test_types) {
608 typedef typename T::pool_type pool_type;
609 typedef typename pool_type::joinable joinable;
611 bool exception_caught=
false;
617 exception_caught=(std::string(e.what())==
"test");
619 exception_caught=
false;
621 BOOST_CHECK_EQUAL(exception_caught,
true);
624 BOOST_AUTO_TEST_CASE_TEMPLATE(add_two_work, T, infinite_test_types) {
625 typedef typename T::pool_type pool_type;
626 typedef typename pool_type::joinable joinable;
631 BOOST_CHECK_EQUAL(exec->i, 2);
632 BOOST_CHECK_EQUAL(exec2->i, 6);
633 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
634 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::erew_memory_access), 0U);
635 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::erew_memory_access), 0U);
636 BOOST_CHECK_EQUAL(pool.min_time(generic_traits::memory_access_modes::crew_memory_access), 0U);
637 BOOST_CHECK_EQUAL(pool.min_processors(generic_traits::memory_access_modes::crew_memory_access), 0U);
640 BOOST_AUTO_TEST_CASE_TEMPLATE(unary_fn, T, infinite_test_types) {
641 typedef typename T::pool_type pool_type;
644 auto const &exec=pool.unary_fun(bool_work_type(1),std::logical_not<bool_work_type::result_type>());
645 BOOST_CHECK_EQUAL(*exec,
false);
646 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
647 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
648 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
651 BOOST_AUTO_TEST_CASE_TEMPLATE(logical_and_false, T, infinite_test_types) {
652 typedef typename T::pool_type pool_type;
656 BOOST_CHECK_EQUAL(*exec,
false);
657 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
658 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
659 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
662 BOOST_AUTO_TEST_CASE_TEMPLATE(logical_and_true, T, infinite_test_types) {
663 typedef typename T::pool_type pool_type;
667 BOOST_CHECK_EQUAL(*exec,
true);
668 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
669 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
670 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
673 BOOST_AUTO_TEST_CASE_TEMPLATE(logical_or_false, T, infinite_test_types) {
674 typedef typename T::pool_type pool_type;
678 BOOST_CHECK_EQUAL(*exec,
false);
679 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
680 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
681 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
684 BOOST_AUTO_TEST_CASE_TEMPLATE(logical_or_true, T, infinite_test_types) {
685 typedef typename T::pool_type pool_type;
689 BOOST_CHECK_EQUAL(*exec,
true);
690 BOOST_CHECK_EQUAL(pool.queue_size(), 0U);
691 BOOST_CHECK_EQUAL(pool.min_time(exec), 0U);
692 BOOST_CHECK_EQUAL(pool.min_processors(exec), 0U);
695 BOOST_AUTO_TEST_SUITE_END()
697 BOOST_AUTO_TEST_SUITE_END()
699 BOOST_AUTO_TEST_SUITE_END()
701 BOOST_AUTO_TEST_SUITE_END()