Pigweed
Loading...
Searching...
No Matches
multi_event_handler.h
1// Copyright 2024 The Pigweed Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License"); you may not
4// use this file except in compliance with the License. You may obtain a copy of
5// the License at
6//
7// https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12// License for the specific language governing permissions and limitations under
13// the License.
14#pragma once
15
16#include <array>
17#include <cstddef>
18
19#include "pw_unit_test/event_handler.h"
20
21namespace pw::unit_test {
22
25template <size_t kNumHandlers>
27 public:
28 template <
29 typename... EventHandlers,
30 typename = std::enable_if_t<sizeof...(EventHandlers) == kNumHandlers>>
31 constexpr MultiEventHandler(EventHandlers&... event_handlers)
32 : event_handlers_{&event_handlers...} {}
33
34 void TestProgramStart(const ProgramSummary& program_summary) override {
35 for (EventHandler* event_handler : event_handlers_) {
36 event_handler->TestProgramStart(program_summary);
37 }
38 }
39 void EnvironmentsSetUpEnd() override {
40 for (EventHandler* event_handler : event_handlers_) {
41 event_handler->EnvironmentsSetUpEnd();
42 }
43 }
44 void TestSuiteStart(const TestSuite& test_suite) override {
45 for (EventHandler* event_handler : event_handlers_) {
46 event_handler->TestSuiteStart(test_suite);
47 }
48 }
49 void TestSuiteEnd(const TestSuite& test_suite) override {
50 for (EventHandler* event_handler : event_handlers_) {
51 event_handler->TestSuiteEnd(test_suite);
52 }
53 }
54 void EnvironmentsTearDownEnd() override {
55 for (EventHandler* event_handler : event_handlers_) {
56 event_handler->EnvironmentsTearDownEnd();
57 }
58 }
59 void TestProgramEnd(const ProgramSummary& program_summary) override {
60 for (EventHandler* event_handler : event_handlers_) {
61 event_handler->TestProgramEnd(program_summary);
62 }
63 }
64 void RunAllTestsStart() override {
65 for (EventHandler* event_handler : event_handlers_) {
66 event_handler->RunAllTestsStart();
67 }
68 }
69 void RunAllTestsEnd(const RunTestsSummary& run_tests_summary) override {
70 for (EventHandler* event_handler : event_handlers_) {
71 event_handler->RunAllTestsEnd(run_tests_summary);
72 }
73 }
74 void TestCaseStart(const TestCase& test_case) override {
75 for (EventHandler* event_handler : event_handlers_) {
76 event_handler->TestCaseStart(test_case);
77 }
78 }
79 void TestCaseEnd(const TestCase& test_case, TestResult result) override {
80 for (EventHandler* event_handler : event_handlers_) {
81 event_handler->TestCaseEnd(test_case, result);
82 }
83 }
84 void TestCaseExpect(const TestCase& test_case,
85 const TestExpectation& expectation) override {
86 for (EventHandler* event_handler : event_handlers_) {
87 event_handler->TestCaseExpect(test_case, expectation);
88 }
89 }
90 void TestCaseDisabled(const TestCase& test_case) override {
91 for (EventHandler* event_handler : event_handlers_) {
92 event_handler->TestCaseDisabled(test_case);
93 }
94 }
95
96 private:
97 static_assert(kNumHandlers > 0);
98 std::array<EventHandler*, kNumHandlers> event_handlers_;
99};
100
101} // namespace pw::unit_test
Definition: event_handler.h:115
Definition: multi_event_handler.h:26
void TestCaseEnd(const TestCase &test_case, TestResult result) override
Definition: multi_event_handler.h:79
void TestSuiteStart(const TestSuite &test_suite) override
Called before the test suite starts.
Definition: multi_event_handler.h:44
void RunAllTestsStart() override
Called before all tests are run.
Definition: multi_event_handler.h:64
void RunAllTestsEnd(const RunTestsSummary &run_tests_summary) override
Called after all tests are run.
Definition: multi_event_handler.h:69
void TestCaseExpect(const TestCase &test_case, const TestExpectation &expectation) override
Definition: multi_event_handler.h:84
void TestProgramEnd(const ProgramSummary &program_summary) override
Called after all test activities have ended.
Definition: multi_event_handler.h:59
void EnvironmentsTearDownEnd() override
Called after environment teardown for each iteration of tests ends.
Definition: multi_event_handler.h:54
void TestSuiteEnd(const TestSuite &test_suite) override
Called after the test suite ends.
Definition: multi_event_handler.h:49
void EnvironmentsSetUpEnd() override
Called after environment setup for each iteration of tests ends.
Definition: multi_event_handler.h:39
void TestCaseStart(const TestCase &test_case) override
Called when a new test case is started.
Definition: multi_event_handler.h:74
void TestCaseDisabled(const TestCase &test_case) override
Called when a disabled test case is encountered.
Definition: multi_event_handler.h:90
void TestProgramStart(const ProgramSummary &program_summary) override
Called before any test activity starts.
Definition: multi_event_handler.h:34
Definition: event_handler.h:66
Definition: event_handler.h:52
Definition: event_handler.h:27
Definition: event_handler.h:38
Definition: event_handler.h:77