// Copyright Catch2 Authors // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE.txt or copy at // https://www.boost.org/LICENSE_1_0.txt) // SPDX-License-Identifier: BSL-1.0 #ifndef CATCH_TEST_CASE_REGISTRY_IMPL_HPP_INCLUDED #define CATCH_TEST_CASE_REGISTRY_IMPL_HPP_INCLUDED #include #include #include #include namespace Catch { class IConfig; class ITestInvoker; class TestCaseHandle; class TestSpec; std::vector sortTests( IConfig const& config, std::vector const& unsortedTestCases ); bool isThrowSafe( TestCaseHandle const& testCase, IConfig const& config ); std::vector filterTests( std::vector const& testCases, TestSpec const& testSpec, IConfig const& config ); std::vector const& getAllTestCasesSorted( IConfig const& config ); class TestRegistry : public ITestCaseRegistry { public: void registerTest( Detail::unique_ptr testInfo, Detail::unique_ptr testInvoker ); std::vector const& getAllInfos() const override; std::vector const& getAllTests() const override; std::vector const& getAllTestsSorted( IConfig const& config ) const override; ~TestRegistry() override; // = default private: std::vector> m_owned_test_infos; // Keeps a materialized vector for `getAllInfos`. // We should get rid of that eventually (see interface note) std::vector m_viewed_test_infos; std::vector> m_invokers; std::vector m_handles; mutable TestRunOrder m_currentSortOrder = TestRunOrder::Declared; mutable std::vector m_sortedFunctions; }; /////////////////////////////////////////////////////////////////////////// } // end namespace Catch #endif // CATCH_TEST_CASE_REGISTRY_IMPL_HPP_INCLUDED