| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 | 
							- /*
 
-  *  Created by Phil on 31/12/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_INTERFACES_REPORTER_H_INCLUDED
 
- #define TWOBLUECUBES_CATCH_INTERFACES_REPORTER_H_INCLUDED
 
- #include "catch_section_info.h"
 
- #include "catch_common.h"
 
- #include "catch_config.hpp"
 
- #include "catch_totals.h"
 
- #include "catch_test_case_info.h"
 
- #include "catch_assertionresult.h"
 
- #include "catch_message.h"
 
- #include "catch_option.hpp"
 
- #include "catch_stringref.h"
 
- #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
 
- #include "benchmark/catch_estimate.hpp"
 
- #include "benchmark/catch_outlier_classification.hpp"
 
- #endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
- #include <string>
 
- #include <iosfwd>
 
- #include <map>
 
- #include <set>
 
- #include <memory>
 
- #include <algorithm>
 
- namespace Catch {
 
-     struct ReporterConfig {
 
-         explicit ReporterConfig( IConfigPtr const& _fullConfig );
 
-         ReporterConfig( IConfigPtr const& _fullConfig, std::ostream& _stream );
 
-         std::ostream& stream() const;
 
-         IConfigPtr fullConfig() const;
 
-     private:
 
-         std::ostream* m_stream;
 
-         IConfigPtr m_fullConfig;
 
-     };
 
-     struct ReporterPreferences {
 
-         bool shouldRedirectStdOut = false;
 
-         bool shouldReportAllAssertions = false;
 
-     };
 
-     template<typename T>
 
-     struct LazyStat : Option<T> {
 
-         LazyStat& operator=( T const& _value ) {
 
-             Option<T>::operator=( _value );
 
-             used = false;
 
-             return *this;
 
-         }
 
-         void reset() {
 
-             Option<T>::reset();
 
-             used = false;
 
-         }
 
-         bool used = false;
 
-     };
 
-     struct TestRunInfo {
 
-         TestRunInfo( std::string const& _name );
 
-         std::string name;
 
-     };
 
-     struct GroupInfo {
 
-         GroupInfo(  std::string const& _name,
 
-                     std::size_t _groupIndex,
 
-                     std::size_t _groupsCount );
 
-         std::string name;
 
-         std::size_t groupIndex;
 
-         std::size_t groupsCounts;
 
-     };
 
-     struct AssertionStats {
 
-         AssertionStats( AssertionResult const& _assertionResult,
 
-                         std::vector<MessageInfo> const& _infoMessages,
 
-                         Totals const& _totals );
 
-         AssertionStats( AssertionStats const& )              = default;
 
-         AssertionStats( AssertionStats && )                  = default;
 
-         AssertionStats& operator = ( AssertionStats const& ) = delete;
 
-         AssertionStats& operator = ( AssertionStats && )     = delete;
 
-         virtual ~AssertionStats();
 
-         AssertionResult assertionResult;
 
-         std::vector<MessageInfo> infoMessages;
 
-         Totals totals;
 
-     };
 
-     struct SectionStats {
 
-         SectionStats(   SectionInfo const& _sectionInfo,
 
-                         Counts const& _assertions,
 
-                         double _durationInSeconds,
 
-                         bool _missingAssertions );
 
-         SectionStats( SectionStats const& )              = default;
 
-         SectionStats( SectionStats && )                  = default;
 
-         SectionStats& operator = ( SectionStats const& ) = default;
 
-         SectionStats& operator = ( SectionStats && )     = default;
 
-         virtual ~SectionStats();
 
-         SectionInfo sectionInfo;
 
-         Counts assertions;
 
-         double durationInSeconds;
 
-         bool missingAssertions;
 
-     };
 
-     struct TestCaseStats {
 
-         TestCaseStats(  TestCaseInfo const& _testInfo,
 
-                         Totals const& _totals,
 
-                         std::string const& _stdOut,
 
-                         std::string const& _stdErr,
 
-                         bool _aborting );
 
-         TestCaseStats( TestCaseStats const& )              = default;
 
-         TestCaseStats( TestCaseStats && )                  = default;
 
-         TestCaseStats& operator = ( TestCaseStats const& ) = default;
 
-         TestCaseStats& operator = ( TestCaseStats && )     = default;
 
-         virtual ~TestCaseStats();
 
-         TestCaseInfo testInfo;
 
-         Totals totals;
 
-         std::string stdOut;
 
-         std::string stdErr;
 
-         bool aborting;
 
-     };
 
-     struct TestGroupStats {
 
-         TestGroupStats( GroupInfo const& _groupInfo,
 
-                         Totals const& _totals,
 
-                         bool _aborting );
 
-         TestGroupStats( GroupInfo const& _groupInfo );
 
-         TestGroupStats( TestGroupStats const& )              = default;
 
-         TestGroupStats( TestGroupStats && )                  = default;
 
-         TestGroupStats& operator = ( TestGroupStats const& ) = default;
 
-         TestGroupStats& operator = ( TestGroupStats && )     = default;
 
-         virtual ~TestGroupStats();
 
-         GroupInfo groupInfo;
 
-         Totals totals;
 
-         bool aborting;
 
-     };
 
-     struct TestRunStats {
 
-         TestRunStats(   TestRunInfo const& _runInfo,
 
-                         Totals const& _totals,
 
-                         bool _aborting );
 
-         TestRunStats( TestRunStats const& )              = default;
 
-         TestRunStats( TestRunStats && )                  = default;
 
-         TestRunStats& operator = ( TestRunStats const& ) = default;
 
-         TestRunStats& operator = ( TestRunStats && )     = default;
 
-         virtual ~TestRunStats();
 
-         TestRunInfo runInfo;
 
-         Totals totals;
 
-         bool aborting;
 
-     };
 
- #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
 
-     struct BenchmarkInfo {
 
-         std::string name;
 
-         double estimatedDuration;
 
-         int iterations;
 
-         int samples;
 
-         unsigned int resamples;
 
-         double clockResolution;
 
-         double clockCost;
 
-     };
 
-     template <class Duration>
 
-     struct BenchmarkStats {
 
-         BenchmarkInfo info;
 
-         std::vector<Duration> samples;
 
-         Benchmark::Estimate<Duration> mean;
 
-         Benchmark::Estimate<Duration> standardDeviation;
 
-         Benchmark::OutlierClassification outliers;
 
-         double outlierVariance;
 
-         template <typename Duration2>
 
-         operator BenchmarkStats<Duration2>() const {
 
-             std::vector<Duration2> samples2;
 
-             samples2.reserve(samples.size());
 
-             std::transform(samples.begin(), samples.end(), std::back_inserter(samples2), [](Duration d) { return Duration2(d); });
 
-             return {
 
-                 info,
 
-                 std::move(samples2),
 
-                 mean,
 
-                 standardDeviation,
 
-                 outliers,
 
-                 outlierVariance,
 
-             };
 
-         }
 
-     };
 
- #endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
-     struct IStreamingReporter {
 
-         virtual ~IStreamingReporter() = default;
 
-         // Implementing class must also provide the following static methods:
 
-         // static std::string getDescription();
 
-         // static std::set<Verbosity> getSupportedVerbosities()
 
-         virtual ReporterPreferences getPreferences() const = 0;
 
-         virtual void noMatchingTestCases( std::string const& spec ) = 0;
 
-         virtual void reportInvalidArguments(std::string const&) {}
 
-         
 
-         virtual void testRunStarting( TestRunInfo const& testRunInfo ) = 0;
 
-         virtual void testGroupStarting( GroupInfo const& groupInfo ) = 0;
 
-         virtual void testCaseStarting( TestCaseInfo const& testInfo ) = 0;
 
-         virtual void sectionStarting( SectionInfo const& sectionInfo ) = 0;
 
- #if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
 
-         virtual void benchmarkPreparing( std::string const& ) {}
 
-         virtual void benchmarkStarting( BenchmarkInfo const& ) {}
 
-         virtual void benchmarkEnded( BenchmarkStats<> const& ) {}
 
-         virtual void benchmarkFailed( std::string const& ) {}
 
- #endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
-         virtual void assertionStarting( AssertionInfo const& assertionInfo ) = 0;
 
-         // The return value indicates if the messages buffer should be cleared:
 
-         virtual bool assertionEnded( AssertionStats const& assertionStats ) = 0;
 
-         virtual void sectionEnded( SectionStats const& sectionStats ) = 0;
 
-         virtual void testCaseEnded( TestCaseStats const& testCaseStats ) = 0;
 
-         virtual void testGroupEnded( TestGroupStats const& testGroupStats ) = 0;
 
-         virtual void testRunEnded( TestRunStats const& testRunStats ) = 0;
 
-         virtual void skipTest( TestCaseInfo const& testInfo ) = 0;
 
-         // Default empty implementation provided
 
-         virtual void fatalErrorEncountered( StringRef name );
 
-         virtual bool isMulti() const;
 
-     };
 
-     using IStreamingReporterPtr = std::unique_ptr<IStreamingReporter>;
 
-     struct IReporterFactory {
 
-         virtual ~IReporterFactory();
 
-         virtual IStreamingReporterPtr create( ReporterConfig const& config ) const = 0;
 
-         virtual std::string getDescription() const = 0;
 
-     };
 
-     using IReporterFactoryPtr = std::shared_ptr<IReporterFactory>;
 
-     struct IReporterRegistry {
 
-         using FactoryMap = std::map<std::string, IReporterFactoryPtr>;
 
-         using Listeners = std::vector<IReporterFactoryPtr>;
 
-         virtual ~IReporterRegistry();
 
-         virtual IStreamingReporterPtr create( std::string const& name, IConfigPtr const& config ) const = 0;
 
-         virtual FactoryMap const& getFactories() const = 0;
 
-         virtual Listeners const& getListeners() const = 0;
 
-     };
 
- } // end namespace Catch
 
- #endif // TWOBLUECUBES_CATCH_INTERFACES_REPORTER_H_INCLUDED
 
 
  |