aboutsummaryrefslogtreecommitdiffstats
path: root/src/catch2/internal/catch_test_case_registry_impl.hpp
diff options
context:
space:
mode:
authorLexi Winter <lexi@le-fay.org>2025-06-29 19:25:29 +0100
committerLexi Winter <lexi@le-fay.org>2025-06-29 19:25:29 +0100
commitbc524d70253a4ab2fe40c3ca3e5666e267c0a4d1 (patch)
tree1e629e7b46b1d9972a973bc93fd100bcebd395be /src/catch2/internal/catch_test_case_registry_impl.hpp
downloadnihil-vendor/catch2.tar.gz
nihil-vendor/catch2.tar.bz2
Diffstat (limited to 'src/catch2/internal/catch_test_case_registry_impl.hpp')
-rw-r--r--src/catch2/internal/catch_test_case_registry_impl.hpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/catch2/internal/catch_test_case_registry_impl.hpp b/src/catch2/internal/catch_test_case_registry_impl.hpp
new file mode 100644
index 0000000..fbca89f
--- /dev/null
+++ b/src/catch2/internal/catch_test_case_registry_impl.hpp
@@ -0,0 +1,59 @@
+
+// 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 <catch2/interfaces/catch_interfaces_testcase.hpp>
+#include <catch2/interfaces/catch_interfaces_config.hpp>
+#include <catch2/internal/catch_unique_ptr.hpp>
+
+#include <vector>
+
+namespace Catch {
+
+ class IConfig;
+ class ITestInvoker;
+ class TestCaseHandle;
+ class TestSpec;
+
+ std::vector<TestCaseHandle> sortTests( IConfig const& config, std::vector<TestCaseHandle> const& unsortedTestCases );
+
+ bool isThrowSafe( TestCaseHandle const& testCase, IConfig const& config );
+
+ std::vector<TestCaseHandle> filterTests( std::vector<TestCaseHandle> const& testCases, TestSpec const& testSpec, IConfig const& config );
+ std::vector<TestCaseHandle> const& getAllTestCasesSorted( IConfig const& config );
+
+ class TestRegistry : public ITestCaseRegistry {
+ public:
+ void registerTest( Detail::unique_ptr<TestCaseInfo> testInfo, Detail::unique_ptr<ITestInvoker> testInvoker );
+
+ std::vector<TestCaseInfo*> const& getAllInfos() const override;
+ std::vector<TestCaseHandle> const& getAllTests() const override;
+ std::vector<TestCaseHandle> const& getAllTestsSorted( IConfig const& config ) const override;
+
+ ~TestRegistry() override; // = default
+
+ private:
+ std::vector<Detail::unique_ptr<TestCaseInfo>> m_owned_test_infos;
+ // Keeps a materialized vector for `getAllInfos`.
+ // We should get rid of that eventually (see interface note)
+ std::vector<TestCaseInfo*> m_viewed_test_infos;
+
+ std::vector<Detail::unique_ptr<ITestInvoker>> m_invokers;
+ std::vector<TestCaseHandle> m_handles;
+ mutable TestRunOrder m_currentSortOrder = TestRunOrder::Declared;
+ mutable std::vector<TestCaseHandle> m_sortedFunctions;
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
+
+
+} // end namespace Catch
+
+
+#endif // CATCH_TEST_CASE_REGISTRY_IMPL_HPP_INCLUDED