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
10void f( std::error_code& e1, std::error_code e2 )
11{
12 e1 = e2;
13}
14
15int main()
16{
17 {
18 boost::system::error_code e1;
19 std::error_code e2;
20
21 f( e1, e2 );
22
23 BOOST_TEST_EQ( e1, boost::system::error_code( e2 ) );
24
25 std::error_code e3( e1 );
26 BOOST_TEST_EQ( e3, e2 );
27 }
28
29 {
30 boost::system::error_code e1;
31 std::error_code e2( 0, std::system_category() );
32
33 f( e1, e2 );
34
35 BOOST_TEST_EQ( e1, boost::system::error_code( e2 ) );
36
37 std::error_code e3( e1 );
38 BOOST_TEST_EQ( e3, e2 );
39 }
40
41 {
42 boost::system::error_code e1;
43 std::error_code e2( 5, std::system_category() );
44
45 f( e1, e2 );
46
47 BOOST_TEST_EQ( e1, boost::system::error_code( e2 ) );
48
49 std::error_code e3( e1 );
50 BOOST_TEST_EQ( e3, e2 );
51 }
52
53 {
54 boost::system::error_code e1;
55 std::error_code e2( 0, std::generic_category() );
56
57 f( e1, e2 );
58
59 BOOST_TEST_EQ( e1, boost::system::error_code( e2 ) );
60
61 std::error_code e3( e1 );
62 BOOST_TEST_EQ( e3, e2 );
63 }
64
65 {
66 boost::system::error_code e1;
67 std::error_code e2( ENOENT, std::generic_category() );
68
69 f( e1, e2 );
70
71 BOOST_TEST_EQ( e1, boost::system::error_code( e2 ) );
72
73 std::error_code e3( e1 );
74 BOOST_TEST_EQ( e3, e2 );
75 }
76
77 return boost::report_errors();
78}
79

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