mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 12:17: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:
		| @@ -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; | ||||
|     }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash