33#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_SPI_H_
34#define GOOGLETEST_INCLUDE_GTEST_GTEST_SPI_H_
36#include "gtest/gtest.h"
38GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
52class GTEST_API_ ScopedFakeTestPartResultReporter
53 :
public TestPartResultReporterInterface {
57 INTERCEPT_ONLY_CURRENT_THREAD,
65 explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result);
68 ScopedFakeTestPartResultReporter(InterceptMode intercept_mode,
69 TestPartResultArray* result);
72 ~ScopedFakeTestPartResultReporter()
override;
79 void ReportTestPartResult(
const TestPartResult& result)
override;
84 const InterceptMode intercept_mode_;
85 TestPartResultReporterInterface* old_reporter_;
86 TestPartResultArray*
const result_;
88 ScopedFakeTestPartResultReporter(
const ScopedFakeTestPartResultReporter&) =
90 ScopedFakeTestPartResultReporter& operator=(
91 const ScopedFakeTestPartResultReporter&) =
delete;
101class GTEST_API_ SingleFailureChecker {
104 SingleFailureChecker(
const TestPartResultArray* results,
105 TestPartResult::Type type,
const std::string& substr);
106 ~SingleFailureChecker();
109 const TestPartResultArray*
const results_;
110 const TestPartResult::Type type_;
111 const std::string substr_;
113 SingleFailureChecker(
const SingleFailureChecker&) =
delete;
114 SingleFailureChecker& operator=(
const SingleFailureChecker&) =
delete;
121GTEST_DISABLE_MSC_WARNINGS_POP_()
147#define EXPECT_FATAL_FAILURE(statement, substr) \
149 class GTestExpectFatalFailureHelper { \
151 static void Execute() { statement; } \
153 ::testing::TestPartResultArray gtest_failures; \
154 ::testing::internal::SingleFailureChecker gtest_checker( \
155 >est_failures, ::testing::TestPartResult::kFatalFailure, (substr)); \
157 ::testing::ScopedFakeTestPartResultReporter gtest_reporter( \
158 ::testing::ScopedFakeTestPartResultReporter:: \
159 INTERCEPT_ONLY_CURRENT_THREAD, \
161 GTestExpectFatalFailureHelper::Execute(); \
163 } while (::testing::internal::AlwaysFalse())
165#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
167 class GTestExpectFatalFailureHelper { \
169 static void Execute() { statement; } \
171 ::testing::TestPartResultArray gtest_failures; \
172 ::testing::internal::SingleFailureChecker gtest_checker( \
173 >est_failures, ::testing::TestPartResult::kFatalFailure, (substr)); \
175 ::testing::ScopedFakeTestPartResultReporter gtest_reporter( \
176 ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \
178 GTestExpectFatalFailureHelper::Execute(); \
180 } while (::testing::internal::AlwaysFalse())
215#define EXPECT_NONFATAL_FAILURE(statement, substr) \
217 ::testing::TestPartResultArray gtest_failures; \
218 ::testing::internal::SingleFailureChecker gtest_checker( \
219 >est_failures, ::testing::TestPartResult::kNonFatalFailure, \
222 ::testing::ScopedFakeTestPartResultReporter gtest_reporter( \
223 ::testing::ScopedFakeTestPartResultReporter:: \
224 INTERCEPT_ONLY_CURRENT_THREAD, \
226 if (::testing::internal::AlwaysTrue()) { \
230 } while (::testing::internal::AlwaysFalse())
232#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
234 ::testing::TestPartResultArray gtest_failures; \
235 ::testing::internal::SingleFailureChecker gtest_checker( \
236 >est_failures, ::testing::TestPartResult::kNonFatalFailure, \
239 ::testing::ScopedFakeTestPartResultReporter gtest_reporter( \
240 ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \
242 if (::testing::internal::AlwaysTrue()) { \
246 } while (::testing::internal::AlwaysFalse())