@ -433,10 +433,10 @@ UntypedActionResultHolderBase* UntypedFunctionMockerBase::UntypedInvokeWith(
// The UntypedFindMatchingExpectation() function acquires and
// releases g_gmock_mutex.
const ExpectationBase * const untyped_expectation =
this - > UntypedFindMatchingExpectation (
untyped_args , & untyped_action , & is_excessive ,
& ss , & why ) ;
this - > UntypedFindMatchingExpectation ( untyped_args , & untyped_action ,
& is_excessive , & ss , & why ) ;
const bool found = untyped_expectation ! = nullptr ;
// True if and only if we need to print the call's arguments
@ -461,26 +461,42 @@ UntypedActionResultHolderBase* UntypedFunctionMockerBase::UntypedInvokeWith(
untyped_expectation - > DescribeLocationTo ( & loc ) ;
}
UntypedActionResultHolderBase * const result =
untyped_action = = nullptr
? this - > UntypedPerformDefaultAction ( untyped_args , ss . str ( ) )
: this - > UntypedPerformAction ( untyped_action , untyped_args ) ;
if ( result ! = nullptr ) result - > PrintAsActionResult ( & ss ) ;
ss < < " \n " < < why . str ( ) ;
if ( ! found ) {
// No expectation matches this call - reports a failure.
Expect ( false , nullptr , - 1 , ss . str ( ) ) ;
} else if ( is_excessive ) {
// We had an upper-bound violation and the failure message is in ss.
Expect ( false , untyped_expectation - > file ( ) ,
untyped_expectation - > line ( ) , ss . str ( ) ) ;
} else {
// We had an expected call and the matching expectation is
// described in ss.
Log ( kInfo , loc . str ( ) + ss . str ( ) , 2 ) ;
UntypedActionResultHolderBase * result = nullptr ;
auto perform_action = [ & ] {
return untyped_action = = nullptr
? this - > UntypedPerformDefaultAction ( untyped_args , ss . str ( ) )
: this - > UntypedPerformAction ( untyped_action , untyped_args ) ;
} ;
auto handle_failures = [ & ] {
ss < < " \n " < < why . str ( ) ;
if ( ! found ) {
// No expectation matches this call - reports a failure.
Expect ( false , nullptr , - 1 , ss . str ( ) ) ;
} else if ( is_excessive ) {
// We had an upper-bound violation and the failure message is in ss.
Expect ( false , untyped_expectation - > file ( ) , untyped_expectation - > line ( ) ,
ss . str ( ) ) ;
} else {
// We had an expected call and the matching expectation is
// described in ss.
Log ( kInfo , loc . str ( ) + ss . str ( ) , 2 ) ;
}
} ;
# if GTEST_HAS_EXCEPTIONS
try {
result = perform_action ( ) ;
} catch ( . . . ) {
handle_failures ( ) ;
throw ;
}
# else
result = perform_action ( ) ;
# endif
if ( result ! = nullptr ) result - > PrintAsActionResult ( & ss ) ;
handle_failures ( ) ;
return result ;
}