xref: /aosp_15_r20/external/pigweed/pw_unit_test/public/pw_unit_test/googletest_handler_adapter.h (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1 // Copyright 2023 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 
15 #pragma once
16 
17 #include "gtest/gtest.h"
18 #include "pw_unit_test/event_handler.h"
19 
20 namespace pw {
21 namespace unit_test {
22 
23 /// Adapts a custom ``main()`` function to work with upstream GoogleTest
24 /// without modification. Custom ``main()`` functions are used for complex
25 /// testing scenarios, such as on-device testing. Must be paired with a
26 /// predefined event handler, such as
27 /// ``pw::unit_test::GoogleTestStyleEventHandler``.
28 /// See ``pw::unit_test::EventHandler`` for an explanation of each event.
29 class GoogleTestHandlerAdapter : public testing::EmptyTestEventListener {
30  public:
GoogleTestHandlerAdapter(EventHandler & handler)31   GoogleTestHandlerAdapter(EventHandler& handler) : handler_(handler) {}
32   void OnTestProgramStart(const testing::UnitTest&) override;
33   void OnEnvironmentsSetUpEnd(const testing::UnitTest&) override;
34   void OnTestSuiteStart(const testing::TestSuite&) override;
35   void OnTestStart(const testing::TestInfo&) override;
36   void OnTestPartResult(const testing::TestPartResult&) override;
37   void OnTestEnd(const testing::TestInfo&) override;
38   void OnTestSuiteEnd(const testing::TestSuite&) override;
39   void OnEnvironmentsTearDownEnd(const testing::UnitTest& unit_test) override;
40   void OnTestProgramEnd(const testing::UnitTest&) override;
41 
42  private:
43   EventHandler& handler_;
44 };
45 
46 }  // namespace unit_test
47 }  // namespace pw
48