aboutsummaryrefslogtreecommitdiff
path: root/pw_unit_test/googletest_handler_adapter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'pw_unit_test/googletest_handler_adapter.cc')
-rw-r--r--pw_unit_test/googletest_handler_adapter.cc79
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