diff --git a/test/result_move_assign.cpp b/test/result_move_assign.cpp index 1a7ff72..1266b74 100644 --- a/test/result_move_assign.cpp +++ b/test/result_move_assign.cpp @@ -100,6 +100,17 @@ int main() BOOST_TEST_EQ( r2.value(), 0 ); } + { + result r2; + + r2 = result(); + + BOOST_TEST( r2.has_value() ); + BOOST_TEST( !r2.has_error() ); + + BOOST_TEST_EQ( r2.value(), 0 ); + } + { result r; result r2( 1 ); @@ -112,6 +123,17 @@ int main() BOOST_TEST_EQ( r2.value(), 0 ); } + { + result r2( 1 ); + + r2 = result(); + + BOOST_TEST( r2.has_value() ); + BOOST_TEST( !r2.has_error() ); + + BOOST_TEST_EQ( r2.value(), 0 ); + } + { result r; result r2( ENOENT, generic_category() ); @@ -124,6 +146,17 @@ int main() BOOST_TEST_EQ( r2.value(), 0 ); } + { + result r2( ENOENT, generic_category() ); + + r2 = result(); + + BOOST_TEST( r2.has_value() ); + BOOST_TEST( !r2.has_error() ); + + BOOST_TEST_EQ( r2.value(), 0 ); + } + BOOST_TEST_EQ( X::instances, 0 ); { @@ -302,6 +335,19 @@ int main() BOOST_TEST_EQ( r2.error(), ec ); } + { + auto ec = make_error_code( errc::invalid_argument ); + + result r2; + + r2 = result( ec ); + + BOOST_TEST( !r2.has_value() ); + BOOST_TEST( r2.has_error() ); + + BOOST_TEST_EQ( r2.error(), ec ); + } + { auto ec = make_error_code( errc::invalid_argument ); @@ -316,6 +362,19 @@ int main() BOOST_TEST_EQ( r2.error(), ec ); } + { + auto ec = make_error_code( errc::invalid_argument ); + + result r2( 1 ); + + r2 = result( ec ); + + BOOST_TEST( !r2.has_value() ); + BOOST_TEST( r2.has_error() ); + + BOOST_TEST_EQ( r2.error(), ec ); + } + { auto ec = make_error_code( errc::invalid_argument ); @@ -330,6 +389,19 @@ int main() BOOST_TEST_EQ( r2.error(), ec ); } + { + auto ec = make_error_code( errc::invalid_argument ); + + result r2( ENOENT, generic_category() ); + + r2 = result( ec ); + + BOOST_TEST( !r2.has_value() ); + BOOST_TEST( r2.has_error() ); + + BOOST_TEST_EQ( r2.error(), ec ); + } + BOOST_TEST_EQ( X::instances, 0 ); { @@ -436,5 +508,97 @@ int main() BOOST_TEST_EQ( Y::instances, 0 ); + { + result r; + result r2; + + r2 = std::move( r ); + + BOOST_TEST( r2.has_value() ); + BOOST_TEST( !r2.has_error() ); + } + + { + result r2; + + r2 = result(); + + BOOST_TEST( r2.has_value() ); + BOOST_TEST( !r2.has_error() ); + } + + { + result r; + result r2( ENOENT, generic_category() ); + + r2 = std::move( r ); + + BOOST_TEST( r2.has_value() ); + BOOST_TEST( !r2.has_error() ); + } + + { + result r2( ENOENT, generic_category() ); + + r2 = result(); + + BOOST_TEST( r2.has_value() ); + BOOST_TEST( !r2.has_error() ); + } + + { + auto ec = make_error_code( errc::invalid_argument ); + + result r( ec ); + result r2; + + r2 = std::move( r ); + + BOOST_TEST( !r2.has_value() ); + BOOST_TEST( r2.has_error() ); + + BOOST_TEST_EQ( r2.error(), ec ); + } + + { + auto ec = make_error_code( errc::invalid_argument ); + + result r2; + + r2 = result( ec ); + + BOOST_TEST( !r2.has_value() ); + BOOST_TEST( r2.has_error() ); + + BOOST_TEST_EQ( r2.error(), ec ); + } + + { + auto ec = make_error_code( errc::invalid_argument ); + + result r( ec ); + result r2( ENOENT, generic_category() ); + + r2 = std::move( r ); + + BOOST_TEST( !r2.has_value() ); + BOOST_TEST( r2.has_error() ); + + BOOST_TEST_EQ( r2.error(), ec ); + } + + { + auto ec = make_error_code( errc::invalid_argument ); + + result r2( ENOENT, generic_category() ); + + r2 = result( ec ); + + BOOST_TEST( !r2.has_value() ); + BOOST_TEST( r2.has_error() ); + + BOOST_TEST_EQ( r2.error(), ec ); + } + return boost::report_errors(); }