1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
// Copyright (C) 2013 Alain Miniussi <alain.miniussi@oca.eu>
// Use, modification and distribution is subject to 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)
// test threading::level operations
#include <boost/mpi/environment.hpp>
#include <iostream>
#include <sstream>
#define BOOST_TEST_MODULE mpi_level_test
#include <boost/test/included/unit_test.hpp>
namespace mpi = boost::mpi;
void
test_threading_level_io(mpi::threading::level orig) {
std::ostringstream out;
namespace mt = boost::mpi::threading;
mt::level printed = mt::level(-1);
out << orig;
BOOST_CHECK(out.good());
std::string orig_str(out.str());
std::cout << "orig string:" << orig_str << '\n';
std::istringstream in(orig_str);
in >> printed;
BOOST_CHECK(!in.bad());
std::cout << "orig: " << orig << ", printed: " << printed << std::endl;
BOOST_CHECK(orig == printed);
}
void
test_threading_levels_io() {
namespace mt = boost::mpi::threading;
test_threading_level_io(mt::single);
test_threading_level_io(mt::funneled);
test_threading_level_io(mt::serialized);
test_threading_level_io(mt::multiple);
}
void
test_threading_level_cmp() {
namespace mt = boost::mpi::threading;
BOOST_CHECK(mt::single == mt::single);
BOOST_CHECK(mt::funneled == mt::funneled);
BOOST_CHECK(mt::serialized == mt::serialized);
BOOST_CHECK(mt::multiple == mt::multiple);
BOOST_CHECK(mt::single != mt::funneled);
BOOST_CHECK(mt::single != mt::serialized);
BOOST_CHECK(mt::single != mt::multiple);
BOOST_CHECK(mt::funneled != mt::single);
BOOST_CHECK(mt::funneled != mt::serialized);
BOOST_CHECK(mt::funneled != mt::multiple);
BOOST_CHECK(mt::serialized != mt::single);
BOOST_CHECK(mt::serialized != mt::funneled);
BOOST_CHECK(mt::serialized != mt::multiple);
BOOST_CHECK(mt::multiple != mt::single);
BOOST_CHECK(mt::multiple != mt::funneled);
BOOST_CHECK(mt::multiple != mt::serialized);
BOOST_CHECK(mt::single < mt::funneled);
BOOST_CHECK(mt::funneled > mt::single);
BOOST_CHECK(mt::single < mt::serialized);
BOOST_CHECK(mt::serialized > mt::single);
BOOST_CHECK(mt::single < mt::multiple);
BOOST_CHECK(mt::multiple > mt::single);
BOOST_CHECK(mt::funneled < mt::serialized);
BOOST_CHECK(mt::serialized > mt::funneled);
BOOST_CHECK(mt::funneled < mt::multiple);
BOOST_CHECK(mt::multiple > mt::funneled);
BOOST_CHECK(mt::serialized < mt::multiple);
BOOST_CHECK(mt::multiple > mt::serialized);
BOOST_CHECK(mt::single <= mt::single);
BOOST_CHECK(mt::single <= mt::funneled);
BOOST_CHECK(mt::funneled >= mt::single);
BOOST_CHECK(mt::single <= mt::serialized);
BOOST_CHECK(mt::serialized >= mt::single);
BOOST_CHECK(mt::single <= mt::multiple);
BOOST_CHECK(mt::multiple >= mt::single);
BOOST_CHECK(mt::funneled <= mt::funneled);
BOOST_CHECK(mt::funneled <= mt::serialized);
BOOST_CHECK(mt::serialized >= mt::funneled);
BOOST_CHECK(mt::funneled <= mt::multiple);
BOOST_CHECK(mt::multiple >= mt::funneled);
BOOST_CHECK(mt::serialized <= mt::serialized);
BOOST_CHECK(mt::serialized <= mt::multiple);
BOOST_CHECK(mt::multiple >= mt::serialized);
BOOST_CHECK(mt::multiple <= mt::multiple);
}
BOOST_AUTO_TEST_CASE(mt_level)
{
test_threading_levels_io();
test_threading_level_cmp();
}
|