diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 1648d46..e964b5a 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -62,3 +62,5 @@ system-run failed_constexpr_test.cpp ; run quick.cpp ; run warnings_test.cpp : : : all on gcc:-Wnon-virtual-dtor clang:-Wnon-virtual-dtor ; + +system-run std_ec_mismatch_test.cpp std_ec_mismatch_1.cpp std_ec_mismatch_2.cpp ; diff --git a/test/std_ec_mismatch_1.cpp b/test/std_ec_mismatch_1.cpp new file mode 100644 index 0000000..a4503ec --- /dev/null +++ b/test/std_ec_mismatch_1.cpp @@ -0,0 +1,26 @@ + +// Copyright 2019 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. + +#include + +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + +#include + +namespace lib1 +{ + +std::error_code get_system_code() +{ + return boost::system::error_code( 0, boost::system::system_category() ); +} + +std::error_code get_generic_code() +{ + return boost::system::error_code( 0, boost::system::generic_category() ); +} + +} // namespace lib1 + +#endif diff --git a/test/std_ec_mismatch_2.cpp b/test/std_ec_mismatch_2.cpp new file mode 100644 index 0000000..1904f62 --- /dev/null +++ b/test/std_ec_mismatch_2.cpp @@ -0,0 +1,26 @@ + +// Copyright 2019 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. + +#include + +#if defined(BOOST_SYSTEM_HAS_SYSTEM_ERROR) + +#include + +namespace lib2 +{ + +std::error_code get_system_code() +{ + return boost::system::error_code( 0, boost::system::system_category() ); +} + +std::error_code get_generic_code() +{ + return boost::system::error_code( 0, boost::system::generic_category() ); +} + +} // namespace lib2 + +#endif diff --git a/test/std_ec_mismatch_test.cpp b/test/std_ec_mismatch_test.cpp new file mode 100644 index 0000000..19da8da --- /dev/null +++ b/test/std_ec_mismatch_test.cpp @@ -0,0 +1,56 @@ + +// Copyright 2019 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. + +#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 +#include + +using namespace boost::system; + +namespace lib1 +{ + +std::error_code get_system_code(); +std::error_code get_generic_code(); + +} // namespace lib1 + +namespace lib2 +{ + +std::error_code get_system_code(); +std::error_code get_generic_code(); + +} // namespace lib2 + +int main() +{ + { + std::error_code e1 = lib1::get_system_code(); + std::error_code e2 = lib2::get_system_code(); + + BOOST_TEST_EQ( e1, e2 ); + } + + { + std::error_code e1 = lib1::get_generic_code(); + std::error_code e2 = lib2::get_generic_code(); + + BOOST_TEST_EQ( e1, e2 ); + } + + return boost::report_errors(); +} + +#endif