mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-11-04 14:09:33 +01:00 
			
		
		
		
	commit2a1e8bfc6eAuthor: Phil Nash <github@philnash.me> Date: Thu Nov 1 08:16:15 2012 +0000 Updated colour comments commitf0f407fc3eAuthor: Phil Nash <github@philnash.me> Date: Wed Oct 31 18:28:21 2012 +0000 Manually applied merge #133 from Master commit355b95fda1Author: Phil Nash <github@philnash.me> Date: Wed Oct 31 18:04:22 2012 +0000 Cleaned up ANSI colour code impl a bit commit778f9c4fc7Author: Phil Nash <github@philnash.me> Date: Tue Oct 30 09:09:30 2012 +0000 Removed "no-" from Wno-global-constructors when disabling commit5efa4bcb8aAuthor: Phil Nash <github@philnash.me> Date: Mon Oct 29 20:49:22 2012 +0000 Regenerated single_include commit108f1937d8Author: Phil Nash <github@philnash.me> Date: Mon Oct 29 20:46:45 2012 +0000 Added terminal colour codes for POSIX With thanks to Adam Strzelecki commit8f4cc541d5Author: Phil Nash <github@philnash.me> Date: Mon Oct 29 19:55:34 2012 +0000 Added regression test baselines commit2e203a1834Author: Phil Nash <github@philnash.me> Date: Mon Oct 29 19:55:13 2012 +0000 Fixed remaining reporting regressions commit134e45b3adAuthor: Phil Nash <github@philnash.me> Date: Sun Oct 28 20:57:21 2012 +0000 Fixed #132 commit2f92db9898Author: Phil Nash <github@philnash.me> Date: Sun Oct 28 12:15:34 2012 +0000 Updated the readme specifically for the Integration branch commit82acc2ca05Author: Phil Nash <github@philnash.me> Date: Sun Oct 28 12:07:17 2012 +0000 Regenerated single include commitfe1d7c1d08Author: Phil Nash <github@philnash.me> Date: Sun Oct 28 10:27:44 2012 +0000 Small fixes and tweaks commit355b5e546dAuthor: Phil Nash <github@philnash.me> Date: Fri Oct 26 09:05:36 2012 +0100 Some tidy-up commitf847186ebbAuthor: Phil Nash <github@philnash.me> Date: Fri Oct 26 08:45:23 2012 +0100 AssertionResultBuilder -> ExpressionResultBuilder commit8cca2f1369Author: Phil Nash <github@philnash.me> Date: Wed Oct 24 22:09:01 2012 +0100 ExpressionBuilder ->ExpressionDecomposer Expression -> ExpressionLhs commite04e74f896Author: Phil Nash <github@philnash.me> Date: Wed Oct 24 21:59:47 2012 +0100 More AssertionResult refactoring commit1dd56d4d2bAuthor: Phil Nash <github@philnash.me> Date: Fri Oct 19 08:01:34 2012 +0100 AssertionResultBuilder can be constructed from result type commitf2d5f1b3e4Author: Phil Nash <github@philnash.me> Date: Fri Oct 19 08:01:05 2012 +0100 Expression has its own result builder - not passed in from expression builder commite3b111a39aAuthor: Phil Nash <github@philnash.me> Date: Thu Oct 18 22:59:16 2012 +0100 streamlined acceptResult commit3ad13256e1Author: Phil Nash <github@philnash.me> Date: Thu Oct 18 08:39:44 2012 +0100 Refactored assertion builder stuff out of expression builder commitc96f9330a0Author: Phil Nash <github@philnash.me> Date: Wed Oct 17 08:14:22 2012 +0100 Collect assertion info up front commita5fa78284dAuthor: Phil Nash <github@philnash.me> Date: Tue Oct 16 08:33:13 2012 +0100 ResultData -> AssertionResultData commitc597a893faAuthor: Phil Nash <github@philnash.me> Date: Tue Oct 16 08:31:05 2012 +0100 ResultInfo -> AssertionResult filenames and variables commitd16955f63aAuthor: Phil Nash <github@philnash.me> Date: Tue Oct 16 08:27:21 2012 +0100 Renamed ResultInfo -> AssertionResult commit175da3ef64Author: Phil Nash <github@philnash.me> Date: Fri Oct 12 18:39:22 2012 +0100 regen test 3
		
			
				
	
	
		
			99 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 *  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
 | 
						|
 *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | 
						|
 */
 | 
						|
#ifndef TWOBLUECUBES_CATCH_EXPRESSIONRESULT_BUILDER_HPP_INCLUDED
 | 
						|
#define TWOBLUECUBES_CATCH_EXPRESSIONRESULT_BUILDER_HPP_INCLUDED
 | 
						|
 | 
						|
#include "catch_expressionresult_builder.h"
 | 
						|
 | 
						|
#include <assert.h>
 | 
						|
 | 
						|
namespace Catch {
 | 
						|
 | 
						|
    ExpressionResultBuilder::ExpressionResultBuilder( ResultWas::OfType resultType ) {
 | 
						|
        m_data.resultType = resultType;
 | 
						|
    }
 | 
						|
    ExpressionResultBuilder::ExpressionResultBuilder( const ExpressionResultBuilder& other )
 | 
						|
    :   m_data( other.m_data ),
 | 
						|
        m_exprComponents( other.m_exprComponents )
 | 
						|
    {
 | 
						|
        m_stream << other.m_stream.str();
 | 
						|
    }
 | 
						|
    ExpressionResultBuilder& ExpressionResultBuilder::operator=(const ExpressionResultBuilder& other ) {
 | 
						|
        m_data = other.m_data;
 | 
						|
        m_exprComponents = other.m_exprComponents;
 | 
						|
        m_stream.str("");
 | 
						|
        m_stream << other.m_stream.str();
 | 
						|
        return *this;
 | 
						|
    }
 | 
						|
    ExpressionResultBuilder& ExpressionResultBuilder::setResultType( ResultWas::OfType result ) {
 | 
						|
        m_data.resultType = result;
 | 
						|
        return *this;
 | 
						|
    }
 | 
						|
    ExpressionResultBuilder& ExpressionResultBuilder::setResultType( bool result ) {
 | 
						|
        m_data.resultType = result ? ResultWas::Ok : ResultWas::ExpressionFailed;
 | 
						|
        return *this;
 | 
						|
    }
 | 
						|
    ExpressionResultBuilder& ExpressionResultBuilder::negate( bool shouldNegate ) {
 | 
						|
        m_exprComponents.shouldNegate = shouldNegate;
 | 
						|
        return *this;
 | 
						|
    }
 | 
						|
    ExpressionResultBuilder& ExpressionResultBuilder::setLhs( const std::string& lhs ) {
 | 
						|
        m_exprComponents.lhs = lhs;
 | 
						|
        return *this;
 | 
						|
    }
 | 
						|
    ExpressionResultBuilder& ExpressionResultBuilder::setRhs( const std::string& rhs ) {
 | 
						|
        m_exprComponents.rhs = rhs;
 | 
						|
        return *this;
 | 
						|
    }
 | 
						|
    ExpressionResultBuilder& ExpressionResultBuilder::setOp( const std::string& op ) {
 | 
						|
        m_exprComponents.op = op;
 | 
						|
        return *this;
 | 
						|
    }
 | 
						|
    AssertionResult ExpressionResultBuilder::buildResult( const AssertionInfo& info ) const
 | 
						|
    {
 | 
						|
        assert( m_data.resultType != ResultWas::Unknown );
 | 
						|
 | 
						|
        AssertionResultData data = m_data;
 | 
						|
        
 | 
						|
        // Flip bool results if shouldNegate is set
 | 
						|
        if( m_exprComponents.shouldNegate && data.resultType == ResultWas::Ok )
 | 
						|
            data.resultType = ResultWas::ExpressionFailed;
 | 
						|
        else if( m_exprComponents.shouldNegate && data.resultType == ResultWas::ExpressionFailed )
 | 
						|
            data.resultType = ResultWas::Ok;
 | 
						|
 | 
						|
        data.message = m_stream.str();
 | 
						|
        data.reconstructedExpression = reconstructExpression( info );
 | 
						|
        if( m_exprComponents.shouldNegate ) {
 | 
						|
            if( m_exprComponents.op == "" )
 | 
						|
                data.reconstructedExpression = "!" + data.reconstructedExpression;
 | 
						|
            else
 | 
						|
                data.reconstructedExpression = "!(" + data.reconstructedExpression + ")";
 | 
						|
        }
 | 
						|
        return AssertionResult( info, data );
 | 
						|
    }
 | 
						|
    std::string ExpressionResultBuilder::reconstructExpression( const AssertionInfo& info ) const {
 | 
						|
        if( m_exprComponents.op == "" )
 | 
						|
            return m_exprComponents.lhs.empty() ? info.capturedExpression : m_exprComponents.op + m_exprComponents.lhs;
 | 
						|
        else if( m_exprComponents.op == "matches" )
 | 
						|
            return m_exprComponents.lhs + " " + m_exprComponents.rhs;
 | 
						|
        else if( m_exprComponents.op != "!" ) {
 | 
						|
            if( m_exprComponents.lhs.size() + m_exprComponents.rhs.size() < 30 )
 | 
						|
                return m_exprComponents.lhs + " " + m_exprComponents.op + " " + m_exprComponents.rhs;
 | 
						|
            else if( m_exprComponents.lhs.size() < 70 && m_exprComponents.rhs.size() < 70 )
 | 
						|
                return "\n\t" + m_exprComponents.lhs + "\n\t" + m_exprComponents.op + "\n\t" + m_exprComponents.rhs;
 | 
						|
            else
 | 
						|
                return "\n" + m_exprComponents.lhs + "\n" + m_exprComponents.op + "\n" + m_exprComponents.rhs + "\n\n";
 | 
						|
        }
 | 
						|
        else
 | 
						|
            return "{can't expand - use " + info.macroName + "_FALSE( " + info.capturedExpression.substr(1) + " ) instead of " + info.macroName + "( " + info.capturedExpression + " ) for better diagnostics}";
 | 
						|
    }
 | 
						|
 | 
						|
} // end namespace Catch
 | 
						|
 | 
						|
#endif // TWOBLUECUBES_CATCH_EXPRESSIONRESULT_BUILDER_HPP_INCLUDED
 |