diff options
Diffstat (limited to 'pw_unit_test/googletest_handler_adapter.cc')
-rw-r--r-- | pw_unit_test/googletest_handler_adapter.cc | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/pw_unit_test/googletest_handler_adapter.cc b/pw_unit_test/googletest_handler_adapter.cc new file mode 100644 index 000000000..9d29d1858 --- /dev/null +++ b/pw_unit_test/googletest_handler_adapter.cc @@ -0,0 +1,79 @@ +// Copyright 2023 The Pigweed Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy of +// the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. + +#include "pw_unit_test/googletest_handler_adapter.h" + +#include <cstdlib> + +namespace pw::unit_test { + +void GoogleTestHandlerAdapter::OnTestProgramStart( + const testing::UnitTest& unit_test) { + handler_.TestProgramStart( + {unit_test.test_to_run_count(), unit_test.test_suite_to_run_count(), {}}); +} + +void GoogleTestHandlerAdapter::OnEnvironmentsSetUpEnd( + const ::testing::UnitTest&) { + handler_.EnvironmentsSetUpEnd(); +} + +void GoogleTestHandlerAdapter::OnTestSuiteStart( + const ::testing::TestSuite& ts) { + handler_.TestSuiteStart({ts.name(), ts.test_to_run_count()}); +} + +void GoogleTestHandlerAdapter::OnTestStart(const ::testing::TestInfo& ti) { + handler_.TestCaseStart({ti.test_suite_name(), ti.name(), ti.file()}); +} + +void GoogleTestHandlerAdapter::OnTestPartResult( + const ::testing::TestPartResult& tpr) { + handler_.TestCaseExpect( + {.suite_name = "", .test_name = "", .file_name = tpr.file_name()}, + {.expression = "", + .evaluated_expression = tpr.summary(), + .line_number = tpr.line_number(), + .success = tpr.passed() || tpr.skipped()}); +} + +void GoogleTestHandlerAdapter::OnTestEnd(const ::testing::TestInfo& ti) { + auto result = ti.result()->Passed() + ? TestResult::kSuccess + : (ti.result()->Failed() ? TestResult::kFailure + : TestResult::kSkipped); + + handler_.TestCaseEnd({ti.test_suite_name(), ti.name(), ti.file()}, result); +} + +void GoogleTestHandlerAdapter::OnTestSuiteEnd(const ::testing::TestSuite& ts) { + handler_.TestSuiteEnd({ts.name(), ts.test_to_run_count()}); +} + +void GoogleTestHandlerAdapter::OnEnvironmentsTearDownEnd( + const ::testing::UnitTest&) { + handler_.EnvironmentsTearDownEnd(); +} + +void GoogleTestHandlerAdapter::OnTestProgramEnd( + const ::testing::UnitTest& unit_test) { + handler_.TestProgramEnd({unit_test.test_to_run_count(), + unit_test.test_suite_to_run_count(), + {unit_test.successful_test_count(), + unit_test.failed_test_count(), + unit_test.skipped_test_count(), + unit_test.disabled_test_count()}}); +} + +} // namespace pw::unit_test |