diff --git a/test/result_value_access.cpp b/test/result_value_access.cpp index b8a4630..fdd92ac 100644 --- a/test/result_value_access.cpp +++ b/test/result_value_access.cpp @@ -255,5 +255,91 @@ int main() BOOST_TEST_EQ( (result( ec ).operator->()), static_cast(0) ); } + { + result r; + + BOOST_TEST( r.has_value() ); + BOOST_TEST( !r.has_error() ); + + BOOST_TEST( r ); + BOOST_TEST_NOT( !r ); + + BOOST_TEST_NO_THROW( r.value() ); + + BOOST_TEST( r.operator->() != 0 ); + } + + { + result const r; + + BOOST_TEST( r.has_value() ); + BOOST_TEST( !r.has_error() ); + + BOOST_TEST( r ); + BOOST_TEST_NOT( !r ); + + BOOST_TEST_NO_THROW( r.value() ); + + BOOST_TEST( r.operator->() != 0 ); + } + + { + BOOST_TEST( result().has_value() ); + BOOST_TEST( !result().has_error() ); + + BOOST_TEST( result() ); + BOOST_TEST_NOT( !result() ); + + BOOST_TEST_NO_THROW( result().value() ); + + BOOST_TEST( result().operator->() != 0 ); + } + + { + auto ec = make_error_code( errc::invalid_argument ); + + result r( ec ); + + BOOST_TEST( !r.has_value() ); + BOOST_TEST( r.has_error() ); + + BOOST_TEST_NOT( r ); + BOOST_TEST( !r ); + + BOOST_TEST_THROWS( r.value(), system_error ); + + BOOST_TEST_EQ( r.operator->(), static_cast(0) ); + } + + { + auto ec = make_error_code( errc::invalid_argument ); + + result const r( ec ); + + BOOST_TEST( !r.has_value() ); + BOOST_TEST( r.has_error() ); + + BOOST_TEST_NOT( r ); + BOOST_TEST( !r ); + + BOOST_TEST_THROWS( r.value(), system_error ); + + BOOST_TEST_EQ( r.operator->(), static_cast(0) ); + } + + { + auto ec = make_error_code( errc::invalid_argument ); + + BOOST_TEST( !result( ec ).has_value() ); + BOOST_TEST( result( ec ).has_error() ); + + BOOST_TEST_NOT( result( ec ) ); + BOOST_TEST( !result( ec ) ); + + BOOST_TEST_THROWS( result( ec ).value(), system_error ); + + BOOST_TEST_EQ( result( ec ).operator->(), static_cast(0) ); + } + return boost::report_errors(); }