mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-22 21:36:11 +01:00
Renamed SectionInfo -> RunningSection.
Added SectionInfo (that now corresponds to TestCaseInfo) and SectionStats Switched some const T&'s to T const&'s
This commit is contained in:
parent
3d6be037e9
commit
95df676a27
@ -21,9 +21,8 @@
|
||||
|
||||
namespace Catch
|
||||
{
|
||||
struct ReporterConfig
|
||||
{
|
||||
ReporterConfig( std::ostream& _stream, const ConfigData& _fullConfig )
|
||||
struct ReporterConfig {
|
||||
ReporterConfig( std::ostream& _stream, ConfigData const& _fullConfig )
|
||||
: m_stream( &_stream ), m_fullConfig( _fullConfig ) {}
|
||||
|
||||
std::ostream& stream() { return *m_stream; }
|
||||
@ -36,8 +35,7 @@ namespace Catch
|
||||
ConfigData m_fullConfig;
|
||||
};
|
||||
|
||||
struct ReporterPreferences
|
||||
{
|
||||
struct ReporterPreferences {
|
||||
ReporterPreferences()
|
||||
: shouldRedirectStdOut( false )
|
||||
{}
|
||||
@ -45,9 +43,23 @@ namespace Catch
|
||||
bool shouldRedirectStdOut;
|
||||
};
|
||||
|
||||
struct SectionInfo {
|
||||
SectionInfo( std::string const& _name,
|
||||
std::string const& _description,
|
||||
SourceLineInfo const& _lineInfo )
|
||||
: name( _name ),
|
||||
description( _description ),
|
||||
sourceLineInfo( _lineInfo )
|
||||
{}
|
||||
|
||||
std::string name;
|
||||
std::string description;
|
||||
SourceLineInfo sourceLineInfo;
|
||||
};
|
||||
|
||||
struct AssertionStats {
|
||||
AssertionStats( const AssertionResult& _assertionResult,
|
||||
const Totals& _totals )
|
||||
AssertionStats( AssertionResult const& _assertionResult,
|
||||
Totals const& _totals )
|
||||
: assertionResult( _assertionResult ),
|
||||
totals( _totals )
|
||||
{}
|
||||
@ -57,11 +69,16 @@ namespace Catch
|
||||
Totals totals;
|
||||
};
|
||||
|
||||
struct SectionStats {
|
||||
SectionInfo sectionInfo;
|
||||
Totals totals;
|
||||
};
|
||||
|
||||
struct TestCaseStats {
|
||||
TestCaseStats( const TestCaseInfo& _testInfo,
|
||||
const Totals& _totals,
|
||||
const std::string& _stdOut,
|
||||
const std::string& _stdErr,
|
||||
TestCaseStats( TestCaseInfo const& _testInfo,
|
||||
Totals const& _totals,
|
||||
std::string const& _stdOut,
|
||||
std::string const& _stdErr,
|
||||
bool _missingAssertions,
|
||||
bool _aborting )
|
||||
: testInfo( _testInfo ),
|
||||
@ -81,8 +98,8 @@ namespace Catch
|
||||
};
|
||||
|
||||
struct TestGroupStats {
|
||||
TestGroupStats( const std::string& _groupName,
|
||||
const Totals& _totals,
|
||||
TestGroupStats( std::string const& _groupName,
|
||||
Totals const& _totals,
|
||||
bool _aborting )
|
||||
: groupName( _groupName ),
|
||||
totals( _totals ),
|
||||
@ -95,8 +112,8 @@ namespace Catch
|
||||
};
|
||||
|
||||
struct TestRunStats {
|
||||
TestRunStats( const std::string& _runName,
|
||||
const Totals& _totals,
|
||||
TestRunStats( std::string const& _runName,
|
||||
Totals const& _totals,
|
||||
bool _aborting )
|
||||
: runName( _runName ),
|
||||
totals( _totals ),
|
||||
@ -113,17 +130,17 @@ namespace Catch
|
||||
virtual ~IStreamingReporter();
|
||||
virtual ReporterPreferences getPreferences() const = 0;
|
||||
|
||||
virtual void testRunStarting( const std::string& runName ) = 0;
|
||||
virtual void testGroupStarting( const std::string& groupName ) = 0;
|
||||
virtual void testRunStarting( std::string const& runName ) = 0;
|
||||
virtual void testGroupStarting( std::string const& groupName ) = 0;
|
||||
|
||||
// !TBD: include section info (perhaps TestCase has an isSection flag and/ or a parent pointer
|
||||
virtual void testCaseStarting( const TestCaseInfo& testInfo ) = 0;
|
||||
virtual void assertionStarting( const AssertionInfo& assertionInfo ) = 0;
|
||||
virtual void testCaseStarting( TestCaseInfo const& testInfo ) = 0;
|
||||
virtual void assertionStarting( AssertionInfo const& assertionInfo ) = 0;
|
||||
|
||||
virtual void assertionEnding( const AssertionStats& assertionStats ) = 0;
|
||||
virtual void testCaseEnding( const TestCaseStats& testCaseStats ) = 0;
|
||||
virtual void testGroupEnding( const TestGroupStats& testGroupStats ) = 0;
|
||||
virtual void testRunEnding( const TestRunStats& testRunStats ) = 0;
|
||||
virtual void assertionEnding( AssertionStats const& assertionStats ) = 0;
|
||||
virtual void testCaseEnding( TestCaseStats const& testCaseStats ) = 0;
|
||||
virtual void testGroupEnding( TestGroupStats const& testGroupStats ) = 0;
|
||||
virtual void testRunEnding( TestRunStats const& testRunStats ) = 0;
|
||||
};
|
||||
// !TBD: Derived helper that implements the streaming interface but holds the stats
|
||||
// - declares a new interface where methods are called at the end of each event
|
||||
@ -138,23 +155,23 @@ namespace Catch
|
||||
virtual bool shouldRedirectStdout() const = 0;
|
||||
|
||||
virtual void StartTesting() = 0;
|
||||
virtual void EndTesting( const Totals& totals ) = 0;
|
||||
virtual void EndTesting( Totals const& totals ) = 0;
|
||||
|
||||
virtual void StartGroup( const std::string& groupName ) = 0;
|
||||
virtual void EndGroup( const std::string& groupName, const Totals& totals ) = 0;
|
||||
virtual void StartGroup( std::string const& groupName ) = 0;
|
||||
virtual void EndGroup( std::string const& groupName, Totals const& totals ) = 0;
|
||||
|
||||
virtual void StartTestCase( const TestCaseInfo& testInfo ) = 0;
|
||||
virtual void StartTestCase( TestCaseInfo const& testInfo ) = 0;
|
||||
// TestCaseResult
|
||||
virtual void EndTestCase( const TestCaseInfo& testInfo, const Totals& totals, const std::string& stdOut, const std::string& stdErr ) = 0;
|
||||
virtual void EndTestCase( TestCaseInfo const& testInfo, Totals const& totals, std::string const& stdOut, std::string const& stdErr ) = 0;
|
||||
|
||||
// SectionInfo
|
||||
virtual void StartSection( const std::string& sectionName, const std::string& description ) = 0;
|
||||
virtual void StartSection( std::string const& sectionName, std::string const& description ) = 0;
|
||||
// Section Result
|
||||
virtual void EndSection( const std::string& sectionName, const Counts& assertions ) = 0;
|
||||
virtual void EndSection( std::string const& sectionName, const Counts& assertions ) = 0;
|
||||
|
||||
// - merge into SectionResult ?
|
||||
virtual void NoAssertionsInSection( const std::string& sectionName ) = 0;
|
||||
virtual void NoAssertionsInTestCase( const std::string& testName ) = 0;
|
||||
virtual void NoAssertionsInSection( std::string const& sectionName ) = 0;
|
||||
virtual void NoAssertionsInTestCase( std::string const& testName ) = 0;
|
||||
|
||||
// - merge into SectionResult, TestCaseResult, GroupResult & TestRunResult
|
||||
virtual void Aborted() = 0;
|
||||
@ -166,7 +183,7 @@ namespace Catch
|
||||
class LegacyReporterAdapter : public SharedImpl<IStreamingReporter>
|
||||
{
|
||||
public:
|
||||
LegacyReporterAdapter( const Ptr<IReporter>& legacyReporter, const ReporterConfig& config )
|
||||
LegacyReporterAdapter( Ptr<IReporter> const& legacyReporter, ReporterConfig const& config )
|
||||
: m_legacyReporter( legacyReporter ),
|
||||
m_config( config )
|
||||
{}
|
||||
@ -178,33 +195,33 @@ namespace Catch
|
||||
return prefs;
|
||||
}
|
||||
|
||||
virtual void testRunStarting( const std::string& ) {
|
||||
virtual void testRunStarting( std::string const& ) {
|
||||
m_legacyReporter->StartTesting();
|
||||
}
|
||||
virtual void testGroupStarting( const std::string& groupName ) {
|
||||
virtual void testGroupStarting( std::string const& groupName ) {
|
||||
m_legacyReporter->StartGroup( groupName );
|
||||
}
|
||||
virtual void testCaseStarting( const TestCaseInfo& testInfo ) {
|
||||
virtual void testCaseStarting( TestCaseInfo const& testInfo ) {
|
||||
m_legacyReporter->StartTestCase( testInfo );
|
||||
}
|
||||
virtual void assertionStarting( const AssertionInfo& ) {
|
||||
virtual void assertionStarting( AssertionInfo const& ) {
|
||||
// Not on legacy interface
|
||||
}
|
||||
|
||||
virtual void assertionEnding( const AssertionStats& assertionStats ) {
|
||||
virtual void assertionEnding( AssertionStats const& assertionStats ) {
|
||||
m_legacyReporter->Result( assertionStats.assertionResult );
|
||||
}
|
||||
virtual void testCaseEnding( const TestCaseStats& testCaseStats ) {
|
||||
virtual void testCaseEnding( TestCaseStats const& testCaseStats ) {
|
||||
if( testCaseStats.missingAssertions )
|
||||
m_legacyReporter->NoAssertionsInTestCase( testCaseStats.testInfo.name );
|
||||
m_legacyReporter->EndTestCase( testCaseStats.testInfo, testCaseStats.totals, testCaseStats.stdOut, testCaseStats.stdErr );
|
||||
}
|
||||
virtual void testGroupEnding( const TestGroupStats& testGroupStats ) {
|
||||
virtual void testGroupEnding( TestGroupStats const& testGroupStats ) {
|
||||
if( testGroupStats.aborting )
|
||||
m_legacyReporter->Aborted();
|
||||
m_legacyReporter->EndGroup( testGroupStats.groupName, testGroupStats.totals );
|
||||
}
|
||||
virtual void testRunEnding( const TestRunStats& testRunStats ) {
|
||||
virtual void testRunEnding( TestRunStats const& testRunStats ) {
|
||||
m_legacyReporter->EndTesting( testRunStats.totals );
|
||||
}
|
||||
|
||||
@ -216,7 +233,7 @@ namespace Catch
|
||||
|
||||
struct IReporterFactory {
|
||||
virtual ~IReporterFactory();
|
||||
virtual IReporter* create( const ReporterConfig& config ) const = 0;
|
||||
virtual IReporter* create( ReporterConfig const& config ) const = 0;
|
||||
virtual std::string getDescription() const = 0;
|
||||
};
|
||||
|
||||
@ -224,11 +241,11 @@ namespace Catch
|
||||
typedef std::map<std::string, IReporterFactory*> FactoryMap;
|
||||
|
||||
virtual ~IReporterRegistry();
|
||||
virtual IReporter* create( const std::string& name, const ReporterConfig& config ) const = 0;
|
||||
virtual IReporter* create( std::string const& name, ReporterConfig const& config ) const = 0;
|
||||
virtual const FactoryMap& getFactories() const = 0;
|
||||
};
|
||||
|
||||
inline std::string trim( const std::string& str ) {
|
||||
inline std::string trim( std::string const& str ) {
|
||||
std::string::size_type start = str.find_first_not_of( "\n\r\t " );
|
||||
std::string::size_type end = str.find_last_not_of( "\n\r\t " );
|
||||
|
||||
|
@ -68,7 +68,7 @@ namespace Catch {
|
||||
if( m_runStatus == NothingRun )
|
||||
m_runStatus = EncounteredASection;
|
||||
|
||||
SectionInfo* thisSection = m_currentSection->findOrAddSubSection( name, m_changed );
|
||||
RunningSection* thisSection = m_currentSection->findOrAddSubSection( name, m_changed );
|
||||
|
||||
if( !wasSectionSeen() && thisSection->shouldRun() ) {
|
||||
m_currentSection = thisSection;
|
||||
@ -102,9 +102,9 @@ namespace Catch {
|
||||
private:
|
||||
const TestCase& m_info;
|
||||
RunStatus m_runStatus;
|
||||
SectionInfo m_rootSection;
|
||||
SectionInfo* m_currentSection;
|
||||
SectionInfo* m_lastSectionToRun;
|
||||
RunningSection m_rootSection;
|
||||
RunningSection* m_currentSection;
|
||||
RunningSection* m_lastSectionToRun;
|
||||
bool m_changed;
|
||||
};
|
||||
}
|
||||
|
@ -15,17 +15,10 @@
|
||||
|
||||
namespace Catch {
|
||||
|
||||
struct ISectionInfo {
|
||||
virtual ~ISectionInfo() {}
|
||||
|
||||
virtual std::string getName() const = 0;
|
||||
virtual const ISectionInfo* getParent() const = 0;
|
||||
};
|
||||
|
||||
class SectionInfo : public ISectionInfo {
|
||||
class RunningSection {
|
||||
public:
|
||||
|
||||
typedef std::vector<SectionInfo*> SubSections;
|
||||
typedef std::vector<RunningSection*> SubSections;
|
||||
|
||||
enum State {
|
||||
Root,
|
||||
@ -35,23 +28,23 @@ namespace Catch {
|
||||
TestedLeaf
|
||||
};
|
||||
|
||||
SectionInfo( SectionInfo* parent, const std::string& name )
|
||||
RunningSection( RunningSection* parent, const std::string& name )
|
||||
: m_state( Unknown ),
|
||||
m_parent( parent ),
|
||||
m_name( name )
|
||||
{}
|
||||
|
||||
SectionInfo( const std::string& name )
|
||||
RunningSection( const std::string& name )
|
||||
: m_state( Root ),
|
||||
m_parent( NULL ),
|
||||
m_name( name )
|
||||
{}
|
||||
|
||||
~SectionInfo() {
|
||||
~RunningSection() {
|
||||
deleteAll( m_subSections );
|
||||
}
|
||||
|
||||
virtual std::string getName() const {
|
||||
std::string getName() const {
|
||||
return m_name;
|
||||
}
|
||||
|
||||
@ -63,7 +56,7 @@ namespace Catch {
|
||||
return m_state == Branch;
|
||||
}
|
||||
|
||||
const SectionInfo* getParent() const {
|
||||
const RunningSection* getParent() const {
|
||||
return m_parent;
|
||||
}
|
||||
|
||||
@ -80,17 +73,17 @@ namespace Catch {
|
||||
|
||||
// Mutable methods:
|
||||
|
||||
SectionInfo* getParent() {
|
||||
RunningSection* getParent() {
|
||||
return m_parent;
|
||||
}
|
||||
|
||||
SectionInfo* findOrAddSubSection( const std::string& name, bool& changed ) {
|
||||
RunningSection* findOrAddSubSection( const std::string& name, bool& changed ) {
|
||||
for( SubSections::const_iterator it = m_subSections.begin();
|
||||
it != m_subSections.end();
|
||||
++it)
|
||||
if( (*it)->getName() == name )
|
||||
return *it;
|
||||
SectionInfo* subSection = new SectionInfo( this, name );
|
||||
RunningSection* subSection = new RunningSection( this, name );
|
||||
m_subSections.push_back( subSection );
|
||||
m_state = Branch;
|
||||
changed = true;
|
||||
@ -111,7 +104,7 @@ namespace Catch {
|
||||
|
||||
private:
|
||||
State m_state;
|
||||
SectionInfo* m_parent;
|
||||
RunningSection* m_parent;
|
||||
std::string m_name;
|
||||
SubSections m_subSections;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user