Catch/Test/TrickyTests.cpp

64 lines
1.4 KiB
C++
Raw Normal View History

2010-11-09 18:24:00 -05:00
/*
* 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)
*
*/
2010-11-12 03:12:01 -05:00
#include "../catch.hpp"
2010-11-09 18:24:00 -05:00
namespace Catch
{
template<>
std::string toString<std::pair<int, int> >( const std::pair<int, int>& value )
{
std::ostringstream oss;
oss << "std::pair( " << value.first << ", " << value.second << " )";
return oss.str();
}
}
2010-11-10 14:18:46 -05:00
TEST_CASE( "succeeding/Tricky/std::pair", "Parsing a std::pair" )
2010-11-09 18:24:00 -05:00
{
std::pair<int, int> aNicePair( 1, 2 );
// !TBD: would be nice if this could compile without the extra parentheses
EXPECT( (std::pair<int, int>( 1, 2 )) == aNicePair );
2010-11-10 14:18:46 -05:00
}
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
2010-11-11 02:22:46 -05:00
EXPECT( a == 2 || b == 2 );
2010-11-11 15:37:46 -05:00
}
struct Opaque
{
int val;
bool operator ==( const Opaque& o )
{
2010-11-16 14:48:05 -05:00
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 );
2010-11-29 14:48:37 -05:00
}