Added Listeners (programatically provided extra reporters)

This commit is contained in:
Phil Nash
2015-08-07 08:20:56 +01:00
parent 4cb74761d9
commit 368714e7aa
19 changed files with 256 additions and 129 deletions

View File

@@ -18,27 +18,32 @@ namespace Catch {
public:
virtual ~ReporterRegistry() {
deleteAllValues( m_factories );
}
virtual ~ReporterRegistry() override {}
virtual IStreamingReporter* create( std::string const& name, Ptr<IConfig> const& config ) const {
virtual IStreamingReporter* create( std::string const& name, Ptr<IConfig> const& config ) const override {
FactoryMap::const_iterator it = m_factories.find( name );
if( it == m_factories.end() )
return CATCH_NULL;
return it->second->create( ReporterConfig( config ) );
}
void registerReporter( std::string const& name, IReporterFactory* factory ) {
void registerReporter( std::string const& name, Ptr<IReporterFactory> const& factory ) {
m_factories.insert( std::make_pair( name, factory ) );
}
void registerListener( Ptr<IReporterFactory> const& factory ) {
m_listeners.push_back( factory );
}
FactoryMap const& getFactories() const {
virtual FactoryMap const& getFactories() const override {
return m_factories;
}
virtual Listeners const& getListeners() const override {
return m_listeners;
}
private:
FactoryMap m_factories;
Listeners m_listeners;
};
}