]>
Commit | Line | Data |
---|---|---|
1e59de90 TL |
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 <boost/config/pragma_message.hpp> | |
8 | #include <cerrno> | |
9 | ||
10 | #if !defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) | |
11 | ||
12 | BOOST_PRAGMA_MESSAGE( "BOOST_SYSTEM_HAS_SYSTEM_ERROR not defined, test will be skipped" ) | |
13 | int main() {} | |
14 | ||
15 | #else | |
16 | ||
17 | #include <system_error> | |
18 | ||
19 | int main() | |
20 | { | |
21 | { | |
22 | boost::system::error_code e1; | |
23 | boost::system::error_condition en = e1.default_error_condition(); | |
24 | ||
25 | BOOST_TEST_EQ( e1, en ); | |
26 | BOOST_TEST_NOT( e1 != en ); | |
27 | ||
28 | std::error_code e2( e1 ); | |
29 | ||
30 | BOOST_TEST_EQ( e2, e1 ); | |
31 | BOOST_TEST_NOT( e2 != e1 ); | |
32 | ||
33 | #if defined(_LIBCPP_VERSION) | |
34 | ||
35 | // Under MS STL and libstdc++, std::error_code() does not compare | |
36 | // equal to std::error_condition(). Go figure. | |
37 | ||
38 | BOOST_TEST_EQ( e2, en ); | |
39 | BOOST_TEST_NOT( e2 != en ); | |
40 | ||
41 | boost::system::error_code e3( e2 ); | |
42 | ||
43 | BOOST_TEST_EQ( e3, en ); | |
44 | BOOST_TEST_NOT( e3 != en ); | |
45 | ||
46 | #endif | |
47 | } | |
48 | ||
49 | { | |
50 | boost::system::error_code e1( 0, boost::system::system_category() ); | |
51 | boost::system::error_condition en = e1.default_error_condition(); | |
52 | ||
53 | BOOST_TEST_EQ( e1, en ); | |
54 | BOOST_TEST_NOT( e1 != en ); | |
55 | ||
56 | std::error_code e2( e1 ); | |
57 | ||
58 | BOOST_TEST_EQ( e2, e1 ); | |
59 | BOOST_TEST_NOT( e2 != e1 ); | |
60 | ||
61 | #if defined(_LIBCPP_VERSION) | |
62 | ||
63 | BOOST_TEST_EQ( e2, en ); | |
64 | BOOST_TEST_NOT( e2 != en ); | |
65 | ||
66 | boost::system::error_code e3( e2 ); | |
67 | ||
68 | BOOST_TEST_EQ( e3, en ); | |
69 | BOOST_TEST_NOT( e3 != en ); | |
70 | ||
71 | #endif | |
72 | } | |
73 | ||
74 | { | |
75 | boost::system::error_code e1( 5, boost::system::system_category() ); | |
76 | boost::system::error_condition en = e1.default_error_condition(); | |
77 | ||
78 | BOOST_TEST_EQ( e1, en ); | |
79 | BOOST_TEST_NOT( e1 != en ); | |
80 | ||
81 | std::error_code e2( e1 ); | |
82 | ||
83 | BOOST_TEST_EQ( e2, e1 ); | |
84 | BOOST_TEST_NOT( e2 != e1 ); | |
85 | ||
86 | BOOST_TEST_EQ( e2, en ); | |
87 | BOOST_TEST_NOT( e2 != en ); | |
88 | ||
89 | boost::system::error_code e3( e2 ); | |
90 | ||
91 | BOOST_TEST_EQ( e3, en ); | |
92 | BOOST_TEST_NOT( e3 != en ); | |
93 | } | |
94 | ||
95 | { | |
96 | boost::system::error_code e1( 0, boost::system::generic_category() ); | |
97 | boost::system::error_condition en = e1.default_error_condition(); | |
98 | ||
99 | BOOST_TEST_EQ( e1, en ); | |
100 | BOOST_TEST_NOT( e1 != en ); | |
101 | ||
102 | std::error_code e2( e1 ); | |
103 | ||
104 | BOOST_TEST_EQ( e2, e1 ); | |
105 | BOOST_TEST_NOT( e2 != e1 ); | |
106 | ||
107 | BOOST_TEST_EQ( e2, en ); | |
108 | BOOST_TEST_NOT( e2 != en ); | |
109 | ||
110 | boost::system::error_code e3( e2 ); | |
111 | ||
112 | BOOST_TEST_EQ( e3, en ); | |
113 | BOOST_TEST_NOT( e3 != en ); | |
114 | } | |
115 | ||
116 | { | |
117 | boost::system::error_code e1( 5, boost::system::generic_category() ); | |
118 | boost::system::error_condition en = e1.default_error_condition(); | |
119 | ||
120 | BOOST_TEST_EQ( e1, en ); | |
121 | BOOST_TEST_NOT( e1 != en ); | |
122 | ||
123 | std::error_code e2( e1 ); | |
124 | ||
125 | BOOST_TEST_EQ( e2, e1 ); | |
126 | BOOST_TEST_NOT( e2 != e1 ); | |
127 | ||
128 | BOOST_TEST_EQ( e2, en ); | |
129 | BOOST_TEST_NOT( e2 != en ); | |
130 | ||
131 | boost::system::error_code e3( e2 ); | |
132 | ||
133 | BOOST_TEST_EQ( e3, en ); | |
134 | BOOST_TEST_NOT( e3 != en ); | |
135 | } | |
136 | ||
137 | return boost::report_errors(); | |
138 | } | |
139 | ||
140 | #endif |