C/C++ API Reference
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
24
27template <size_t kNumHandlers>
29 public:
30 template <
31 typename... EventHandlers,
32 typename = std::enable_if_t<sizeof...(EventHandlers) == kNumHandlers>>
33 constexpr MultiEventHandler(EventHandlers&... event_handlers)
34 : event_handlers_{&event_handlers...} {}
35
36 void TestProgramStart(const ProgramSummary& program_summary) override {
37 for (EventHandler* event_handler : event_handlers_) {
38 event_handler->TestProgramStart(program_summary);
39 }
40 }
41 void EnvironmentsSetUpEnd() override {
42 for (EventHandler* event_handler : event_handlers_) {
43 event_handler->EnvironmentsSetUpEnd();
44 }
45 }
46 void TestSuiteStart(const TestSuite& test_suite) override {
47 for (EventHandler* event_handler : event_handlers_) {
48 event_handler->TestSuiteStart(test_suite);
49 }
50 }
51 void TestSuiteEnd(const TestSuite& test_suite) override {
52 for (EventHandler* event_handler : event_handlers_) {
53 event_handler->TestSuiteEnd(test_suite);
54 }
55 }
56 void EnvironmentsTearDownEnd() override {
57 for (EventHandler* event_handler : event_handlers_) {
58 event_handler->EnvironmentsTearDownEnd();
59 }
60 }
61 void TestProgramEnd(const ProgramSummary& program_summary) override {
62 for (EventHandler* event_handler : event_handlers_) {
63 event_handler->TestProgramEnd(program_summary);
64 }
65 }
66 void RunAllTestsStart() override {
67 for (EventHandler* event_handler : event_handlers_) {
68 event_handler->RunAllTestsStart();
69 }
70 }
71 void RunAllTestsEnd(const RunTestsSummary& run_tests_summary) override {
72 for (EventHandler* event_handler : event_handlers_) {
73 event_handler->RunAllTestsEnd(run_tests_summary);
74 }
75 }
76 void TestCaseStart(const TestCase& test_case) override {
77 for (EventHandler* event_handler : event_handlers_) {
78 event_handler->TestCaseStart(test_case);
79 }
80 }
81 void TestCaseEnd(const TestCase& test_case, TestResult result) override {
82 for (EventHandler* event_handler : event_handlers_) {
83 event_handler->TestCaseEnd(test_case, result);
84 }
85 }
86 void TestCaseExpect(const TestCase& test_case,
87 const TestExpectation& expectation) override {
88 for (EventHandler* event_handler : event_handlers_) {
89 event_handler->TestCaseExpect(test_case, expectation);
90 }
91 }
92 void TestCaseDisabled(const TestCase& test_case) override {
93 for (EventHandler* event_handler : event_handlers_) {
94 event_handler->TestCaseDisabled(test_case);
95 }
96 }
97
98 private:
99 static_assert(kNumHandlers > 0);
100 std::array<EventHandler*, kNumHandlers> event_handlers_;
101};
102
104
105} // namespace pw::unit_test
Definition: event_handler.h:118
Definition: multi_event_handler.h:28
void TestCaseEnd(const TestCase &test_case, TestResult result) override
Definition: multi_event_handler.h:81
void TestSuiteStart(const TestSuite &test_suite) override
Called before the test suite starts.
Definition: multi_event_handler.h:46
void RunAllTestsStart() override
Called before all tests are run.
Definition: multi_event_handler.h:66
void RunAllTestsEnd(const RunTestsSummary &run_tests_summary) override
Called after all tests are run.
Definition: multi_event_handler.h:71
void TestCaseExpect(const TestCase &test_case, const TestExpectation &expectation) override
Definition: multi_event_handler.h:86
void TestProgramEnd(const ProgramSummary &program_summary) override
Called after all test activities have ended.
Definition: multi_event_handler.h:61
void EnvironmentsTearDownEnd() override
Called after environment teardown for each iteration of tests ends.
Definition: multi_event_handler.h:56
void TestSuiteEnd(const TestSuite &test_suite) override
Called after the test suite ends.
Definition: multi_event_handler.h:51
void EnvironmentsSetUpEnd() override
Called after environment setup for each iteration of tests ends.
Definition: multi_event_handler.h:41
void TestCaseStart(const TestCase &test_case) override
Called when a new test case is started.
Definition: multi_event_handler.h:76
void TestCaseDisabled(const TestCase &test_case) override
Called when a disabled test case is encountered.
Definition: multi_event_handler.h:92
void TestProgramStart(const ProgramSummary &program_summary) override
Called before any test activity starts.
Definition: multi_event_handler.h:36
TestResult
The result of a complete test run.
Definition: event_handler.h:23
Definition: event_handler.h:69
Definition: event_handler.h:55
Definition: event_handler.h:30
Definition: event_handler.h:41
Definition: event_handler.h:80