]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mpi/test/mt_level_test.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / mpi / test / mt_level_test.cpp
1 // Copyright (C) 2013 Alain Miniussi <alain.miniussi@oca.eu>
2
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)
6
7 // test threading::level operations
8
9 #include <boost/mpi/environment.hpp>
10 #include <boost/test/minimal.hpp>
11 #include <iostream>
12 #include <sstream>
13
14 namespace mpi = boost::mpi;
15
16 void
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);
21
22 out << orig;
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);
27 in >> printed;
28 BOOST_CHECK(!in.bad());
29 std::cout << "orig: " << orig << ", printed: " << printed << std::endl;
30 BOOST_CHECK(orig == printed);
31 }
32
33 void
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);
40 }
41
42 void
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);
49
50 BOOST_CHECK(mt::single != mt::funneled);
51 BOOST_CHECK(mt::single != mt::serialized);
52 BOOST_CHECK(mt::single != mt::multiple);
53
54 BOOST_CHECK(mt::funneled != mt::single);
55 BOOST_CHECK(mt::funneled != mt::serialized);
56 BOOST_CHECK(mt::funneled != mt::multiple);
57
58 BOOST_CHECK(mt::serialized != mt::single);
59 BOOST_CHECK(mt::serialized != mt::funneled);
60 BOOST_CHECK(mt::serialized != mt::multiple);
61
62 BOOST_CHECK(mt::multiple != mt::single);
63 BOOST_CHECK(mt::multiple != mt::funneled);
64 BOOST_CHECK(mt::multiple != mt::serialized);
65
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);
72
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);
77
78 BOOST_CHECK(mt::serialized < mt::multiple);
79 BOOST_CHECK(mt::multiple > mt::serialized);
80
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);
88
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);
94
95 BOOST_CHECK(mt::serialized <= mt::serialized);
96 BOOST_CHECK(mt::serialized <= mt::multiple);
97 BOOST_CHECK(mt::multiple >= mt::serialized);
98
99 BOOST_CHECK(mt::multiple <= mt::multiple);
100 }
101
102 int
103 test_main(int argc, char* argv[]) {
104 test_threading_levels_io();
105 test_threading_level_cmp();
106 return 0;
107 }