1// Copyright 2020, 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/system/generic_category.hpp>
7#include <boost/system/system_category.hpp>
8#include <boost/core/lightweight_test.hpp>
9
10namespace sys = boost::system;
11
12int main()
13{
14 char buffer[ 1024 ];
15
16 sys::error_code ec;
17
18 BOOST_TEST_EQ( ec.value(), 0 );
19 BOOST_TEST( ec.category() == sys::system_category() );
20 BOOST_TEST_EQ( ec.message(), ec.category().message( ec.value() ) );
21 BOOST_TEST_CSTR_EQ( ec.message( buffer, sizeof( buffer ) ), ec.category().message( ec.value(), buffer, sizeof( buffer ) ) );
22 BOOST_TEST( !ec.failed() );
23 BOOST_TEST( !ec );
24
25 BOOST_TEST_EQ( ec.to_string(), std::string( "system:0" ) );
26
27 {
28 sys::error_code ec2( ec );
29
30 BOOST_TEST_EQ( ec2.value(), 0 );
31 BOOST_TEST( ec2.category() == sys::system_category() );
32 BOOST_TEST_EQ( ec2.message(), ec2.category().message( ec2.value() ) );
33 BOOST_TEST_CSTR_EQ( ec2.message( buffer, sizeof( buffer ) ), ec2.category().message( ec2.value(), buffer, sizeof( buffer ) ) );
34 BOOST_TEST( !ec2.failed() );
35 BOOST_TEST( !ec2 );
36
37 BOOST_TEST_EQ( ec, ec2 );
38 BOOST_TEST_NOT( ec != ec2 );
39
40 BOOST_TEST_EQ( ec2.to_string(), std::string( "system:0" ) );
41 }
42
43 {
44 sys::error_code ec2( ec.value(), ec.category() );
45
46 BOOST_TEST_EQ( ec2.value(), 0 );
47 BOOST_TEST( ec2.category() == sys::system_category() );
48 BOOST_TEST_EQ( ec2.message(), ec2.category().message( ec2.value() ) );
49 BOOST_TEST_CSTR_EQ( ec2.message( buffer, sizeof( buffer ) ), ec2.category().message( ec2.value(), buffer, sizeof( buffer ) ) );
50 BOOST_TEST( !ec2.failed() );
51 BOOST_TEST( !ec2 );
52
53 BOOST_TEST_EQ( ec, ec2 );
54 BOOST_TEST_NOT( ec != ec2 );
55
56 BOOST_TEST_EQ( ec2.to_string(), std::string( "system:0" ) );
57 }
58
59 {
60 sys::error_code ec2( 5, sys::generic_category() );
61
62 BOOST_TEST_EQ( ec2.value(), 5 );
63 BOOST_TEST( ec2.category() == sys::generic_category() );
64 BOOST_TEST_EQ( ec2.message(), ec2.category().message( ec2.value() ) );
65 BOOST_TEST_CSTR_EQ( ec2.message( buffer, sizeof( buffer ) ), ec2.category().message( ec2.value(), buffer, sizeof( buffer ) ) );
66 BOOST_TEST( ec2.failed() );
67 BOOST_TEST( ec2 );
68 BOOST_TEST_NOT( !ec2 );
69
70 BOOST_TEST_NE( ec, ec2 );
71 BOOST_TEST_NOT( ec == ec2 );
72
73 BOOST_TEST_EQ( ec2.to_string(), std::string( "generic:5" ) );
74 }
75
76 {
77 sys::error_code ec2( 5, sys::system_category() );
78
79 BOOST_TEST_EQ( ec2.value(), 5 );
80 BOOST_TEST( ec2.category() == sys::system_category() );
81 BOOST_TEST_EQ( ec2.message(), ec2.category().message( ec2.value() ) );
82 BOOST_TEST_CSTR_EQ( ec2.message( buffer, sizeof( buffer ) ), ec2.category().message( ec2.value(), buffer, sizeof( buffer ) ) );
83 BOOST_TEST( ec2.failed() );
84 BOOST_TEST( ec2 );
85 BOOST_TEST_NOT( !ec2 );
86
87 BOOST_TEST_NE( ec, ec2 );
88 BOOST_TEST_NOT( ec == ec2 );
89
90 BOOST_TEST_EQ( ec2.to_string(), std::string( "system:5" ) );
91 }
92
93 return boost::report_errors();
94}
95

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