mt_init_test.cpp 985 B

12345678910111213141516171819202122232425262728293031323334353637
  1. // Copyright (C) 2013 Alain Miniussi <alain.miniussi@oca.eu>
  2. // Use, modification and distribution is subject to the Boost Software
  3. // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  4. // http://www.boost.org/LICENSE_1_0.txt)
  5. // test threading::level operations
  6. #include <boost/mpi.hpp>
  7. #include <iostream>
  8. #include <sstream>
  9. #define BOOST_TEST_MODULE mpi_mt_init
  10. #include <boost/test/included/unit_test.hpp>
  11. namespace mpi = boost::mpi;
  12. void
  13. test_mt_init(std::string s)
  14. {
  15. mpi::threading::level required = mpi::threading::level(-1);
  16. std::istringstream in(s);
  17. in >> required;
  18. BOOST_CHECK(!in.bad());
  19. BOOST_CHECK(mpi::environment::thread_level() >= mpi::threading::single);
  20. BOOST_CHECK(mpi::environment::thread_level() <= mpi::threading::multiple);
  21. }
  22. BOOST_AUTO_TEST_CASE(mt_init)
  23. {
  24. mpi::environment env;
  25. mpi::communicator comm;
  26. test_mt_init("single");
  27. test_mt_init("funneled");
  28. test_mt_init("serialized");
  29. test_mt_init("multiple");
  30. }