From c2d044f34e59c4168001863acf80985f0e77d17a Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 14 Jun 2021 04:09:24 +0300 Subject: [PATCH] Add std_interop_test6 --- test/CMakeLists.txt | 1 + test/Jamfile.v2 | 1 + test/std_interop_test6.cpp | 129 +++++++++++++++++++++++++++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 test/std_interop_test6.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8d5ee7a..36d5dd0 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -94,3 +94,4 @@ boost_test(TYPE run SOURCES std_interop_test2.cpp) boost_test(TYPE run SOURCES std_interop_test3.cpp) boost_test(TYPE run SOURCES std_interop_test4.cpp) boost_test(TYPE run SOURCES std_interop_test5.cpp) +boost_test(TYPE run SOURCES std_interop_test6.cpp) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 7130e7b..0ad92a4 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -98,3 +98,4 @@ run std_interop_test2.cpp ; run std_interop_test3.cpp ; run std_interop_test4.cpp ; run std_interop_test5.cpp ; +run std_interop_test6.cpp ; diff --git a/test/std_interop_test6.cpp b/test/std_interop_test6.cpp new file mode 100644 index 0000000..e1423f2 --- /dev/null +++ b/test/std_interop_test6.cpp @@ -0,0 +1,129 @@ +// Copyright 2021 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// http://www.boost.org/LICENSE_1_0.txt + +#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 + +int main() +{ + { + boost::system::error_code e1; + boost::system::error_condition en = e1.default_error_condition(); + + BOOST_TEST_EQ( e1, en ); + BOOST_TEST_NOT( e1 != en ); + + std::error_code e2( e1 ); + + BOOST_TEST_EQ( e2, e1 ); + BOOST_TEST_NOT( e2 != e1 ); + + BOOST_TEST( e2 == en ); + BOOST_TEST_NOT( e2 != en ); + + boost::system::error_code e3( e2 ); + + BOOST_TEST_EQ( e3, en ); + BOOST_TEST_NOT( e3 != en ); + } + + { + boost::system::error_code e1( 0, boost::system::system_category() ); + boost::system::error_condition en = e1.default_error_condition(); + + BOOST_TEST_EQ( e1, en ); + BOOST_TEST_NOT( e1 != en ); + + std::error_code e2( e1 ); + + BOOST_TEST_EQ( e2, e1 ); + BOOST_TEST_NOT( e2 != e1 ); + + BOOST_TEST( e2 == en ); + BOOST_TEST_NOT( e2 != en ); + + boost::system::error_code e3( e2 ); + + BOOST_TEST_EQ( e3, en ); + BOOST_TEST_NOT( e3 != en ); + } + + { + boost::system::error_code e1( 5, boost::system::system_category() ); + boost::system::error_condition en = e1.default_error_condition(); + + BOOST_TEST_EQ( e1, en ); + BOOST_TEST_NOT( e1 != en ); + + std::error_code e2( e1 ); + + BOOST_TEST_EQ( e2, e1 ); + BOOST_TEST_NOT( e2 != e1 ); + + BOOST_TEST( e2 == en ); + BOOST_TEST_NOT( e2 != en ); + + boost::system::error_code e3( e2 ); + + BOOST_TEST_EQ( e3, en ); + BOOST_TEST_NOT( e3 != en ); + } + + { + boost::system::error_code e1( 0, boost::system::generic_category() ); + boost::system::error_condition en = e1.default_error_condition(); + + BOOST_TEST_EQ( e1, en ); + BOOST_TEST_NOT( e1 != en ); + + std::error_code e2( e1 ); + + BOOST_TEST_EQ( e2, e1 ); + BOOST_TEST_NOT( e2 != e1 ); + + BOOST_TEST( e2 == en ); + BOOST_TEST_NOT( e2 != en ); + + boost::system::error_code e3( e2 ); + + BOOST_TEST_EQ( e3, en ); + BOOST_TEST_NOT( e3 != en ); + } + + { + boost::system::error_code e1( 5, boost::system::generic_category() ); + boost::system::error_condition en = e1.default_error_condition(); + + BOOST_TEST_EQ( e1, en ); + BOOST_TEST_NOT( e1 != en ); + + std::error_code e2( e1 ); + + BOOST_TEST_EQ( e2, e1 ); + BOOST_TEST_NOT( e2 != e1 ); + + BOOST_TEST( e2 == en ); + BOOST_TEST_NOT( e2 != en ); + + boost::system::error_code e3( e2 ); + + BOOST_TEST_EQ( e3, en ); + BOOST_TEST_NOT( e3 != en ); + } + + return boost::report_errors(); +} + +#endif