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 {
15 sys::error_code ec;
16
17 BOOST_TEST_EQ( ec.value(), 0 );
18 BOOST_TEST( ec.category() == sys::system_category() );
19
20 BOOST_TEST_EQ( ec.what(), ec.message() + " [system:0]" );
21 }
22
23 {
24 sys::error_code ec( 5, sys::generic_category() );
25
26 BOOST_TEST_EQ( ec.value(), 5 );
27 BOOST_TEST( ec.category() == sys::generic_category() );
28
29 BOOST_TEST_EQ( ec.what(), ec.message() + " [generic:5]" );
30 }
31
32 {
33 sys::error_code ec( 5, sys::system_category() );
34
35 BOOST_TEST_EQ( ec.value(), 5 );
36 BOOST_TEST( ec.category() == sys::system_category() );
37
38 BOOST_TEST_EQ( ec.what(), ec.message() + " [system:5]" );
39 }
40
41 {
42 BOOST_STATIC_CONSTEXPR boost::source_location loc = BOOST_CURRENT_LOCATION;
43
44 sys::error_code ec( 5, sys::generic_category(), &loc );
45
46 BOOST_TEST_EQ( ec.value(), 5 );
47 BOOST_TEST( ec.category() == sys::generic_category() );
48 BOOST_TEST_EQ( &ec.location(), &loc );
49
50 BOOST_TEST_EQ( ec.what(), ec.message() + " [generic:5 at " + loc.to_string() + "]" );
51 }
52
53 {
54 BOOST_STATIC_CONSTEXPR boost::source_location loc = BOOST_CURRENT_LOCATION;
55
56 sys::error_code ec( 5, sys::system_category(), &loc );
57
58 BOOST_TEST_EQ( ec.value(), 5 );
59 BOOST_TEST( ec.category() == sys::system_category() );
60 BOOST_TEST_EQ( &ec.location(), &loc );
61
62 BOOST_TEST_EQ( ec.what(), ec.message() + " [system:5 at " + loc.to_string() + "]" );
63 }
64
65 {
66 std::error_code ec;
67 sys::error_code ec2( ec );
68
69 BOOST_TEST_EQ( ec2.what(), ec2.message() + " [std:system:0]" );
70 }
71
72 {
73 std::error_code ec( 5, std::generic_category() );
74 sys::error_code ec2( ec );
75
76 BOOST_TEST_EQ( ec2.what(), ec2.message() + " [std:generic:5]" );
77 }
78
79 {
80 std::error_code ec( 5, std::system_category() );
81 sys::error_code ec2( ec );
82
83 BOOST_TEST_EQ( ec2.what(), ec2.message() + " [std:system:5]" );
84 }
85
86 return boost::report_errors();
87}
88

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