diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index f8d32d2..487f587 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -101,6 +101,8 @@ 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) + # result set(BOOST_TEST_COMPILE_FEATURES cxx_std_11) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index fc62a42..bc529f1 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -123,6 +123,8 @@ run std_interop_test9.cpp ; run ec_location_test.cpp ; +run error_condition_test3.cpp ; + # result import ../../config/checks/config : requires ; diff --git a/test/error_condition_test3.cpp b/test/error_condition_test3.cpp new file mode 100644 index 0000000..4d3c58d --- /dev/null +++ b/test/error_condition_test3.cpp @@ -0,0 +1,84 @@ +// 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_condition en; + + BOOST_TEST_EQ( en.value(), 0 ); + BOOST_TEST( en.category() == sys::generic_category() ); + BOOST_TEST_EQ( en.message(), en.category().message( en.value() ) ); + BOOST_TEST_CSTR_EQ( en.message( buffer, sizeof( buffer ) ), en.category().message( en.value(), buffer, sizeof( buffer ) ) ); + BOOST_TEST( !en.failed() ); + BOOST_TEST( !en ); + + { + sys::error_condition en2( en ); + + BOOST_TEST_EQ( en2.value(), 0 ); + BOOST_TEST( en2.category() == sys::generic_category() ); + BOOST_TEST_EQ( en2.message(), en2.category().message( en2.value() ) ); + BOOST_TEST_CSTR_EQ( en2.message( buffer, sizeof( buffer ) ), en2.category().message( en2.value(), buffer, sizeof( buffer ) ) ); + BOOST_TEST( !en2.failed() ); + BOOST_TEST( !en2 ); + + BOOST_TEST_EQ( en, en2 ); + BOOST_TEST_NOT( en != en2 ); + } + + { + sys::error_condition en2( en.value(), en.category() ); + + BOOST_TEST_EQ( en2.value(), 0 ); + BOOST_TEST( en2.category() == sys::generic_category() ); + BOOST_TEST_EQ( en2.message(), en2.category().message( en2.value() ) ); + BOOST_TEST_CSTR_EQ( en2.message( buffer, sizeof( buffer ) ), en2.category().message( en2.value(), buffer, sizeof( buffer ) ) ); + BOOST_TEST( !en2.failed() ); + BOOST_TEST( !en2 ); + + BOOST_TEST_EQ( en, en2 ); + BOOST_TEST_NOT( en != en2 ); + } + + { + sys::error_condition en2( 5, sys::generic_category() ); + + BOOST_TEST_EQ( en2.value(), 5 ); + BOOST_TEST( en2.category() == sys::generic_category() ); + BOOST_TEST_EQ( en2.message(), en2.category().message( en2.value() ) ); + BOOST_TEST_CSTR_EQ( en2.message( buffer, sizeof( buffer ) ), en2.category().message( en2.value(), buffer, sizeof( buffer ) ) ); + BOOST_TEST( en2.failed() ); + BOOST_TEST( en2 ); + BOOST_TEST_NOT( !en2 ); + + BOOST_TEST_NE( en, en2 ); + BOOST_TEST( en != en2 ); + } + + { + sys::error_condition en2( 5, sys::system_category() ); + + BOOST_TEST_EQ( en2.value(), 5 ); + BOOST_TEST( en2.category() == sys::system_category() ); + BOOST_TEST_EQ( en2.message(), en2.category().message( en2.value() ) ); + BOOST_TEST_CSTR_EQ( en2.message( buffer, sizeof( buffer ) ), en2.category().message( en2.value(), buffer, sizeof( buffer ) ) ); + BOOST_TEST( en2.failed() ); + BOOST_TEST( en2 ); + BOOST_TEST_NOT( !en2 ); + + BOOST_TEST_NE( en, en2 ); + BOOST_TEST( en != en2 ); + } + + return boost::report_errors(); +}