Removed use of std::copy_if (as it's limited to c++11)

This commit is contained in:
Phil Nash 2015-08-07 17:53:29 +01:00
parent e73583d556
commit 8a05f46a37
2 changed files with 13 additions and 21 deletions

View File

@ -53,15 +53,6 @@ namespace Catch {
bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ) { bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ) {
return testSpec.matches( testCase ) && ( config.allowThrows() || !testCase.throws() ); return testSpec.matches( testCase ) && ( config.allowThrows() || !testCase.throws() );
} }
struct TestMatcher {
TestMatcher( TestSpec const& testSpec, bool allowThrows ) : m_testSpec( testSpec ), m_allowThrows( allowThrows ) {}
bool operator()( TestCase const& testCase ) const {
return m_testSpec.matches( testCase ) && ( m_allowThrows || !testCase.throws() );
}
TestSpec m_testSpec;
bool m_allowThrows;
};
void enforceNoDuplicateTestCases( std::vector<TestCase> const& functions ) { void enforceNoDuplicateTestCases( std::vector<TestCase> const& functions ) {
std::set<TestCase> seenFunctions; std::set<TestCase> seenFunctions;
@ -82,7 +73,12 @@ namespace Catch {
std::vector<TestCase> filterTests( std::vector<TestCase> const& testCases, TestSpec const& testSpec, IConfig const& config ) { std::vector<TestCase> filterTests( std::vector<TestCase> const& testCases, TestSpec const& testSpec, IConfig const& config ) {
std::vector<TestCase> filtered; std::vector<TestCase> filtered;
std::copy_if( testCases.begin(), testCases.end(), std::back_inserter( filtered ), TestMatcher( testSpec, config.allowThrows() ) ); filtered.reserve( testCases.size() );
for( std::vector<TestCase>::const_iterator it = testCases.begin(), itEnd = testCases.end();
it != itEnd;
++it )
if( matchTest( *it, testSpec, config ) )
filtered.push_back( *it );
return filtered; return filtered;
} }
std::vector<TestCase> const& getAllTestCasesSorted( IConfig const& config ) { std::vector<TestCase> const& getAllTestCasesSorted( IConfig const& config ) {

View File

@ -1,6 +1,6 @@
/* /*
* Catch v1.2.1-develop.12 * Catch v1.2.1-develop.12
* Generated: 2015-08-07 17:29:52.878958 * Generated: 2015-08-07 17:51:37.651202
* ---------------------------------------------------------- * ----------------------------------------------------------
* This file has been merged from multiple headers. Please don't edit it directly * This file has been merged from multiple headers. Please don't edit it directly
* Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.
@ -5920,15 +5920,6 @@ namespace Catch {
bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ) { bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ) {
return testSpec.matches( testCase ) && ( config.allowThrows() || !testCase.throws() ); return testSpec.matches( testCase ) && ( config.allowThrows() || !testCase.throws() );
} }
struct TestMatcher {
TestMatcher( TestSpec const& testSpec, bool allowThrows ) : m_testSpec( testSpec ), m_allowThrows( allowThrows ) {}
bool operator()( TestCase const& testCase ) const {
return m_testSpec.matches( testCase ) && ( m_allowThrows || !testCase.throws() );
}
TestSpec m_testSpec;
bool m_allowThrows;
};
void enforceNoDuplicateTestCases( std::vector<TestCase> const& functions ) { void enforceNoDuplicateTestCases( std::vector<TestCase> const& functions ) {
std::set<TestCase> seenFunctions; std::set<TestCase> seenFunctions;
@ -5949,7 +5940,12 @@ namespace Catch {
std::vector<TestCase> filterTests( std::vector<TestCase> const& testCases, TestSpec const& testSpec, IConfig const& config ) { std::vector<TestCase> filterTests( std::vector<TestCase> const& testCases, TestSpec const& testSpec, IConfig const& config ) {
std::vector<TestCase> filtered; std::vector<TestCase> filtered;
std::copy_if( testCases.begin(), testCases.end(), std::back_inserter( filtered ), TestMatcher( testSpec, config.allowThrows() ) ); filtered.reserve( testCases.size() );
for( std::vector<TestCase>::const_iterator it = testCases.begin(), itEnd = testCases.end();
it != itEnd;
++it )
if( matchTest( *it, testSpec, config ) )
filtered.push_back( *it );
return filtered; return filtered;
} }
std::vector<TestCase> const& getAllTestCasesSorted( IConfig const& config ) { std::vector<TestCase> const& getAllTestCasesSorted( IConfig const& config ) {