14b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Copyright 2008, Google Inc. 24b6829f0d28990dd645e16386eb226d0f10c8731shiqian// All rights reserved. 34b6829f0d28990dd645e16386eb226d0f10c8731shiqian// 44b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Redistribution and use in source and binary forms, with or without 54b6829f0d28990dd645e16386eb226d0f10c8731shiqian// modification, are permitted provided that the following conditions are 64b6829f0d28990dd645e16386eb226d0f10c8731shiqian// met: 74b6829f0d28990dd645e16386eb226d0f10c8731shiqian// 84b6829f0d28990dd645e16386eb226d0f10c8731shiqian// * Redistributions of source code must retain the above copyright 94b6829f0d28990dd645e16386eb226d0f10c8731shiqian// notice, this list of conditions and the following disclaimer. 104b6829f0d28990dd645e16386eb226d0f10c8731shiqian// * Redistributions in binary form must reproduce the above 114b6829f0d28990dd645e16386eb226d0f10c8731shiqian// copyright notice, this list of conditions and the following disclaimer 124b6829f0d28990dd645e16386eb226d0f10c8731shiqian// in the documentation and/or other materials provided with the 134b6829f0d28990dd645e16386eb226d0f10c8731shiqian// distribution. 144b6829f0d28990dd645e16386eb226d0f10c8731shiqian// * Neither the name of Google Inc. nor the names of its 154b6829f0d28990dd645e16386eb226d0f10c8731shiqian// contributors may be used to endorse or promote products derived from 164b6829f0d28990dd645e16386eb226d0f10c8731shiqian// this software without specific prior written permission. 174b6829f0d28990dd645e16386eb226d0f10c8731shiqian// 184b6829f0d28990dd645e16386eb226d0f10c8731shiqian// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 194b6829f0d28990dd645e16386eb226d0f10c8731shiqian// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 204b6829f0d28990dd645e16386eb226d0f10c8731shiqian// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 214b6829f0d28990dd645e16386eb226d0f10c8731shiqian// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 224b6829f0d28990dd645e16386eb226d0f10c8731shiqian// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 234b6829f0d28990dd645e16386eb226d0f10c8731shiqian// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 244b6829f0d28990dd645e16386eb226d0f10c8731shiqian// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 254b6829f0d28990dd645e16386eb226d0f10c8731shiqian// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 264b6829f0d28990dd645e16386eb226d0f10c8731shiqian// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 274b6829f0d28990dd645e16386eb226d0f10c8731shiqian// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 284b6829f0d28990dd645e16386eb226d0f10c8731shiqian// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 294b6829f0d28990dd645e16386eb226d0f10c8731shiqian// 304b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Author: wan@google.com (Zhanyong Wan) 314b6829f0d28990dd645e16386eb226d0f10c8731shiqian 324b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Tests the --gtest_repeat=number flag. 334b6829f0d28990dd645e16386eb226d0f10c8731shiqian 344b6829f0d28990dd645e16386eb226d0f10c8731shiqian#include <stdlib.h> 354b6829f0d28990dd645e16386eb226d0f10c8731shiqian#include <iostream> 362620c79810d4741922e9fa89050c0af564994f24zhanyong.wan#include "gtest/gtest.h" 374b6829f0d28990dd645e16386eb226d0f10c8731shiqian 384b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Indicates that this translation unit is part of Google Test's 394b6829f0d28990dd645e16386eb226d0f10c8731shiqian// implementation. It must come before gtest-internal-inl.h is 404b6829f0d28990dd645e16386eb226d0f10c8731shiqian// included, or there will be a compiler error. This trick is to 414b6829f0d28990dd645e16386eb226d0f10c8731shiqian// prevent a user from accidentally including gtest-internal-inl.h in 424b6829f0d28990dd645e16386eb226d0f10c8731shiqian// his code. 434cd62602913a032a7aec091d4c8055ff9af95e37zhanyong.wan#define GTEST_IMPLEMENTATION_ 1 444b6829f0d28990dd645e16386eb226d0f10c8731shiqian#include "src/gtest-internal-inl.h" 454cd62602913a032a7aec091d4c8055ff9af95e37zhanyong.wan#undef GTEST_IMPLEMENTATION_ 464b6829f0d28990dd645e16386eb226d0f10c8731shiqian 474b6829f0d28990dd645e16386eb226d0f10c8731shiqiannamespace testing { 484b6829f0d28990dd645e16386eb226d0f10c8731shiqian 49e44602ec83c65102035ce5304ae8de0cb16e9e56shiqianGTEST_DECLARE_string_(death_test_style); 50e44602ec83c65102035ce5304ae8de0cb16e9e56shiqianGTEST_DECLARE_string_(filter); 51e44602ec83c65102035ce5304ae8de0cb16e9e56shiqianGTEST_DECLARE_int32_(repeat); 524b6829f0d28990dd645e16386eb226d0f10c8731shiqian 534b6829f0d28990dd645e16386eb226d0f10c8731shiqian} // namespace testing 544b6829f0d28990dd645e16386eb226d0f10c8731shiqian 554b6829f0d28990dd645e16386eb226d0f10c8731shiqianusing testing::GTEST_FLAG(death_test_style); 564b6829f0d28990dd645e16386eb226d0f10c8731shiqianusing testing::GTEST_FLAG(filter); 574b6829f0d28990dd645e16386eb226d0f10c8731shiqianusing testing::GTEST_FLAG(repeat); 584b6829f0d28990dd645e16386eb226d0f10c8731shiqian 594b6829f0d28990dd645e16386eb226d0f10c8731shiqiannamespace { 604b6829f0d28990dd645e16386eb226d0f10c8731shiqian 61b5150233bec111306f340bf486a1a0624b3a817eshiqian// We need this when we are testing Google Test itself and therefore 62b5150233bec111306f340bf486a1a0624b3a817eshiqian// cannot use Google Test assertions. 634b6829f0d28990dd645e16386eb226d0f10c8731shiqian#define GTEST_CHECK_INT_EQ_(expected, actual) \ 644b6829f0d28990dd645e16386eb226d0f10c8731shiqian do {\ 654b6829f0d28990dd645e16386eb226d0f10c8731shiqian const int expected_val = (expected);\ 664b6829f0d28990dd645e16386eb226d0f10c8731shiqian const int actual_val = (actual);\ 67f6d087b78d230d875bf5d8281112662795044680zhanyong.wan if (::testing::internal::IsTrue(expected_val != actual_val)) {\ 684b6829f0d28990dd645e16386eb226d0f10c8731shiqian ::std::cout << "Value of: " #actual "\n"\ 694b6829f0d28990dd645e16386eb226d0f10c8731shiqian << " Actual: " << actual_val << "\n"\ 704b6829f0d28990dd645e16386eb226d0f10c8731shiqian << "Expected: " #expected "\n"\ 714b6829f0d28990dd645e16386eb226d0f10c8731shiqian << "Which is: " << expected_val << "\n";\ 725298efaeffba66024a9c530f4b6576dd79a6c5b5vladlosev ::testing::internal::posix::Abort();\ 734b6829f0d28990dd645e16386eb226d0f10c8731shiqian }\ 7493fed47dbf8e6bc3d39d3f769cb5039551747257vladlosev } while (::testing::internal::AlwaysFalse()) 754b6829f0d28990dd645e16386eb226d0f10c8731shiqian 764b6829f0d28990dd645e16386eb226d0f10c8731shiqian 774b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Used for verifying that global environment set-up and tear-down are 784b6829f0d28990dd645e16386eb226d0f10c8731shiqian// inside the gtest_repeat loop. 794b6829f0d28990dd645e16386eb226d0f10c8731shiqian 804b6829f0d28990dd645e16386eb226d0f10c8731shiqianint g_environment_set_up_count = 0; 814b6829f0d28990dd645e16386eb226d0f10c8731shiqianint g_environment_tear_down_count = 0; 824b6829f0d28990dd645e16386eb226d0f10c8731shiqian 834b6829f0d28990dd645e16386eb226d0f10c8731shiqianclass MyEnvironment : public testing::Environment { 844b6829f0d28990dd645e16386eb226d0f10c8731shiqian public: 854b6829f0d28990dd645e16386eb226d0f10c8731shiqian MyEnvironment() {} 864b6829f0d28990dd645e16386eb226d0f10c8731shiqian virtual void SetUp() { g_environment_set_up_count++; } 874b6829f0d28990dd645e16386eb226d0f10c8731shiqian virtual void TearDown() { g_environment_tear_down_count++; } 884b6829f0d28990dd645e16386eb226d0f10c8731shiqian}; 894b6829f0d28990dd645e16386eb226d0f10c8731shiqian 904b6829f0d28990dd645e16386eb226d0f10c8731shiqian// A test that should fail. 914b6829f0d28990dd645e16386eb226d0f10c8731shiqian 924b6829f0d28990dd645e16386eb226d0f10c8731shiqianint g_should_fail_count = 0; 934b6829f0d28990dd645e16386eb226d0f10c8731shiqian 944b6829f0d28990dd645e16386eb226d0f10c8731shiqianTEST(FooTest, ShouldFail) { 954b6829f0d28990dd645e16386eb226d0f10c8731shiqian g_should_fail_count++; 964b6829f0d28990dd645e16386eb226d0f10c8731shiqian EXPECT_EQ(0, 1) << "Expected failure."; 974b6829f0d28990dd645e16386eb226d0f10c8731shiqian} 984b6829f0d28990dd645e16386eb226d0f10c8731shiqian 994b6829f0d28990dd645e16386eb226d0f10c8731shiqian// A test that should pass. 1004b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1014b6829f0d28990dd645e16386eb226d0f10c8731shiqianint g_should_pass_count = 0; 1024b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1034b6829f0d28990dd645e16386eb226d0f10c8731shiqianTEST(FooTest, ShouldPass) { 1044b6829f0d28990dd645e16386eb226d0f10c8731shiqian g_should_pass_count++; 1054b6829f0d28990dd645e16386eb226d0f10c8731shiqian} 1064b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1074b6829f0d28990dd645e16386eb226d0f10c8731shiqian// A test that contains a thread-safe death test and a fast death 1084b6829f0d28990dd645e16386eb226d0f10c8731shiqian// test. It should pass. 1094b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1104b6829f0d28990dd645e16386eb226d0f10c8731shiqianint g_death_test_count = 0; 1114b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1124b6829f0d28990dd645e16386eb226d0f10c8731shiqianTEST(BarDeathTest, ThreadSafeAndFast) { 1134b6829f0d28990dd645e16386eb226d0f10c8731shiqian g_death_test_count++; 1144b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1154b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_FLAG(death_test_style) = "threadsafe"; 1165298efaeffba66024a9c530f4b6576dd79a6c5b5vladlosev EXPECT_DEATH_IF_SUPPORTED(::testing::internal::posix::Abort(), ""); 1174b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1184b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_FLAG(death_test_style) = "fast"; 1195298efaeffba66024a9c530f4b6576dd79a6c5b5vladlosev EXPECT_DEATH_IF_SUPPORTED(::testing::internal::posix::Abort(), ""); 1204b6829f0d28990dd645e16386eb226d0f10c8731shiqian} 1214b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1224cd62602913a032a7aec091d4c8055ff9af95e37zhanyong.wan#if GTEST_HAS_PARAM_TEST 123f904a612d9444ab36c07a8e619c113432e046f49vladlosevint g_param_test_count = 0; 124f904a612d9444ab36c07a8e619c113432e046f49vladlosev 125f904a612d9444ab36c07a8e619c113432e046f49vladlosevconst int kNumberOfParamTests = 10; 126f904a612d9444ab36c07a8e619c113432e046f49vladlosev 127f904a612d9444ab36c07a8e619c113432e046f49vladlosevclass MyParamTest : public testing::TestWithParam<int> {}; 128f904a612d9444ab36c07a8e619c113432e046f49vladlosev 129f904a612d9444ab36c07a8e619c113432e046f49vladlosevTEST_P(MyParamTest, ShouldPass) { 130f904a612d9444ab36c07a8e619c113432e046f49vladlosev // TODO(vladl@google.com): Make parameter value checking robust 131f904a612d9444ab36c07a8e619c113432e046f49vladlosev // WRT order of tests. 132f904a612d9444ab36c07a8e619c113432e046f49vladlosev GTEST_CHECK_INT_EQ_(g_param_test_count % kNumberOfParamTests, GetParam()); 133f904a612d9444ab36c07a8e619c113432e046f49vladlosev g_param_test_count++; 134f904a612d9444ab36c07a8e619c113432e046f49vladlosev} 135f904a612d9444ab36c07a8e619c113432e046f49vladlosevINSTANTIATE_TEST_CASE_P(MyParamSequence, 136f904a612d9444ab36c07a8e619c113432e046f49vladlosev MyParamTest, 137f904a612d9444ab36c07a8e619c113432e046f49vladlosev testing::Range(0, kNumberOfParamTests)); 138f904a612d9444ab36c07a8e619c113432e046f49vladlosev#endif // GTEST_HAS_PARAM_TEST 139f904a612d9444ab36c07a8e619c113432e046f49vladlosev 1404b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Resets the count for each test. 1414b6829f0d28990dd645e16386eb226d0f10c8731shiqianvoid ResetCounts() { 1424b6829f0d28990dd645e16386eb226d0f10c8731shiqian g_environment_set_up_count = 0; 1434b6829f0d28990dd645e16386eb226d0f10c8731shiqian g_environment_tear_down_count = 0; 1444b6829f0d28990dd645e16386eb226d0f10c8731shiqian g_should_fail_count = 0; 1454b6829f0d28990dd645e16386eb226d0f10c8731shiqian g_should_pass_count = 0; 1464b6829f0d28990dd645e16386eb226d0f10c8731shiqian g_death_test_count = 0; 1474cd62602913a032a7aec091d4c8055ff9af95e37zhanyong.wan#if GTEST_HAS_PARAM_TEST 148f904a612d9444ab36c07a8e619c113432e046f49vladlosev g_param_test_count = 0; 149f904a612d9444ab36c07a8e619c113432e046f49vladlosev#endif // GTEST_HAS_PARAM_TEST 1504b6829f0d28990dd645e16386eb226d0f10c8731shiqian} 1514b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1524b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Checks that the count for each test is expected. 1534b6829f0d28990dd645e16386eb226d0f10c8731shiqianvoid CheckCounts(int expected) { 1544b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(expected, g_environment_set_up_count); 1554b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(expected, g_environment_tear_down_count); 1564b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(expected, g_should_fail_count); 1574b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(expected, g_should_pass_count); 1584b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(expected, g_death_test_count); 1594cd62602913a032a7aec091d4c8055ff9af95e37zhanyong.wan#if GTEST_HAS_PARAM_TEST 160f904a612d9444ab36c07a8e619c113432e046f49vladlosev GTEST_CHECK_INT_EQ_(expected * kNumberOfParamTests, g_param_test_count); 161f904a612d9444ab36c07a8e619c113432e046f49vladlosev#endif // GTEST_HAS_PARAM_TEST 1624b6829f0d28990dd645e16386eb226d0f10c8731shiqian} 1634b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1644b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Tests the behavior of Google Test when --gtest_repeat is not specified. 1654b6829f0d28990dd645e16386eb226d0f10c8731shiqianvoid TestRepeatUnspecified() { 1664b6829f0d28990dd645e16386eb226d0f10c8731shiqian ResetCounts(); 1674b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(1, RUN_ALL_TESTS()); 1684b6829f0d28990dd645e16386eb226d0f10c8731shiqian CheckCounts(1); 1694b6829f0d28990dd645e16386eb226d0f10c8731shiqian} 1704b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1714b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Tests the behavior of Google Test when --gtest_repeat has the given value. 1724b6829f0d28990dd645e16386eb226d0f10c8731shiqianvoid TestRepeat(int repeat) { 1734b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_FLAG(repeat) = repeat; 1744b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1754b6829f0d28990dd645e16386eb226d0f10c8731shiqian ResetCounts(); 1764b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(repeat > 0 ? 1 : 0, RUN_ALL_TESTS()); 1774b6829f0d28990dd645e16386eb226d0f10c8731shiqian CheckCounts(repeat); 1784b6829f0d28990dd645e16386eb226d0f10c8731shiqian} 1794b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1804b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Tests using --gtest_repeat when --gtest_filter specifies an empty 1814b6829f0d28990dd645e16386eb226d0f10c8731shiqian// set of tests. 1824b6829f0d28990dd645e16386eb226d0f10c8731shiqianvoid TestRepeatWithEmptyFilter(int repeat) { 1834b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_FLAG(repeat) = repeat; 1844b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_FLAG(filter) = "None"; 1854b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1864b6829f0d28990dd645e16386eb226d0f10c8731shiqian ResetCounts(); 1874b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(0, RUN_ALL_TESTS()); 1884b6829f0d28990dd645e16386eb226d0f10c8731shiqian CheckCounts(0); 1894b6829f0d28990dd645e16386eb226d0f10c8731shiqian} 1904b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1914b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Tests using --gtest_repeat when --gtest_filter specifies a set of 1924b6829f0d28990dd645e16386eb226d0f10c8731shiqian// successful tests. 1934b6829f0d28990dd645e16386eb226d0f10c8731shiqianvoid TestRepeatWithFilterForSuccessfulTests(int repeat) { 1944b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_FLAG(repeat) = repeat; 1954b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_FLAG(filter) = "*-*ShouldFail"; 1964b6829f0d28990dd645e16386eb226d0f10c8731shiqian 1974b6829f0d28990dd645e16386eb226d0f10c8731shiqian ResetCounts(); 1984b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(0, RUN_ALL_TESTS()); 1994b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(repeat, g_environment_set_up_count); 2004b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(repeat, g_environment_tear_down_count); 2014b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(0, g_should_fail_count); 2024b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(repeat, g_should_pass_count); 2034b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(repeat, g_death_test_count); 2044cd62602913a032a7aec091d4c8055ff9af95e37zhanyong.wan#if GTEST_HAS_PARAM_TEST 205f904a612d9444ab36c07a8e619c113432e046f49vladlosev GTEST_CHECK_INT_EQ_(repeat * kNumberOfParamTests, g_param_test_count); 206f904a612d9444ab36c07a8e619c113432e046f49vladlosev#endif // GTEST_HAS_PARAM_TEST 2074b6829f0d28990dd645e16386eb226d0f10c8731shiqian} 2084b6829f0d28990dd645e16386eb226d0f10c8731shiqian 2094b6829f0d28990dd645e16386eb226d0f10c8731shiqian// Tests using --gtest_repeat when --gtest_filter specifies a set of 2104b6829f0d28990dd645e16386eb226d0f10c8731shiqian// failed tests. 2114b6829f0d28990dd645e16386eb226d0f10c8731shiqianvoid TestRepeatWithFilterForFailedTests(int repeat) { 2124b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_FLAG(repeat) = repeat; 2134b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_FLAG(filter) = "*ShouldFail"; 2144b6829f0d28990dd645e16386eb226d0f10c8731shiqian 2154b6829f0d28990dd645e16386eb226d0f10c8731shiqian ResetCounts(); 2164b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(1, RUN_ALL_TESTS()); 2174b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(repeat, g_environment_set_up_count); 2184b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(repeat, g_environment_tear_down_count); 2194b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(repeat, g_should_fail_count); 2204b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(0, g_should_pass_count); 2214b6829f0d28990dd645e16386eb226d0f10c8731shiqian GTEST_CHECK_INT_EQ_(0, g_death_test_count); 2224cd62602913a032a7aec091d4c8055ff9af95e37zhanyong.wan#if GTEST_HAS_PARAM_TEST 223f904a612d9444ab36c07a8e619c113432e046f49vladlosev GTEST_CHECK_INT_EQ_(0, g_param_test_count); 224f904a612d9444ab36c07a8e619c113432e046f49vladlosev#endif // GTEST_HAS_PARAM_TEST 2254b6829f0d28990dd645e16386eb226d0f10c8731shiqian} 2264b6829f0d28990dd645e16386eb226d0f10c8731shiqian 2274b6829f0d28990dd645e16386eb226d0f10c8731shiqian} // namespace 2284b6829f0d28990dd645e16386eb226d0f10c8731shiqian 2294b6829f0d28990dd645e16386eb226d0f10c8731shiqianint main(int argc, char **argv) { 2304b6829f0d28990dd645e16386eb226d0f10c8731shiqian testing::InitGoogleTest(&argc, argv); 2314b6829f0d28990dd645e16386eb226d0f10c8731shiqian testing::AddGlobalTestEnvironment(new MyEnvironment); 2324b6829f0d28990dd645e16386eb226d0f10c8731shiqian 2334b6829f0d28990dd645e16386eb226d0f10c8731shiqian TestRepeatUnspecified(); 2344b6829f0d28990dd645e16386eb226d0f10c8731shiqian TestRepeat(0); 2354b6829f0d28990dd645e16386eb226d0f10c8731shiqian TestRepeat(1); 2364b6829f0d28990dd645e16386eb226d0f10c8731shiqian TestRepeat(5); 2374b6829f0d28990dd645e16386eb226d0f10c8731shiqian 2384b6829f0d28990dd645e16386eb226d0f10c8731shiqian TestRepeatWithEmptyFilter(2); 2394b6829f0d28990dd645e16386eb226d0f10c8731shiqian TestRepeatWithEmptyFilter(3); 2404b6829f0d28990dd645e16386eb226d0f10c8731shiqian 2414b6829f0d28990dd645e16386eb226d0f10c8731shiqian TestRepeatWithFilterForSuccessfulTests(3); 2424b6829f0d28990dd645e16386eb226d0f10c8731shiqian 2434b6829f0d28990dd645e16386eb226d0f10c8731shiqian TestRepeatWithFilterForFailedTests(4); 2444b6829f0d28990dd645e16386eb226d0f10c8731shiqian 2454b6829f0d28990dd645e16386eb226d0f10c8731shiqian // It would be nice to verify that the tests indeed loop forever 2464b6829f0d28990dd645e16386eb226d0f10c8731shiqian // when GTEST_FLAG(repeat) is negative, but this test will be quite 2474b6829f0d28990dd645e16386eb226d0f10c8731shiqian // complicated to write. Since this flag is for interactive 2484b6829f0d28990dd645e16386eb226d0f10c8731shiqian // debugging only and doesn't affect the normal test result, such a 2494b6829f0d28990dd645e16386eb226d0f10c8731shiqian // test would be an overkill. 2504b6829f0d28990dd645e16386eb226d0f10c8731shiqian 2514b6829f0d28990dd645e16386eb226d0f10c8731shiqian printf("PASS\n"); 2524b6829f0d28990dd645e16386eb226d0f10c8731shiqian return 0; 2534b6829f0d28990dd645e16386eb226d0f10c8731shiqian} 254