KleidiAI Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 2 / 0 / 2
Functions: 100.0% 2 / 0 / 2
Branches: -% 0 / 0 / 0

test/nextgen/common/test_registry.hpp
Line Branch Exec Source
1 //
2 // SPDX-FileCopyrightText: Copyright 2025 Arm Limited and/or its affiliates <open-source-office@arm.com>
3 //
4 // SPDX-License-Identifier: Apache-2.0
5 //
6
7 #pragma once
8
9 #include <functional>
10 #include <utility>
11
12 namespace kai::test {
13
14 #define KAI_REGISTER_TEST(test_suite_type, test_type, test_suite_name, test_name, ...) \
15 testing::RegisterTest( \
16 test_suite_name, test_name, nullptr, nullptr, __FILE__, __LINE__, \
17 [=]() -> test_suite_type* { return new test_type(__VA_ARGS__); });
18
19 /// A facility to register functions that are called before the main function
20 /// to setup the list of tests.
21 ///
22 /// Example:
23 ///
24 /// ```
25 /// static auto a_register_function = TestRegistry::register_setup([]() {
26 /// // Setups the list of tests.
27 /// });
28 /// ```
29 class TestRegistry {
30 public:
31 using Fn = std::function<void()>;
32
33 private:
34 class Handle {
35 friend class TestRegistry;
36
37 private:
38 explicit Handle(Fn&& fn);
39 };
40
41 public:
42 /// Registers a function to be called in the main function to setup the list of tests.
43 ///
44 /// The return value of this function must be kept as a static variable.
45 ///
46 /// @param[in] fn The function to be called.
47 6 [[nodiscard]] static TestRegistry::Handle register_setup(Fn&& fn) {
48 6 return TestRegistry::Handle(std::move(fn));
49 }
50
51 /// Runs all functions registered to be called in the main function to setup the list of tests.
52 static void init();
53 };
54
55 } // namespace kai::test
56