Cleaned up config class a bit

This commit is contained in:
Phil Nash 2011-01-18 19:49:00 +00:00
parent 2885339287
commit bfc1ee6c62
5 changed files with 35 additions and 20 deletions

View File

@ -16,11 +16,8 @@
Later:
Finish command line parser (list as xml, specify FP tolerance)
INFO() stores messages until next result
Revisit Approx()
Extra reports
Tags?
Detect caught "Catch" exception, offer continuation based iteration instead
Finish macros, listed here, later (just CHECK_NOFAIL now)
*/
#ifndef TWOBLUECUBES_CATCH_HPP_INCLUDED

View File

@ -30,9 +30,9 @@ namespace Catch
Config config;
ArgParser( argc, argv, config );
if( !config.m_message.empty() )
if( !config.getMessage().empty() )
{
std::cerr << config.m_message << std::endl;
std::cerr << config.getMessage() << std::endl;
return std::numeric_limits<int>::max();
}
@ -77,7 +77,7 @@ namespace Catch
Runner runner( config );
// Run test specs specified on the command line - or default to all
if( config.m_testSpecs.size() == 0 )
if( !config.testsSpecified() )
{
config.getReporter()->StartGroup( "" );
runner.runAll();
@ -87,8 +87,8 @@ namespace Catch
{
// !TBD We should get all the testcases upfront, report any missing,
// then just run them
std::vector<std::string>::const_iterator it = config.m_testSpecs.begin();
std::vector<std::string>::const_iterator itEnd = config.m_testSpecs.end();
std::vector<std::string>::const_iterator it = config.getTestSpecs().begin();
std::vector<std::string>::const_iterator itEnd = config.getTestSpecs().end();
for(; it != itEnd; ++it )
{
size_t prevSuccess = runner.getSuccessCount();

View File

@ -131,7 +131,7 @@ namespace Catch
else
return setErrorMode( m_command + " expected [xml] or [text] but recieved: [" + m_args[1] + "]" );
}
m_config.m_listSpec = (Config::List::What)( m_config.m_listSpec | listSpec );
m_config.setListSpec( (Config::List::What)( m_config.getListSpec() | listSpec ) );
}
break;
case modeTest:

View File

@ -85,6 +85,24 @@ namespace Catch
m_testSpecs.push_back( testSpec );
}
///////////////////////////////////////////////////////////////////////////
bool testsSpecified() const
{
return !m_testSpecs.empty();
}
///////////////////////////////////////////////////////////////////////////
const std::vector<std::string>& getTestSpecs() const
{
return m_testSpecs;
}
///////////////////////////////////////////////////////////////////////////
List::What getListSpec( void ) const
{
return m_listSpec;
}
///////////////////////////////////////////////////////////////////////////
void setListSpec( List::What listSpec )
{
@ -98,11 +116,17 @@ namespace Catch
}
///////////////////////////////////////////////////////////////////////////
std::string getFilename()
const std::string& getFilename() const
{
return m_filename;
}
///////////////////////////////////////////////////////////////////////////
const std::string& getMessage() const
{
return m_message;
}
///////////////////////////////////////////////////////////////////////////
void setError( const std::string& errorMessage )
{
@ -115,18 +139,12 @@ namespace Catch
m_reporter = std::auto_ptr<IReporter>( reporter );
}
///////////////////////////////////////////////////////////////////////////
IReporter* getReporter()
{
if( !m_reporter.get() )
setReporter( Hub::getReporterRegistry().create( "basic", *this ) );
return m_reporter.get();
}
///////////////////////////////////////////////////////////////////////////
IReporter* getReporter() const
{
return const_cast<Config*>( this )->getReporter();
if( !m_reporter.get() )
const_cast<Config*>( this )->setReporter( Hub::getReporterRegistry().create( "basic", *this ) );
return m_reporter.get();
}
///////////////////////////////////////////////////////////////////////////
@ -200,7 +218,7 @@ namespace Catch
return m_includeWhat == Include::SuccessfulResults;
}
private:
std::auto_ptr<IReporter> m_reporter;
std::string m_filename;
std::string m_message;

View File

@ -54,7 +54,7 @@ namespace Catch
{
std::cerr << "Reporters ignored when listing" << std::endl;
}
if( config.m_testSpecs.size() == 0 )
if( !config.testsSpecified() )
{
std::cerr << "Test specs ignored when listing" << std::endl;
}