diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 487f587..13ebfd1 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -102,6 +102,7 @@ boost_test(TYPE run SOURCES std_interop_test9.cpp) boost_test(TYPE run SOURCES ec_location_test.cpp) boost_test(TYPE run SOURCES error_condition_test3.cpp) +boost_test(TYPE run SOURCES error_code_test2.cpp) # result diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index bc529f1..0c3cd6c 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -124,6 +124,7 @@ run std_interop_test9.cpp ; run ec_location_test.cpp ; run error_condition_test3.cpp ; +run error_code_test2.cpp ; # result diff --git a/test/error_code_test2.cpp b/test/error_code_test2.cpp new file mode 100644 index 0000000..e4686d4 --- /dev/null +++ b/test/error_code_test2.cpp @@ -0,0 +1,94 @@ +// Copyright 2020, 2021 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// http://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include + +namespace sys = boost::system; + +int main() +{ + char buffer[ 1024 ]; + + sys::error_code ec; + + BOOST_TEST_EQ( ec.value(), 0 ); + BOOST_TEST( ec.category() == sys::system_category() ); + BOOST_TEST_EQ( ec.message(), ec.category().message( ec.value() ) ); + BOOST_TEST_CSTR_EQ( ec.message( buffer, sizeof( buffer ) ), ec.category().message( ec.value(), buffer, sizeof( buffer ) ) ); + BOOST_TEST( !ec.failed() ); + BOOST_TEST( !ec ); + + BOOST_TEST_EQ( ec.to_string(), std::string( "system:0" ) ); + + { + sys::error_code ec2( ec ); + + BOOST_TEST_EQ( ec2.value(), 0 ); + BOOST_TEST( ec2.category() == sys::system_category() ); + BOOST_TEST_EQ( ec2.message(), ec2.category().message( ec2.value() ) ); + BOOST_TEST_CSTR_EQ( ec2.message( buffer, sizeof( buffer ) ), ec2.category().message( ec2.value(), buffer, sizeof( buffer ) ) ); + BOOST_TEST( !ec2.failed() ); + BOOST_TEST( !ec2 ); + + BOOST_TEST_EQ( ec, ec2 ); + BOOST_TEST_NOT( ec != ec2 ); + + BOOST_TEST_EQ( ec2.to_string(), std::string( "system:0" ) ); + } + + { + sys::error_code ec2( ec.value(), ec.category() ); + + BOOST_TEST_EQ( ec2.value(), 0 ); + BOOST_TEST( ec2.category() == sys::system_category() ); + BOOST_TEST_EQ( ec2.message(), ec2.category().message( ec2.value() ) ); + BOOST_TEST_CSTR_EQ( ec2.message( buffer, sizeof( buffer ) ), ec2.category().message( ec2.value(), buffer, sizeof( buffer ) ) ); + BOOST_TEST( !ec2.failed() ); + BOOST_TEST( !ec2 ); + + BOOST_TEST_EQ( ec, ec2 ); + BOOST_TEST_NOT( ec != ec2 ); + + BOOST_TEST_EQ( ec2.to_string(), std::string( "system:0" ) ); + } + + { + sys::error_code ec2( 5, sys::generic_category() ); + + BOOST_TEST_EQ( ec2.value(), 5 ); + BOOST_TEST( ec2.category() == sys::generic_category() ); + BOOST_TEST_EQ( ec2.message(), ec2.category().message( ec2.value() ) ); + BOOST_TEST_CSTR_EQ( ec2.message( buffer, sizeof( buffer ) ), ec2.category().message( ec2.value(), buffer, sizeof( buffer ) ) ); + BOOST_TEST( ec2.failed() ); + BOOST_TEST( ec2 ); + BOOST_TEST_NOT( !ec2 ); + + BOOST_TEST_NE( ec, ec2 ); + BOOST_TEST( ec != ec2 ); + + BOOST_TEST_EQ( ec2.to_string(), std::string( "generic:5" ) ); + } + + { + sys::error_code ec2( 5, sys::system_category() ); + + BOOST_TEST_EQ( ec2.value(), 5 ); + BOOST_TEST( ec2.category() == sys::system_category() ); + BOOST_TEST_EQ( ec2.message(), ec2.category().message( ec2.value() ) ); + BOOST_TEST_CSTR_EQ( ec2.message( buffer, sizeof( buffer ) ), ec2.category().message( ec2.value(), buffer, sizeof( buffer ) ) ); + BOOST_TEST( ec2.failed() ); + BOOST_TEST( ec2 ); + BOOST_TEST_NOT( !ec2 ); + + BOOST_TEST_NE( ec, ec2 ); + BOOST_TEST( ec != ec2 ); + + BOOST_TEST_EQ( ec2.to_string(), std::string( "system:5" ) ); + } + + return boost::report_errors(); +}