From 01d46f597e891dc00bde1d9f607d57cf49512e67 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Tue, 9 Apr 2024 03:07:07 +0300 Subject: [PATCH] Update test/result_and_fn1v.cpp --- test/result_and_fn1v.cpp | 42 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/test/result_and_fn1v.cpp b/test/result_and_fn1v.cpp index 0a36d165..2f5d51fb 100644 --- a/test/result_and_fn1v.cpp +++ b/test/result_and_fn1v.cpp @@ -55,12 +55,18 @@ int k() return 7; } -void fv1( int /*x*/ ) +static int fv1_called_with; + +void fv1( int x ) { + fv1_called_with = x; } +static int fv2_called; + void fv2() { + ++fv2_called; } int main() @@ -208,10 +214,13 @@ int main() } { + fv1_called_with = 0; + result r( 1 ); result r2 = r & fv1; BOOST_TEST( r2.has_value() ); + BOOST_TEST_EQ( fv1_called_with, 1 ); } { @@ -219,72 +228,103 @@ int main() result r2 = r & fv1; BOOST_TEST( r2.has_value() ); + BOOST_TEST_EQ( fv1_called_with, 1 ); } { + fv1_called_with = 0; + result r2 = result( 1 ) & fv1; BOOST_TEST( r2.has_value() ); + BOOST_TEST_EQ( fv1_called_with, 1 ); } { + fv1_called_with = 0; + result r( in_place_error ); result r2 = r & fv1; BOOST_TEST( r2.has_error() ); + BOOST_TEST_EQ( fv1_called_with, 0 ); } { + fv1_called_with = 0; + result const r( in_place_error ); result r2 = r & fv1; BOOST_TEST( r2.has_error() ); + BOOST_TEST_EQ( fv1_called_with, 0 ); } { + fv1_called_with = 0; + result r2 = result( in_place_error ) & fv1; BOOST_TEST( r2.has_error() ); + BOOST_TEST_EQ( fv1_called_with, 0 ); } { result r; + fv2_called = 0; + result r2 = r & fv2; BOOST_TEST( r2.has_value() ); + BOOST_TEST_EQ( fv2_called, 1 ); } { result const r; + fv2_called = 0; + result r2 = r & fv2; BOOST_TEST( r2.has_value() ); + BOOST_TEST_EQ( fv2_called, 1 ); } { + fv2_called = 0; + result r2 = result() & fv2; BOOST_TEST( r2.has_value() ); + BOOST_TEST_EQ( fv2_called, 1 ); } { result r( in_place_error ); + fv2_called = 0; + result r2 = r & fv2; BOOST_TEST( r2.has_error() ); + BOOST_TEST_EQ( fv2_called, 0 ); } { result const r( in_place_error ); + fv2_called = 0; + result r2 = r & fv2; BOOST_TEST( r2.has_error() ); + BOOST_TEST_EQ( fv2_called, 0 ); } { + fv2_called = 0; + result r2 = result( in_place_error ) & fv2; BOOST_TEST( r2.has_error() ); + BOOST_TEST_EQ( fv2_called, 0 ); } return boost::report_errors();