/* * Created by Martin on 31/08/2017. * * 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) */ #include #include #include #include #include #include #include #include #include #include namespace Catch { ReporterRegistry::ReporterRegistry() { // Because it is impossible to move out of initializer list, // we have to add the elements manually m_factories["automake"] = std::make_unique>(); m_factories["compact"] = std::make_unique>(); m_factories["console"] = std::make_unique>(); m_factories["junit"] = std::make_unique>(); m_factories["sonarqube"] = std::make_unique>(); m_factories["tap"] = std::make_unique>(); m_factories["teamcity"] = std::make_unique>(); m_factories["xml"] = std::make_unique>(); } ReporterRegistry::~ReporterRegistry() = default; IStreamingReporterPtr ReporterRegistry::create( std::string const& name, IConfig const* config ) const { auto it = m_factories.find( name ); if( it == m_factories.end() ) return nullptr; return it->second->create( ReporterConfig( config ) ); } void ReporterRegistry::registerReporter( std::string const& name, IReporterFactoryPtr factory ) { m_factories.emplace(name, std::move(factory)); } void ReporterRegistry::registerListener( IReporterFactoryPtr factory ) { m_listeners.push_back( std::move(factory) ); } IReporterRegistry::FactoryMap const& ReporterRegistry::getFactories() const { return m_factories; } IReporterRegistry::Listeners const& ReporterRegistry::getListeners() const { return m_listeners; } }