| /* |
| * Created by Martin on 25/07/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 "catch_test_registry.h" |
| #include "catch_compiler_capabilities.h" |
| #include "catch_test_case_registry_impl.h" |
| #include "catch_interfaces_registry_hub.h" |
| |
| namespace Catch { |
| |
| auto makeTestInvoker( void(*testAsFunction)() ) noexcept -> ITestInvoker* { |
| return new(std::nothrow) TestInvokerAsFunction( testAsFunction ); |
| } |
| |
| NameAndTags::NameAndTags( StringRef const& name_ , StringRef const& tags_ ) noexcept : name( name_ ), tags( tags_ ) {} |
| |
| AutoReg::AutoReg( ITestInvoker* invoker, SourceLineInfo const& lineInfo, StringRef const& classOrMethod, NameAndTags const& nameAndTags ) noexcept { |
| CATCH_TRY { |
| getMutableRegistryHub() |
| .registerTest( |
| makeTestCase( |
| invoker, |
| extractClassName( classOrMethod ), |
| nameAndTags, |
| lineInfo)); |
| } CATCH_CATCH_ALL { |
| // Do not throw when constructing global objects, instead register the exception to be processed later |
| getMutableRegistryHub().registerStartupException(); |
| } |
| } |
| |
| AutoReg::~AutoReg() = default; |
| } |