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 std::error_code e1;
14 std::error_condition en = e1.default_error_condition();
15
16 BOOST_TEST( e1 == en );
17 BOOST_TEST_NOT( e1 != en );
18
19 boost::system::error_code e2( e1 );
20
21 BOOST_TEST_EQ( e2, e1 );
22 BOOST_TEST_NOT( e2 != e1 );
23
24 BOOST_TEST( e2 == en );
25 BOOST_TEST_NOT( e2 != en );
26
27 std::error_code e3( e2 );
28
29 BOOST_TEST( e3 == en );
30 BOOST_TEST_NOT( e3 != en );
31 }
32
33 {
34 std::error_code e1( 5, std::system_category() );
35 std::error_condition en = e1.default_error_condition();
36
37 BOOST_TEST( e1 == en );
38 BOOST_TEST_NOT( e1 != en );
39
40 boost::system::error_code e2( e1 );
41
42 BOOST_TEST_EQ( e2, e1 );
43 BOOST_TEST_NOT( e2 != e1 );
44
45 BOOST_TEST( e2 == en );
46 BOOST_TEST_NOT( e2 != en );
47
48 std::error_code e3( e2 );
49
50 BOOST_TEST( e3 == en );
51 BOOST_TEST_NOT( e3 != en );
52 }
53
54 {
55 std::error_code e1( 0, std::generic_category() );
56 std::error_condition en = e1.default_error_condition();
57
58 BOOST_TEST( e1 == en );
59 BOOST_TEST_NOT( e1 != en );
60
61 boost::system::error_code e2( e1 );
62
63 BOOST_TEST_EQ( e2, e1 );
64 BOOST_TEST_NOT( e2 != e1 );
65
66 BOOST_TEST( e2 == en );
67 BOOST_TEST_NOT( e2 != en );
68
69 std::error_code e3( e2 );
70
71 BOOST_TEST( e3 == en );
72 BOOST_TEST_NOT( e3 != en );
73 }
74
75 {
76 std::error_code e1( 5, std::generic_category() );
77 std::error_condition en = e1.default_error_condition();
78
79 BOOST_TEST( e1 == en );
80 BOOST_TEST_NOT( e1 != en );
81
82 boost::system::error_code e2( e1 );
83
84 BOOST_TEST_EQ( e2, e1 );
85 BOOST_TEST_NOT( e2 != e1 );
86
87 BOOST_TEST( e2 == en );
88 BOOST_TEST_NOT( e2 != en );
89
90 std::error_code e3( e2 );
91
92 BOOST_TEST( e3 == en );
93 BOOST_TEST_NOT( e3 != en );
94 }
95
96 return boost::report_errors();
97}
98

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