33 #ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_SPI_H_ 
   34 #define GOOGLETEST_INCLUDE_GTEST_GTEST_SPI_H_ 
   54 class GTEST_API_ ScopedFakeTestPartResultReporter
 
   55     : 
public TestPartResultReporterInterface {
 
   59     INTERCEPT_ONLY_CURRENT_THREAD,  
 
   67   explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result);
 
   70   ScopedFakeTestPartResultReporter(InterceptMode intercept_mode,
 
   71                                    TestPartResultArray* result);
 
   74   ~ScopedFakeTestPartResultReporter() 
override;
 
   81   void ReportTestPartResult(
const TestPartResult& result) 
override;
 
   86   const InterceptMode intercept_mode_;
 
   87   TestPartResultReporterInterface* old_reporter_;
 
   88   TestPartResultArray* 
const result_;
 
   90   ScopedFakeTestPartResultReporter(
const ScopedFakeTestPartResultReporter&) =
 
   92   ScopedFakeTestPartResultReporter& operator=(
 
   93       const ScopedFakeTestPartResultReporter&) = 
delete;
 
  106   SingleFailureChecker(
const TestPartResultArray* results,
 
  107                        TestPartResult::Type type, 
const std::string& substr);
 
  108   ~SingleFailureChecker();
 
  111   const TestPartResultArray* 
const results_;
 
  112   const TestPartResult::Type type_;
 
  113   const std::string substr_;
 
  115   SingleFailureChecker(
const SingleFailureChecker&) = 
delete;
 
  116   SingleFailureChecker& operator=(
const SingleFailureChecker&) = 
delete;
 
  149 #define EXPECT_FATAL_FAILURE(statement, substr)                               \ 
  151     class GTestExpectFatalFailureHelper {                                     \ 
  153       static void Execute() { statement; }                                    \ 
  155     ::testing::TestPartResultArray gtest_failures;                            \ 
  156     ::testing::internal::SingleFailureChecker gtest_checker(                  \ 
  157         >est_failures, ::testing::TestPartResult::kFatalFailure, (substr)); \ 
  159       ::testing::ScopedFakeTestPartResultReporter gtest_reporter(             \ 
  160           ::testing::ScopedFakeTestPartResultReporter::                       \ 
  161               INTERCEPT_ONLY_CURRENT_THREAD,                                  \ 
  163       GTestExpectFatalFailureHelper::Execute();                               \ 
  165   } while (::testing::internal::AlwaysFalse()) 
  167 #define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr)                \ 
  169     class GTestExpectFatalFailureHelper {                                     \ 
  171       static void Execute() { statement; }                                    \ 
  173     ::testing::TestPartResultArray gtest_failures;                            \ 
  174     ::testing::internal::SingleFailureChecker gtest_checker(                  \ 
  175         >est_failures, ::testing::TestPartResult::kFatalFailure, (substr)); \ 
  177       ::testing::ScopedFakeTestPartResultReporter gtest_reporter(             \ 
  178           ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \ 
  180       GTestExpectFatalFailureHelper::Execute();                               \ 
  182   } while (::testing::internal::AlwaysFalse()) 
  217 #define EXPECT_NONFATAL_FAILURE(statement, substr)                    \ 
  219     ::testing::TestPartResultArray gtest_failures;                    \ 
  220     ::testing::internal::SingleFailureChecker gtest_checker(          \ 
  221         >est_failures, ::testing::TestPartResult::kNonFatalFailure, \ 
  224       ::testing::ScopedFakeTestPartResultReporter gtest_reporter(     \ 
  225           ::testing::ScopedFakeTestPartResultReporter::               \ 
  226               INTERCEPT_ONLY_CURRENT_THREAD,                          \ 
  228       if (::testing::internal::AlwaysTrue()) {                        \ 
  232   } while (::testing::internal::AlwaysFalse()) 
  234 #define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr)             \ 
  236     ::testing::TestPartResultArray gtest_failures;                            \ 
  237     ::testing::internal::SingleFailureChecker gtest_checker(                  \ 
  238         >est_failures, ::testing::TestPartResult::kNonFatalFailure,         \ 
  241       ::testing::ScopedFakeTestPartResultReporter gtest_reporter(             \ 
  242           ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \ 
  244       if (::testing::internal::AlwaysTrue()) {                                \ 
  248   } while (::testing::internal::AlwaysFalse()) 
  250 #endif  // GOOGLETEST_INCLUDE_GTEST_GTEST_SPI_H_ 
GTEST_DISABLE_MSC_WARNINGS_POP_() TEST(LinkTest
 
#define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)