diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 7d77452..19fdec3 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -96,3 +96,4 @@ 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) boost_test(TYPE run SOURCES std_interop_test7.cpp) +boost_test(TYPE run SOURCES std_interop_test8.cpp) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 92bbae6..d0addf0 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -106,3 +106,4 @@ run std_interop_test5.cpp run std_interop_test6.cpp ; run std_interop_test7.cpp ; +run std_interop_test8.cpp ; diff --git a/test/std_interop_test8.cpp b/test/std_interop_test8.cpp new file mode 100644 index 0000000..913afa2 --- /dev/null +++ b/test/std_interop_test8.cpp @@ -0,0 +1,56 @@ +// 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 + +enum my_errc +{ + my_enoent = ENOENT +}; + +template<> struct boost::system::is_error_condition_enum: std::true_type {}; +template<> struct std::is_error_condition_enum: std::true_type {}; + +boost::system::error_condition make_error_condition( my_errc e ) +{ + return boost::system::error_condition( e, boost::system::generic_category() ); +} + +boost::system::error_code make_error_code( my_errc e ) +{ + return boost::system::error_code( e, boost::system::generic_category() ); +} + +int main() +{ + { + boost::system::error_code e1 = make_error_code( my_enoent ); + + BOOST_TEST( e1 == my_enoent ); + BOOST_TEST_NOT( e1 != my_enoent ); + } + + { + std::error_code e1 = make_error_code( my_enoent ); + + BOOST_TEST( e1 == my_enoent ); + BOOST_TEST_NOT( e1 != my_enoent ); + } + + return boost::report_errors(); +} + +#endif