]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mpi/test/mt_level_test.cpp
1 // Copyright (C) 2013 Alain Miniussi <alain.miniussi@oca.eu>
3 // Use, modification and distribution is subject to the Boost Software
4 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt)
7 // test threading::level operations
9 #include <boost/mpi/environment.hpp>
10 #include <boost/test/minimal.hpp>
14 namespace mpi
= boost::mpi
;
17 test_threading_level_io(mpi::threading::level orig
) {
18 std::ostringstream out
;
19 namespace mt
= boost::mpi::threading
;
20 mt::level printed
= mt::level(-1);
23 BOOST_CHECK(out
.good());
24 std::string
orig_str(out
.str());
25 std::cout
<< "orig string:" << orig_str
<< '\n';
26 std::istringstream
in(orig_str
);
28 BOOST_CHECK(!in
.bad());
29 std::cout
<< "orig: " << orig
<< ", printed: " << printed
<< std::endl
;
30 BOOST_CHECK(orig
== printed
);
34 test_threading_levels_io() {
35 namespace mt
= boost::mpi::threading
;
36 test_threading_level_io(mt::single
);
37 test_threading_level_io(mt::funneled
);
38 test_threading_level_io(mt::serialized
);
39 test_threading_level_io(mt::multiple
);
43 test_threading_level_cmp() {
44 namespace mt
= boost::mpi::threading
;
45 BOOST_CHECK(mt::single
== mt::single
);
46 BOOST_CHECK(mt::funneled
== mt::funneled
);
47 BOOST_CHECK(mt::serialized
== mt::serialized
);
48 BOOST_CHECK(mt::multiple
== mt::multiple
);
50 BOOST_CHECK(mt::single
!= mt::funneled
);
51 BOOST_CHECK(mt::single
!= mt::serialized
);
52 BOOST_CHECK(mt::single
!= mt::multiple
);
54 BOOST_CHECK(mt::funneled
!= mt::single
);
55 BOOST_CHECK(mt::funneled
!= mt::serialized
);
56 BOOST_CHECK(mt::funneled
!= mt::multiple
);
58 BOOST_CHECK(mt::serialized
!= mt::single
);
59 BOOST_CHECK(mt::serialized
!= mt::funneled
);
60 BOOST_CHECK(mt::serialized
!= mt::multiple
);
62 BOOST_CHECK(mt::multiple
!= mt::single
);
63 BOOST_CHECK(mt::multiple
!= mt::funneled
);
64 BOOST_CHECK(mt::multiple
!= mt::serialized
);
66 BOOST_CHECK(mt::single
< mt::funneled
);
67 BOOST_CHECK(mt::funneled
> mt::single
);
68 BOOST_CHECK(mt::single
< mt::serialized
);
69 BOOST_CHECK(mt::serialized
> mt::single
);
70 BOOST_CHECK(mt::single
< mt::multiple
);
71 BOOST_CHECK(mt::multiple
> mt::single
);
73 BOOST_CHECK(mt::funneled
< mt::serialized
);
74 BOOST_CHECK(mt::serialized
> mt::funneled
);
75 BOOST_CHECK(mt::funneled
< mt::multiple
);
76 BOOST_CHECK(mt::multiple
> mt::funneled
);
78 BOOST_CHECK(mt::serialized
< mt::multiple
);
79 BOOST_CHECK(mt::multiple
> mt::serialized
);
81 BOOST_CHECK(mt::single
<= mt::single
);
82 BOOST_CHECK(mt::single
<= mt::funneled
);
83 BOOST_CHECK(mt::funneled
>= mt::single
);
84 BOOST_CHECK(mt::single
<= mt::serialized
);
85 BOOST_CHECK(mt::serialized
>= mt::single
);
86 BOOST_CHECK(mt::single
<= mt::multiple
);
87 BOOST_CHECK(mt::multiple
>= mt::single
);
89 BOOST_CHECK(mt::funneled
<= mt::funneled
);
90 BOOST_CHECK(mt::funneled
<= mt::serialized
);
91 BOOST_CHECK(mt::serialized
>= mt::funneled
);
92 BOOST_CHECK(mt::funneled
<= mt::multiple
);
93 BOOST_CHECK(mt::multiple
>= mt::funneled
);
95 BOOST_CHECK(mt::serialized
<= mt::serialized
);
96 BOOST_CHECK(mt::serialized
<= mt::multiple
);
97 BOOST_CHECK(mt::multiple
>= mt::serialized
);
99 BOOST_CHECK(mt::multiple
<= mt::multiple
);
103 test_main(int argc
, char* argv
[]) {
104 test_threading_levels_io();
105 test_threading_level_cmp();