1 /* 2 * Created by Phil on 5/8/2012. 3 * Copyright 2012 Two Blue Cubes Ltd. All rights reserved. 4 * 5 * Distributed under the Boost Software License, Version 1.0. (See accompanying 6 * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 7 */ 8 #ifndef TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED 9 #define TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED 10 11 #include "catch_common.h" 12 13 #include <string> 14 #include <memory> 15 16 namespace Catch { 17 18 class TestCase; 19 struct ITestCaseRegistry; 20 struct IExceptionTranslatorRegistry; 21 struct IExceptionTranslator; 22 struct IReporterRegistry; 23 struct IReporterFactory; 24 struct ITagAliasRegistry; 25 struct IMutableEnumValuesRegistry; 26 27 class StartupExceptionRegistry; 28 29 using IReporterFactoryPtr = std::shared_ptr<IReporterFactory>; 30 31 struct IRegistryHub { 32 virtual ~IRegistryHub(); 33 34 virtual IReporterRegistry const& getReporterRegistry() const = 0; 35 virtual ITestCaseRegistry const& getTestCaseRegistry() const = 0; 36 virtual ITagAliasRegistry const& getTagAliasRegistry() const = 0; 37 virtual IExceptionTranslatorRegistry const& getExceptionTranslatorRegistry() const = 0; 38 39 40 virtual StartupExceptionRegistry const& getStartupExceptionRegistry() const = 0; 41 }; 42 43 struct IMutableRegistryHub { 44 virtual ~IMutableRegistryHub(); 45 virtual void registerReporter( std::string const& name, IReporterFactoryPtr const& factory ) = 0; 46 virtual void registerListener( IReporterFactoryPtr const& factory ) = 0; 47 virtual void registerTest( TestCase const& testInfo ) = 0; 48 virtual void registerTranslator( const IExceptionTranslator* translator ) = 0; 49 virtual void registerTagAlias( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) = 0; 50 virtual void registerStartupException() noexcept = 0; 51 virtual IMutableEnumValuesRegistry& getMutableEnumValuesRegistry() = 0; 52 }; 53 54 IRegistryHub const& getRegistryHub(); 55 IMutableRegistryHub& getMutableRegistryHub(); 56 void cleanUp(); 57 std::string translateActiveException(); 58 59 } 60 61 #endif // TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED 62