mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Separated resultinfo_builder from impl
This commit is contained in:
		| @@ -8,7 +8,7 @@ | ||||
| #ifndef TWOBLUECUBES_CATCH_EXPRESSION_HPP_INCLUDED | ||||
| #define TWOBLUECUBES_CATCH_EXPRESSION_HPP_INCLUDED | ||||
|  | ||||
| #include "catch_resultinfo_builder.hpp" | ||||
| #include "catch_resultinfo_builder.h" | ||||
| #include "catch_evaluate.hpp" | ||||
|  | ||||
| namespace Catch { | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
| #define TWOBLUECUBES_CATCH_EXPRESSION_BUILDER_HPP_INCLUDED | ||||
|  | ||||
| #include "catch_expression.hpp" | ||||
| #include "catch_resultinfo_builder.hpp" | ||||
| #include "catch_resultinfo_builder.h" | ||||
| #include "catch_tostring.hpp" | ||||
| #include "catch_resultinfo.h" | ||||
| #include "catch_result_type.h" | ||||
|   | ||||
| @@ -14,3 +14,4 @@ | ||||
| #include "catch_console_colour_impl.hpp" | ||||
| #include "catch_generators_impl.hpp" | ||||
| #include "catch_resultinfo.hpp" | ||||
| #include "catch_resultinfo_builder.hpp" | ||||
|   | ||||
							
								
								
									
										77
									
								
								include/internal/catch_resultinfo_builder.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								include/internal/catch_resultinfo_builder.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | ||||
| /* | ||||
|  *  Created by Phil on 8/5/2012. | ||||
|  *  Copyright 2012 Two Blue Cubes Ltd. All rights reserved. | ||||
|  * | ||||
|  *  Distributed under the Boost Software License, Version 1.0. (See accompanying | ||||
|  *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
|  */ | ||||
| #ifndef TWOBLUECUBES_CATCH_RESULTINFO_BUILDER_H_INCLUDED | ||||
| #define TWOBLUECUBES_CATCH_RESULTINFO_BUILDER_H_INCLUDED | ||||
|  | ||||
| #include "catch_tostring.hpp" | ||||
| #include "catch_resultinfo.h" | ||||
| #include "catch_result_type.h" | ||||
| #include "catch_evaluate.hpp" | ||||
| #include "catch_common.h" | ||||
|  | ||||
| namespace Catch { | ||||
|  | ||||
| struct STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison; | ||||
|      | ||||
| class ResultInfoBuilder : public ResultInfo { | ||||
|  | ||||
| public: | ||||
|      | ||||
|     ResultInfoBuilder(); | ||||
|      | ||||
|     ResultInfoBuilder(  const char* expr,  | ||||
|                         bool isNot,  | ||||
|                         const SourceLineInfo& lineInfo, | ||||
|                         const char* macroName, | ||||
|                         const char* message = "" ); | ||||
|  | ||||
|     void setResultType( ResultWas::OfType result ); | ||||
|     void setMessage( const std::string& message ); | ||||
|     void setLineInfo( const SourceLineInfo& lineInfo ); | ||||
|     void setLhs( const std::string& lhs ); | ||||
|     void setRhs( const std::string& rhs ); | ||||
|     void setOp( const std::string& op ); | ||||
|      | ||||
|     template<typename RhsT> | ||||
|     STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator || | ||||
|     ( | ||||
|         const RhsT& | ||||
|     ); | ||||
|  | ||||
|     template<typename RhsT> | ||||
|     STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator && | ||||
|     ( | ||||
|         const RhsT& | ||||
|     ); | ||||
|      | ||||
| private: | ||||
|     friend class ExpressionBuilder; | ||||
|     template<typename T> friend class Expression; | ||||
|  | ||||
|     template<typename T> friend class PtrExpression; | ||||
|  | ||||
|     ResultInfoBuilder& captureBoolExpression( bool result ); | ||||
|  | ||||
|     template<Internal::Operator Op, typename T1, typename T2>     | ||||
|     ResultInfoBuilder& captureExpression( const T1& lhs, const T2& rhs ) { | ||||
|         setResultType( Internal::compare<Op>( lhs, rhs ) ? ResultWas::Ok : ResultWas::ExpressionFailed ); | ||||
|         m_lhs = Catch::toString( lhs ); | ||||
|         m_rhs = Catch::toString( rhs ); | ||||
|         m_op = Internal::OperatorTraits<Op>::getName(); | ||||
|         return *this; | ||||
|     } | ||||
|  | ||||
|     template<Internal::Operator Op, typename T> | ||||
|     ResultInfoBuilder& captureExpression( const T* lhs, int rhs ) { | ||||
|         return captureExpression<Op>( lhs, reinterpret_cast<const T*>( rhs ) ); | ||||
|     }     | ||||
| }; | ||||
|  | ||||
| } // end namespace Catch | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_RESULTINFO_BUILDER_H_INCLUDED | ||||
| @@ -1,5 +1,5 @@ | ||||
| /* | ||||
|  *  Created by Phil on 8/5/2012. | ||||
|  *  Created by Phil on 8/8/2012. | ||||
|  *  Copyright 2012 Two Blue Cubes Ltd. All rights reserved. | ||||
|  * | ||||
|  *  Distributed under the Boost Software License, Version 1.0. (See accompanying | ||||
| @@ -8,100 +8,57 @@ | ||||
| #ifndef TWOBLUECUBES_CATCH_RESULTINFO_BUILDER_HPP_INCLUDED | ||||
| #define TWOBLUECUBES_CATCH_RESULTINFO_BUILDER_HPP_INCLUDED | ||||
|  | ||||
| #include "catch_tostring.hpp" | ||||
| #include "catch_resultinfo.h" | ||||
| #include "catch_result_type.h" | ||||
| #include "catch_evaluate.hpp" | ||||
| #include "catch_common.h" | ||||
| #include "catch_resultinfo_builder.h" | ||||
|  | ||||
| namespace Catch { | ||||
|  | ||||
| struct STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison; | ||||
|      | ||||
| class ResultInfoBuilder : public ResultInfo { | ||||
|     ResultInfoBuilder::ResultInfoBuilder() {} | ||||
|  | ||||
| public: | ||||
|      | ||||
|     ResultInfoBuilder() {} | ||||
|      | ||||
|     ResultInfoBuilder(  const char* expr,  | ||||
|                         bool isNot,  | ||||
|                         const SourceLineInfo& lineInfo, | ||||
|                         const char* macroName, | ||||
|                         const char* message = "" ) | ||||
|     ResultInfoBuilder::ResultInfoBuilder(   const char* expr, | ||||
|                                             bool isNot, | ||||
|                                             const SourceLineInfo& lineInfo, | ||||
|                                             const char* macroName, | ||||
|                                             const char* message ) | ||||
|     : ResultInfo( expr, ResultWas::Unknown, isNot, lineInfo, macroName, message ) | ||||
|     {} | ||||
|  | ||||
|     void setResultType( ResultWas::OfType result ) { | ||||
|     void ResultInfoBuilder::setResultType( ResultWas::OfType result ) { | ||||
|         // Flip bool results if isNot is set | ||||
|         if( m_isNot && result == ResultWas::Ok ) | ||||
|             m_result = ResultWas::ExpressionFailed; | ||||
|         else if( m_isNot && result == ResultWas::ExpressionFailed ) | ||||
|             m_result = ResultWas::Ok; | ||||
|         else | ||||
|             m_result = result;         | ||||
|             m_result = result; | ||||
|     } | ||||
|  | ||||
|     void setMessage( const std::string& message ) { | ||||
|     void ResultInfoBuilder::setMessage( const std::string& message ) { | ||||
|         m_message = message; | ||||
|     } | ||||
|      | ||||
|     void setLineInfo( const SourceLineInfo& lineInfo ) { | ||||
|  | ||||
|     void ResultInfoBuilder::setLineInfo( const SourceLineInfo& lineInfo ) { | ||||
|         m_lineInfo = lineInfo; | ||||
|     } | ||||
|      | ||||
|     void setLhs( const std::string& lhs ) { | ||||
|  | ||||
|     void ResultInfoBuilder::setLhs( const std::string& lhs ) { | ||||
|         m_lhs = lhs; | ||||
|     } | ||||
|      | ||||
|     void setRhs( const std::string& rhs ) { | ||||
|  | ||||
|     void ResultInfoBuilder::setRhs( const std::string& rhs ) { | ||||
|         m_rhs = rhs; | ||||
|     } | ||||
|  | ||||
|     void setOp( const std::string& op ) { | ||||
|     void ResultInfoBuilder::setOp( const std::string& op ) { | ||||
|         m_op = op; | ||||
|     } | ||||
|      | ||||
|     template<typename RhsT> | ||||
|     STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator || | ||||
|     ( | ||||
|         const RhsT& | ||||
|     ); | ||||
|  | ||||
|     template<typename RhsT> | ||||
|     STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator && | ||||
|     ( | ||||
|         const RhsT& | ||||
|     ); | ||||
|      | ||||
| private: | ||||
|     friend class ExpressionBuilder; | ||||
|     template<typename T> friend class Expression; | ||||
|  | ||||
|     template<typename T> friend class PtrExpression; | ||||
|  | ||||
|     ResultInfoBuilder& captureBoolExpression( bool result ) { | ||||
|     ResultInfoBuilder& ResultInfoBuilder::captureBoolExpression( bool result ) { | ||||
|         m_lhs = Catch::toString( result ); | ||||
|         m_op = m_isNot ? "!" : ""; | ||||
|         setResultType( result ? ResultWas::Ok : ResultWas::ExpressionFailed ); | ||||
|         return *this; | ||||
|     }     | ||||
|  | ||||
|     template<Internal::Operator Op, typename T1, typename T2>     | ||||
|     ResultInfoBuilder& captureExpression( const T1& lhs, const T2& rhs ) { | ||||
|         setResultType( Internal::compare<Op>( lhs, rhs ) ? ResultWas::Ok : ResultWas::ExpressionFailed ); | ||||
|         m_lhs = Catch::toString( lhs ); | ||||
|         m_rhs = Catch::toString( rhs ); | ||||
|         m_op = Internal::OperatorTraits<Op>::getName(); | ||||
|         return *this; | ||||
|     } | ||||
|  | ||||
|     template<Internal::Operator Op, typename T> | ||||
|     ResultInfoBuilder& captureExpression( const T* lhs, int rhs ) { | ||||
|         return captureExpression<Op>( lhs, reinterpret_cast<const T*>( rhs ) ); | ||||
|     }     | ||||
| }; | ||||
|  | ||||
|      | ||||
| } // end namespace Catch | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_RESULTINFO_BUILDER_HPP_INCLUDED | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash