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
10int 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

source code of boost/libs/system/test/std_interop_test6.cpp