| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | 
							-  /*
 
-  *  Created by Phil on 22/10/2010.
 
-  *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.
 
-  *
 
-  *  Distributed under the Boost Software License, Version 1.0. (See accompanying
 
-  *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-  */
 
- #ifndef TWOBLUECUBES_CATCH_RUNNER_IMPL_HPP_INCLUDED
 
- #define TWOBLUECUBES_CATCH_RUNNER_IMPL_HPP_INCLUDED
 
- #include "catch_interfaces_generatortracker.h"
 
- #include "catch_interfaces_runner.h"
 
- #include "catch_interfaces_reporter.h"
 
- #include "catch_interfaces_exception.h"
 
- #include "catch_config.hpp"
 
- #include "catch_test_registry.h"
 
- #include "catch_test_case_info.h"
 
- #include "catch_capture.hpp"
 
- #include "catch_totals.h"
 
- #include "catch_test_spec.h"
 
- #include "catch_test_case_tracker.h"
 
- #include "catch_timer.h"
 
- #include "catch_assertionhandler.h"
 
- #include "catch_fatal_condition.h"
 
- #include <string>
 
- namespace Catch {
 
-     struct IMutableContext;
 
-     ///////////////////////////////////////////////////////////////////////////
 
-     class RunContext : public IResultCapture, public IRunner {
 
-     public:
 
-         RunContext( RunContext const& ) = delete;
 
-         RunContext& operator =( RunContext const& ) = delete;
 
-         explicit RunContext( IConfigPtr const& _config, IStreamingReporterPtr&& reporter );
 
-         ~RunContext() override;
 
-         void testGroupStarting( std::string const& testSpec, std::size_t groupIndex, std::size_t groupsCount );
 
-         void testGroupEnded( std::string const& testSpec, Totals const& totals, std::size_t groupIndex, std::size_t groupsCount );
 
-         Totals runTest(TestCase const& testCase);
 
-         IConfigPtr config() const;
 
-         IStreamingReporter& reporter() const;
 
-     public: // IResultCapture
 
-         // Assertion handlers
 
-         void handleExpr
 
-                 (   AssertionInfo const& info,
 
-                     ITransientExpression const& expr,
 
-                     AssertionReaction& reaction ) override;
 
-         void handleMessage
 
-                 (   AssertionInfo const& info,
 
-                     ResultWas::OfType resultType,
 
-                     StringRef const& message,
 
-                     AssertionReaction& reaction ) override;
 
-         void handleUnexpectedExceptionNotThrown
 
-                 (   AssertionInfo const& info,
 
-                     AssertionReaction& reaction ) override;
 
-         void handleUnexpectedInflightException
 
-                 (   AssertionInfo const& info,
 
-                     std::string const& message,
 
-                     AssertionReaction& reaction ) override;
 
-         void handleIncomplete
 
-                 (   AssertionInfo const& info ) override;
 
-         void handleNonExpr
 
-                 (   AssertionInfo const &info,
 
-                     ResultWas::OfType resultType,
 
-                     AssertionReaction &reaction ) override;
 
-         bool sectionStarted( SectionInfo const& sectionInfo, Counts& assertions ) override;
 
-         void sectionEnded( SectionEndInfo const& endInfo ) override;
 
-         void sectionEndedEarly( SectionEndInfo const& endInfo ) override;
 
-         auto acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker& override;
 
- #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
 
-         void benchmarkPreparing( std::string const& name ) override;
 
-         void benchmarkStarting( BenchmarkInfo const& info ) override;
 
-         void benchmarkEnded( BenchmarkStats<> const& stats ) override;
 
-         void benchmarkFailed( std::string const& error ) override;
 
- #endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
-         void pushScopedMessage( MessageInfo const& message ) override;
 
-         void popScopedMessage( MessageInfo const& message ) override;
 
-         void emplaceUnscopedMessage( MessageBuilder const& builder ) override;
 
-         std::string getCurrentTestName() const override;
 
-         const AssertionResult* getLastResult() const override;
 
-         void exceptionEarlyReported() override;
 
-         void handleFatalErrorCondition( StringRef message ) override;
 
-         bool lastAssertionPassed() override;
 
-         void assertionPassed() override;
 
-     public:
 
-         // !TBD We need to do this another way!
 
-         bool aborting() const final;
 
-     private:
 
-         void runCurrentTest( std::string& redirectedCout, std::string& redirectedCerr );
 
-         void invokeActiveTestCase();
 
-         void resetAssertionInfo();
 
-         bool testForMissingAssertions( Counts& assertions );
 
-         void assertionEnded( AssertionResult const& result );
 
-         void reportExpr
 
-                 (   AssertionInfo const &info,
 
-                     ResultWas::OfType resultType,
 
-                     ITransientExpression const *expr,
 
-                     bool negated );
 
-         void populateReaction( AssertionReaction& reaction );
 
-     private:
 
-         void handleUnfinishedSections();
 
-         TestRunInfo m_runInfo;
 
-         IMutableContext& m_context;
 
-         TestCase const* m_activeTestCase = nullptr;
 
-         ITracker* m_testCaseTracker = nullptr;
 
-         Option<AssertionResult> m_lastResult;
 
-         IConfigPtr m_config;
 
-         Totals m_totals;
 
-         IStreamingReporterPtr m_reporter;
 
-         std::vector<MessageInfo> m_messages;
 
-         std::vector<ScopedMessage> m_messageScopes; /* Keeps owners of so-called unscoped messages. */
 
-         AssertionInfo m_lastAssertionInfo;
 
-         std::vector<SectionEndInfo> m_unfinishedSections;
 
-         std::vector<ITracker*> m_activeSections;
 
-         TrackerContext m_trackerContext;
 
-         FatalConditionHandler m_fatalConditionhandler;
 
-         bool m_lastAssertionPassed = false;
 
-         bool m_shouldReportUnexpected = true;
 
-         bool m_includeSuccessfulResults;
 
-     };
 
-     void seedRng(IConfig const& config);
 
-     unsigned int rngSeed();
 
- } // end namespace Catch
 
- #endif // TWOBLUECUBES_CATCH_RUNNER_IMPL_HPP_INCLUDED
 
 
  |