diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index cea6d10..ee73b6b 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -128,6 +128,7 @@ system-run generic_category_test.cpp ; system-run system_category_test.cpp ; system-run after_main_test.cpp ; system-run failed_test.cpp ; +system-run- failed_constexpr_test.cpp ; # Quick (CI) test run quick.cpp ; diff --git a/test/failed_constexpr_test.cpp b/test/failed_constexpr_test.cpp new file mode 100644 index 0000000..e9ccab5 --- /dev/null +++ b/test/failed_constexpr_test.cpp @@ -0,0 +1,58 @@ + +// Copyright 2018 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. + +#include +#include +#include + +#if !defined(BOOST_SYSTEM_HAS_CONSTEXPR) + +BOOST_PRAGMA_MESSAGE("Skipping constexpr test, BOOST_SYSTEM_HAS_CONSTEXPR isn't defined") +int main() {} + +#else + +using namespace boost::system; + +constexpr error_code ec1( 1, system_category() ); + +BOOST_STATIC_ASSERT( ec1.failed() ); +BOOST_STATIC_ASSERT( ec1 ); +BOOST_STATIC_ASSERT( !!ec1 ); + +constexpr error_code ec2( 2, generic_category() ); + +BOOST_STATIC_ASSERT( ec2.failed() ); +BOOST_STATIC_ASSERT( ec2 ); +BOOST_STATIC_ASSERT( !!ec2 ); + +constexpr error_code ec3; + +BOOST_STATIC_ASSERT( !ec3.failed() ); +BOOST_STATIC_ASSERT( ec3? false: true ); +BOOST_STATIC_ASSERT( !ec3 ); + +constexpr error_condition en1( 1, system_category() ); + +BOOST_STATIC_ASSERT( en1.failed() ); +BOOST_STATIC_ASSERT( en1 ); +BOOST_STATIC_ASSERT( !!en1 ); + +constexpr error_condition en2( 2, generic_category() ); + +BOOST_STATIC_ASSERT( en2.failed() ); +BOOST_STATIC_ASSERT( en2 ); +BOOST_STATIC_ASSERT( !!en2 ); + +constexpr error_condition en3; + +BOOST_STATIC_ASSERT( !en3.failed() ); +BOOST_STATIC_ASSERT( en3? false: true ); +BOOST_STATIC_ASSERT( !en3 ); + +int main() +{ +} + +#endif