mirror of
https://github.com/catchorg/Catch2.git
synced 2025-08-01 12:55:40 +02:00
Cleaned up ResultInfoBuilder a bit
This commit is contained in:
@@ -19,53 +19,50 @@ class Expression {
|
||||
|
||||
public:
|
||||
Expression( ResultInfoBuilder& result, T lhs )
|
||||
: m_result( result ),
|
||||
: m_result( result.setLhs( Catch::toString( lhs ) ) ),
|
||||
m_lhs( lhs )
|
||||
{}
|
||||
|
||||
template<typename RhsT>
|
||||
ResultInfoBuilder& operator == ( const RhsT& rhs ) {
|
||||
return captureExpression<Internal::IsEqualTo>( m_result, m_lhs, rhs );
|
||||
return captureExpression<Internal::IsEqualTo>( rhs );
|
||||
}
|
||||
|
||||
template<typename RhsT>
|
||||
ResultInfoBuilder& operator != ( const RhsT& rhs ) {
|
||||
return captureExpression<Internal::IsNotEqualTo>( m_result, m_lhs, rhs );
|
||||
return captureExpression<Internal::IsNotEqualTo>( rhs );
|
||||
}
|
||||
|
||||
template<typename RhsT>
|
||||
ResultInfoBuilder& operator < ( const RhsT& rhs ) {
|
||||
return captureExpression<Internal::IsLessThan>( m_result, m_lhs, rhs );
|
||||
return captureExpression<Internal::IsLessThan>( rhs );
|
||||
}
|
||||
|
||||
template<typename RhsT>
|
||||
ResultInfoBuilder& operator > ( const RhsT& rhs ) {
|
||||
return captureExpression<Internal::IsGreaterThan>( m_result, m_lhs, rhs );
|
||||
return captureExpression<Internal::IsGreaterThan>( rhs );
|
||||
}
|
||||
|
||||
template<typename RhsT>
|
||||
ResultInfoBuilder& operator <= ( const RhsT& rhs ) {
|
||||
return captureExpression<Internal::IsLessThanOrEqualTo>( m_result, m_lhs, rhs );
|
||||
return captureExpression<Internal::IsLessThanOrEqualTo>( rhs );
|
||||
}
|
||||
|
||||
template<typename RhsT>
|
||||
ResultInfoBuilder& operator >= ( const RhsT& rhs ) {
|
||||
return captureExpression<Internal::IsGreaterThanOrEqualTo>( m_result, m_lhs, rhs );
|
||||
return captureExpression<Internal::IsGreaterThanOrEqualTo>( rhs );
|
||||
}
|
||||
|
||||
ResultInfoBuilder& operator == ( bool rhs ) {
|
||||
return captureExpression<Internal::IsEqualTo>( m_result, m_lhs, rhs );
|
||||
return captureExpression<Internal::IsEqualTo>( rhs );
|
||||
}
|
||||
|
||||
ResultInfoBuilder& operator != ( bool rhs ) {
|
||||
return captureExpression<Internal::IsNotEqualTo>( m_result, m_lhs, rhs );
|
||||
return captureExpression<Internal::IsNotEqualTo>( rhs );
|
||||
}
|
||||
|
||||
operator ResultInfoBuilder& () {
|
||||
return m_result
|
||||
.setLhs( Catch::toString( m_lhs ) )
|
||||
.setOp( "" )
|
||||
.setResultType( m_lhs ? ResultWas::Ok : ResultWas::ExpressionFailed );
|
||||
return m_result.setResultType( m_lhs ? ResultWas::Ok : ResultWas::ExpressionFailed );
|
||||
}
|
||||
|
||||
template<typename RhsT>
|
||||
@@ -74,6 +71,15 @@ public:
|
||||
template<typename RhsT>
|
||||
STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator - ( const RhsT& );
|
||||
|
||||
private:
|
||||
template<Internal::Operator Op, typename RhsT>
|
||||
ResultInfoBuilder& captureExpression( const RhsT& rhs ) {
|
||||
return m_result
|
||||
.setResultType( Internal::compare<Op>( m_lhs, rhs ) ? ResultWas::Ok : ResultWas::ExpressionFailed )
|
||||
.setRhs( Catch::toString( rhs ) )
|
||||
.setOp( Internal::OperatorTraits<Op>::getName() );
|
||||
}
|
||||
|
||||
private:
|
||||
ResultInfoBuilder& m_result;
|
||||
T m_lhs;
|
||||
|
@@ -53,21 +53,6 @@ private:
|
||||
bool m_isFalse;
|
||||
};
|
||||
|
||||
template<Internal::Operator Op, typename T1, typename T2>
|
||||
ResultInfoBuilder& captureExpression( ResultInfoBuilder& builder, const T1& lhs, const T2& rhs ) {
|
||||
return builder
|
||||
.setResultType( Internal::compare<Op>( lhs, rhs ) ? ResultWas::Ok : ResultWas::ExpressionFailed )
|
||||
.setLhs( Catch::toString( lhs ) )
|
||||
.setRhs( Catch::toString( rhs ) )
|
||||
.setOp( Internal::OperatorTraits<Op>::getName() );
|
||||
}
|
||||
|
||||
template<Internal::Operator Op, typename T>
|
||||
ResultInfoBuilder& captureExpression( ResultInfoBuilder& builder, const T* lhs, int rhs ) {
|
||||
return captureExpression<Op>( builder, lhs, reinterpret_cast<const T*>( rhs ) );
|
||||
}
|
||||
|
||||
|
||||
} // end namespace Catch
|
||||
|
||||
#endif // TWOBLUECUBES_CATCH_RESULTINFO_BUILDER_H_INCLUDED
|
||||
|
Reference in New Issue
Block a user