/* * TrickyTests.cpp * Catch - Test * * Created by Phil on 09/11/2010. * Copyright 2010 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) * */ #include "../catch.hpp" namespace Catch { template<> std::string toString >( const std::pair& value ) { std::ostringstream oss; oss << "std::pair( " << value.first << ", " << value.second << " )"; return oss.str(); } } TEST_CASE( "succeeding/Tricky/std::pair", "Parsing a std::pair" ) { std::pair aNicePair( 1, 2 ); // !TBD: would be nice if this could compile without the extra parentheses EXPECT( (std::pair( 1, 2 )) == aNicePair ); } TEST_CASE( "succeeding/Tricky/complex lhs", "Where the LHS is not a simple value" ) { int a = 1; int b = 2; // This only captures part of the expression, but issues a warning about the rest EXPECT( a == 2 || b == 2 ); } struct Opaque { int val; bool operator ==( const Opaque& o ) { return val == o.val; } }; TEST_CASE( "failing/Tricky/non streamable type", "A failing expression with a non streamable type is still captured" ) { Opaque o1, o2; o1.val = 7; o2.val = 8; CHECK( &o1 == &o2 ); CHECK( o1 == o2 ); }