From 65ed1eef667362103e3069c479593b4fe312a036 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Thu, 17 Mar 2022 21:22:22 +0200 Subject: [PATCH] Add std_interop_test14.cpp (refs #79) --- test/CMakeLists.txt | 1 + test/Jamfile.v2 | 1 + test/std_interop_test14.cpp | 57 +++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 test/std_interop_test14.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c15ed12..7215e86 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -119,6 +119,7 @@ boost_test(TYPE run SOURCES std_interop_test12.cpp) boost_test(TYPE run SOURCES errc_test4.cpp) boost_test(TYPE run SOURCES std_interop_test13.cpp) +boost_test(TYPE run SOURCES std_interop_test14.cpp) # result diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index bb30ad8..f2e77dc 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -143,6 +143,7 @@ run std_interop_test12.cpp ; run errc_test4.cpp ; run std_interop_test13.cpp ; +run std_interop_test14.cpp ; # result diff --git a/test/std_interop_test14.cpp b/test/std_interop_test14.cpp new file mode 100644 index 0000000..d5b2dda --- /dev/null +++ b/test/std_interop_test14.cpp @@ -0,0 +1,57 @@ +// Copyright 2021, 2022 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// http://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + +BOOST_PRAGMA_MESSAGE( "BOOST_SYSTEM_HAS_SYSTEM_ERROR not defined, test will be skipped" ) +int main() {} + +#else + +#include + +class my_category_impl: public boost::system::error_category +{ +public: + + char const* name() const BOOST_NOEXCEPT + { + return "mycat"; + } + + std::string message( int /*ev*/ ) const + { + return "Unknown error"; + } +}; + +boost::system::error_category const& my_category() +{ + static my_category_impl mycat; + return mycat; +} + +int main() +{ + { + boost::system::error_code e1( 5, my_category() ); + std::error_code e2( e1 ); + boost::system::error_code e3( e2 ); + + BOOST_TEST_EQ( e1, e3 ); + BOOST_TEST_EQ( e1.value(), e3.value() ); + BOOST_TEST_EQ( &e1.category(), &e3.category() ); + } + + return boost::report_errors(); +} + +#endif