catch_interfaces_registry_hub.h 2.2 KB

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