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 | |
10 | namespace sys = boost::system; |
11 | |
12 | int 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 | |