1 | // Copyright 2021 Peter Dimov. |
2 | // Distributed under the Boost Software License, Version 1.0. |
3 | // http://www.boost.org/LICENSE_1_0.txt |
4 | |
5 | #include <boost/system/error_code.hpp> |
6 | #include <boost/core/lightweight_test.hpp> |
7 | #include <cerrno> |
8 | #include <system_error> |
9 | |
10 | int main() |
11 | { |
12 | { |
13 | boost::system::error_code e1; |
14 | boost::system::error_condition en = e1.default_error_condition(); |
15 | |
16 | BOOST_TEST_EQ( e1, en ); |
17 | BOOST_TEST_NOT( e1 != en ); |
18 | |
19 | std::error_code e2( e1 ); |
20 | |
21 | BOOST_TEST_EQ( e2, e1 ); |
22 | BOOST_TEST_NOT( e2 != e1 ); |
23 | |
24 | #if defined(_LIBCPP_VERSION) |
25 | |
26 | // Under MS STL and libstdc++, std::error_code() does not compare |
27 | // equal to std::error_condition(). Go figure. |
28 | |
29 | BOOST_TEST_EQ( e2, en ); |
30 | BOOST_TEST_NOT( e2 != en ); |
31 | |
32 | boost::system::error_code e3( e2 ); |
33 | |
34 | BOOST_TEST_EQ( e3, en ); |
35 | BOOST_TEST_NOT( e3 != en ); |
36 | |
37 | #endif |
38 | } |
39 | |
40 | { |
41 | boost::system::error_code e1( 0, boost::system::system_category() ); |
42 | boost::system::error_condition en = e1.default_error_condition(); |
43 | |
44 | BOOST_TEST_EQ( e1, en ); |
45 | BOOST_TEST_NOT( e1 != en ); |
46 | |
47 | std::error_code e2( e1 ); |
48 | |
49 | BOOST_TEST_EQ( e2, e1 ); |
50 | BOOST_TEST_NOT( e2 != e1 ); |
51 | |
52 | #if defined(_LIBCPP_VERSION) |
53 | |
54 | BOOST_TEST_EQ( e2, en ); |
55 | BOOST_TEST_NOT( e2 != en ); |
56 | |
57 | boost::system::error_code e3( e2 ); |
58 | |
59 | BOOST_TEST_EQ( e3, en ); |
60 | BOOST_TEST_NOT( e3 != en ); |
61 | |
62 | #endif |
63 | } |
64 | |
65 | { |
66 | boost::system::error_code e1( 5, boost::system::system_category() ); |
67 | boost::system::error_condition en = e1.default_error_condition(); |
68 | |
69 | BOOST_TEST_EQ( e1, en ); |
70 | BOOST_TEST_NOT( e1 != en ); |
71 | |
72 | std::error_code e2( e1 ); |
73 | |
74 | BOOST_TEST_EQ( e2, e1 ); |
75 | BOOST_TEST_NOT( e2 != e1 ); |
76 | |
77 | BOOST_TEST_EQ( e2, en ); |
78 | BOOST_TEST_NOT( e2 != en ); |
79 | |
80 | boost::system::error_code e3( e2 ); |
81 | |
82 | BOOST_TEST_EQ( e3, en ); |
83 | BOOST_TEST_NOT( e3 != en ); |
84 | } |
85 | |
86 | { |
87 | boost::system::error_code e1( 0, boost::system::generic_category() ); |
88 | boost::system::error_condition en = e1.default_error_condition(); |
89 | |
90 | BOOST_TEST_EQ( e1, en ); |
91 | BOOST_TEST_NOT( e1 != en ); |
92 | |
93 | std::error_code e2( e1 ); |
94 | |
95 | BOOST_TEST_EQ( e2, e1 ); |
96 | BOOST_TEST_NOT( e2 != e1 ); |
97 | |
98 | BOOST_TEST_EQ( e2, en ); |
99 | BOOST_TEST_NOT( e2 != en ); |
100 | |
101 | boost::system::error_code e3( e2 ); |
102 | |
103 | BOOST_TEST_EQ( e3, en ); |
104 | BOOST_TEST_NOT( e3 != en ); |
105 | } |
106 | |
107 | { |
108 | boost::system::error_code e1( 5, boost::system::generic_category() ); |
109 | boost::system::error_condition en = e1.default_error_condition(); |
110 | |
111 | BOOST_TEST_EQ( e1, en ); |
112 | BOOST_TEST_NOT( e1 != en ); |
113 | |
114 | std::error_code e2( e1 ); |
115 | |
116 | BOOST_TEST_EQ( e2, e1 ); |
117 | BOOST_TEST_NOT( e2 != e1 ); |
118 | |
119 | BOOST_TEST_EQ( e2, en ); |
120 | BOOST_TEST_NOT( e2 != en ); |
121 | |
122 | boost::system::error_code e3( e2 ); |
123 | |
124 | BOOST_TEST_EQ( e3, en ); |
125 | BOOST_TEST_NOT( e3 != en ); |
126 | } |
127 | |
128 | return boost::report_errors(); |
129 | } |
130 | |