Added a handful of "built-in" matchers

This commit is contained in:
Phil Nash
2012-03-04 20:10:36 +00:00
parent eca5637c58
commit a6a40b3ba9
4 changed files with 117 additions and 30 deletions

View File

@@ -186,33 +186,33 @@ TEST_CASE("./succeeding/atomic if", "")
REQUIRE(x == 0);
}
namespace Matchers
{
struct ContainsStdString
{
ContainsStdString( const std::string& substr ) : m_substr( substr ){}
bool operator()( const std::string& str ) const
{
return str.find( m_substr ) != std::string::npos;
}
friend std::ostream& operator<<( std::ostream& os, const ContainsStdString& matcher )
{
os << "contains: \"" << matcher.m_substr << "\"";
return os;
}
std::string m_substr;
};
}
inline Matchers::ContainsStdString Contains( const std::string& substr ){ return Matchers::ContainsStdString( substr ); }
TEST_CASE("./succeeding/matcher", "")
inline const char* testStringForMatching()
{
const char* actualStr = "this string contains 'abc' as a substring";
REQUIRE_THAT( actualStr, Contains( "string" ) );
CHECK_THAT( actualStr, Contains( "not there" ) );
CHECK_THAT( actualStr, Contains( "a2bc" ) );
return "this string contains 'abc' as a substring";
}
using namespace Catch::Matchers;
TEST_CASE("./succeeding/matchers", "")
{
REQUIRE_THAT( testStringForMatching(), Contains( "string" ) );
CHECK_THAT( testStringForMatching(), Contains( "abc" ) );
CHECK_THAT( testStringForMatching(), StartsWith( "this" ) );
CHECK_THAT( testStringForMatching(), EndsWith( "substring" ) );
}
TEST_CASE("./failing/matchers/Contains", "")
{
CHECK_THAT( testStringForMatching(), Contains( "not there" ) );
}
TEST_CASE("./failing/matchers/StartsWith", "")
{
CHECK_THAT( testStringForMatching(), StartsWith( "string" ) );
}
TEST_CASE("./failing/matchers/EndsWith", "")
{
CHECK_THAT( testStringForMatching(), EndsWith( "this" ) );
}

View File

@@ -43,7 +43,7 @@ TEST_CASE( "selftest/main", "Runs all Catch self tests and checks their results"
"Number of 'succeeding' tests is fixed" )
{
runner.runMatching( "./succeeding/*" );
CHECK( runner.getTotals().assertions.passed == 268 );
CHECK( runner.getTotals().assertions.passed == 272 );
CHECK( runner.getTotals().assertions.failed == 0 );
}
@@ -52,7 +52,7 @@ TEST_CASE( "selftest/main", "Runs all Catch self tests and checks their results"
{
runner.runMatching( "./failing/*" );
CHECK( runner.getTotals().assertions.passed == 0 );
CHECK( runner.getTotals().assertions.failed == 68 );
CHECK( runner.getTotals().assertions.failed == 71 );
}
}
}