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_ptr.hpp" 12 13 #include <string> 14 15 namespace Catch { 16 17 class TestCase; 18 struct ITestCaseRegistry; 19 struct IExceptionTranslatorRegistry; 20 struct IExceptionTranslator; 21 struct IReporterRegistry; 22 struct IReporterFactory; 23 struct ITagAliasRegistry; 24 25 struct IRegistryHub { 26 virtual ~IRegistryHub(); 27 28 virtual IReporterRegistry const& getReporterRegistry() const = 0; 29 virtual ITestCaseRegistry const& getTestCaseRegistry() const = 0; 30 virtual ITagAliasRegistry const& getTagAliasRegistry() const = 0; 31 32 virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry() = 0; 33 }; 34 35 struct IMutableRegistryHub { 36 virtual ~IMutableRegistryHub(); 37 virtual void registerReporter( std::string const& name, Ptr<IReporterFactory> const& factory ) = 0; 38 virtual void registerListener( Ptr<IReporterFactory> const& factory ) = 0; 39 virtual void registerTest( TestCase const& testInfo ) = 0; 40 virtual void registerTranslator( const IExceptionTranslator* translator ) = 0; 41 virtual void registerTagAlias( std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo ) = 0; 42 }; 43 44 IRegistryHub& getRegistryHub(); 45 IMutableRegistryHub& getMutableRegistryHub(); 46 void cleanUp(); 47 std::string translateActiveException(); 48 49 } 50 51 #endif // TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED 52