49 #ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_H_
50 #define GOOGLETEST_INCLUDE_GTEST_GTEST_H_
60 #include <type_traits>
160 #if GTEST_USE_OWN_FLAGFILE_FLAG_
162 #endif // GTEST_USE_OWN_FLAGFILE_FLAG_
176 class DefaultGlobalTestPartResultReporter;
178 class NoExecDeathTest;
179 class FinalSuccessChecker;
180 class GTestFlagSaver;
181 class StreamingListenerTest;
182 class TestResultAccessor;
183 class TestEventListenersAccessor;
184 class TestEventRepeater;
185 class UnitTestRecordPropertyTestHelper;
186 class WindowsDeathTest;
187 class FuchsiaDeathTest;
190 const std::string& message);
213 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
267 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
270 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
273 static bool HasFatalFailure();
276 static bool HasNonfatalFailure();
279 static bool IsSkipped();
283 static bool HasFailure() {
return HasFatalFailure() || HasNonfatalFailure(); }
298 static void RecordProperty(
const std::string& key,
const std::string&
value);
304 RecordProperty(key, (
Message() << value).GetString());
312 virtual void SetUp();
315 virtual void TearDown();
320 static bool HasSameFixtureClass();
328 virtual void TestBody() = 0;
360 Test& operator=(
const Test&) =
delete;
378 const char*
key()
const {
return key_.c_str(); }
409 int total_part_count()
const;
412 int test_property_count()
const;
415 bool Passed()
const {
return !Skipped() && !Failed(); }
418 bool Skipped()
const;
424 bool HasFatalFailure()
const;
427 bool HasNonfatalFailure()
const;
438 const TestPartResult& GetTestPartResult(
int i)
const;
450 friend class internal::ExecDeathTest;
453 friend class internal::WindowsDeathTest;
454 friend class internal::FuchsiaDeathTest;
458 return test_part_results_;
463 return test_properties_;
478 void RecordProperty(
const std::string& xml_element,
484 static bool ValidateTestProperty(
const std::string& xml_element,
488 void AddTestPartResult(
const TestPartResult& test_part_result);
497 void ClearTestPartResults();
543 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
545 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
548 const char*
name()
const {
return name_.c_str(); }
553 if (type_param_ !=
nullptr)
return type_param_->c_str();
560 if (value_param_ !=
nullptr)
return value_param_->c_str();
565 const char*
file()
const {
return location_.file.c_str(); }
568 int line()
const {
return location_.line; }
595 return matches_filter_ && !is_in_another_shard_;
602 #ifdef GTEST_HAS_DEATH_TEST
603 friend class internal::DefaultDeathTestFactory;
604 #endif // GTEST_HAS_DEATH_TEST
608 friend class internal::StreamingListenerTest;
610 std::string test_suite_name,
const char* name,
const char* type_param,
618 TestInfo(std::string test_suite_name, std::string name,
619 const char* a_type_param,
620 const char* a_value_param,
628 return result_.increment_death_test_count();
686 TestSuite(
const std::string& name,
const char* a_type_param,
694 const char*
name()
const {
return name_.c_str(); }
699 if (type_param_ !=
nullptr)
return type_param_->c_str();
707 int successful_test_count()
const;
710 int skipped_test_count()
const;
713 int failed_test_count()
const;
716 int reportable_disabled_test_count()
const;
719 int disabled_test_count()
const;
722 int reportable_test_count()
const;
725 int test_to_run_count()
const;
728 int total_test_count()
const;
731 bool Passed()
const {
return !Failed(); }
735 return failed_test_count() > 0 || ad_hoc_test_result().Failed();
747 const TestInfo* GetTestInfo(
int i)
const;
762 return test_info_list_;
774 void AddTestInfo(
TestInfo* test_info);
793 if (set_up_tc_ !=
nullptr) {
801 if (tear_down_tc_ !=
nullptr) {
846 void UnshuffleTests();
911 #if GTEST_HAS_EXCEPTIONS
915 :
public internal::GoogleTestFailureException {
917 explicit AssertionException(
const TestPartResult& result)
918 : GoogleTestFailureException(result) {}
921 #endif // GTEST_HAS_EXCEPTIONS
948 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
950 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
970 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
972 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1001 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1003 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1010 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1012 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1043 return default_result_printer_;
1054 return default_xml_generator_;
1059 void SuppressEventForwarding(
bool);
1065 friend class internal::NoExecDeathTest;
1089 bool EventForwardingEnabled()
const;
1130 const char* original_working_dir()
const;
1137 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1146 int random_seed()
const;
1156 int successful_test_suite_count()
const;
1159 int failed_test_suite_count()
const;
1162 int total_test_suite_count()
const;
1166 int test_suite_to_run_count()
const;
1169 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1170 int successful_test_case_count()
const;
1171 int failed_test_case_count()
const;
1172 int total_test_case_count()
const;
1173 int test_case_to_run_count()
const;
1174 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1177 int successful_test_count()
const;
1180 int skipped_test_count()
const;
1183 int failed_test_count()
const;
1186 int reportable_disabled_test_count()
const;
1189 int disabled_test_count()
const;
1192 int reportable_test_count()
const;
1195 int total_test_count()
const;
1198 int test_to_run_count()
const;
1209 bool Passed()
const;
1213 bool Failed()
const;
1220 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1221 const TestCase* GetTestCase(
int i)
const;
1222 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1226 const TestResult& ad_hoc_test_result()
const;
1248 void AddTestPartResult(TestPartResult::Type result_type,
1249 const char* file_name,
int line_number,
1250 const std::string& message,
1251 const std::string& os_stack_trace)
1259 void RecordProperty(
const std::string& key,
const std::string&
value);
1269 void UponLeavingGTest();
1272 void set_current_test_suite(
TestSuite* a_current_test_suite)
1276 void set_current_test_info(
TestInfo* a_current_test_info)
1290 friend class internal::StreamingListenerTest;
1296 TestPartResult::Type result_type,
const std::string& message);
1310 void PopGTestTrace() GTEST_LOCK_EXCLUDED_(mutex_);
1314 mutable internal::Mutex mutex_;
1320 internal::UnitTestImpl* impl_;
1368 namespace internal {
1373 template <
typename T1,
typename T2>
1375 const char* rhs_expression,
const T1& lhs,
1377 return EqFailure(lhs_expression, rhs_expression,
1390 template <
typename T1,
typename T2>
1392 const char* rhs_expression,
const T1& lhs,
1405 typename T1,
typename T2,
1410 static AssertionResult
Compare(
const char* lhs_expression,
1411 const char* rhs_expression,
const T1& lhs,
1413 return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
1422 static AssertionResult
Compare(
const char* lhs_expression,
1425 return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
1428 template <
typename T>
1430 const char* lhs_expression,
const char* rhs_expression,
1432 std::nullptr_t ,
T* rhs) {
1434 return CmpHelperEQ(lhs_expression, rhs_expression, static_cast<T*>(
nullptr),
1442 template <
typename T1,
typename T2>
1444 const T1& val1,
const T2& val2,
1447 <<
"Expected: (" << expr1 <<
") " << op <<
" (" << expr2
1458 #define GTEST_IMPL_CMP_HELPER_(op_name, op) \
1459 template <typename T1, typename T2> \
1460 AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
1461 const T1& val1, const T2& val2) { \
1462 if (val1 op val2) { \
1463 return AssertionSuccess(); \
1465 return CmpHelperOpFailure(expr1, expr2, val1, val2, #op); \
1482 #undef GTEST_IMPL_CMP_HELPER_
1488 const char* s2_expression,
1489 const char* s1,
const char* s2);
1495 const char* s2_expression,
1496 const char* s1,
const char* s2);
1502 const char* s2_expression,
1503 const char* s1,
const char* s2);
1509 const char* s2_expression,
1510 const char* s1,
const char* s2);
1516 const char* s2_expression,
1517 const wchar_t* s1,
const wchar_t* s2);
1523 const char* s2_expression,
1524 const wchar_t* s1,
const wchar_t* s2);
1537 const char* haystack_expr,
1539 const char* haystack);
1541 const char* haystack_expr,
1542 const wchar_t* needle,
1543 const wchar_t* haystack);
1545 const char* haystack_expr,
1547 const char* haystack);
1549 const char* haystack_expr,
1550 const wchar_t* needle,
1551 const wchar_t* haystack);
1553 const char* haystack_expr,
1554 const ::std::string& needle,
1555 const ::std::string& haystack);
1557 const char* haystack_expr,
1558 const ::std::string& needle,
1559 const ::std::string& haystack);
1561 #if GTEST_HAS_STD_WSTRING
1563 const char* haystack_expr,
1564 const ::std::wstring& needle,
1565 const ::std::wstring& haystack);
1567 const char* haystack_expr,
1568 const ::std::wstring& needle,
1569 const ::std::wstring& haystack);
1570 #endif // GTEST_HAS_STD_WSTRING
1572 namespace internal {
1581 template <
typename RawType>
1583 const char* rhs_expression,
1584 RawType lhs_value, RawType rhs_value) {
1587 if (lhs.AlmostEquals(rhs)) {
1591 ::std::stringstream lhs_ss;
1592 lhs_ss.precision(std::numeric_limits<RawType>::digits10 + 2);
1593 lhs_ss << lhs_value;
1595 ::std::stringstream rhs_ss;
1596 rhs_ss.precision(std::numeric_limits<RawType>::digits10 + 2);
1597 rhs_ss << rhs_value;
1599 return EqFailure(lhs_expression, rhs_expression,
1609 const char* abs_error_expr,
1610 double val1,
double val2,
1618 AssertHelper(TestPartResult::Type type,
const char* file,
int line,
1619 const char* message);
1624 void operator=(
const Message& message)
const;
1634 : type(t), file(srcfile), line(line_num), message(msg) {}
1688 template <
typename T>
1698 <<
"GetParam() can only be called inside a value-parameterized test "
1699 <<
"-- did you intend to write TEST_P instead of TEST_F?";
1706 static void SetParam(
const ParamType* parameter) { parameter_ = parameter; }
1712 template <
class TestClass>
1716 template <
typename T>
1722 template <
typename T>
1730 #define GTEST_SKIP() GTEST_SKIP_("")
1750 #define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed")
1754 #define ADD_FAILURE_AT(file, line) \
1755 GTEST_MESSAGE_AT_(file, line, "Failed", \
1756 ::testing::TestPartResult::kNonFatalFailure)
1759 #define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
1762 #define GTEST_FAIL_AT(file, line) \
1763 return GTEST_MESSAGE_AT_(file, line, "Failed", \
1764 ::testing::TestPartResult::kFatalFailure)
1768 #if !(defined(GTEST_DONT_DEFINE_FAIL) && GTEST_DONT_DEFINE_FAIL)
1769 #define FAIL() GTEST_FAIL()
1770 #define FAIL_AT(file, line) GTEST_FAIL_AT(file, line)
1774 #define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded")
1778 #if !(defined(GTEST_DONT_DEFINE_SUCCEED) && GTEST_DONT_DEFINE_SUCCEED)
1779 #define SUCCEED() GTEST_SUCCEED()
1791 #define EXPECT_THROW(statement, expected_exception) \
1792 GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
1793 #define EXPECT_NO_THROW(statement) \
1794 GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
1795 #define EXPECT_ANY_THROW(statement) \
1796 GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
1797 #define ASSERT_THROW(statement, expected_exception) \
1798 GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
1799 #define ASSERT_NO_THROW(statement) \
1800 GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
1801 #define ASSERT_ANY_THROW(statement) \
1802 GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
1807 #define GTEST_EXPECT_TRUE(condition) \
1808 GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
1809 GTEST_NONFATAL_FAILURE_)
1810 #define GTEST_EXPECT_FALSE(condition) \
1811 GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
1812 GTEST_NONFATAL_FAILURE_)
1813 #define GTEST_ASSERT_TRUE(condition) \
1814 GTEST_TEST_BOOLEAN_(condition, #condition, false, true, GTEST_FATAL_FAILURE_)
1815 #define GTEST_ASSERT_FALSE(condition) \
1816 GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
1817 GTEST_FATAL_FAILURE_)
1822 #if !(defined(GTEST_DONT_DEFINE_EXPECT_TRUE) && GTEST_DONT_DEFINE_EXPECT_TRUE)
1823 #define EXPECT_TRUE(condition) GTEST_EXPECT_TRUE(condition)
1826 #if !(defined(GTEST_DONT_DEFINE_EXPECT_FALSE) && GTEST_DONT_DEFINE_EXPECT_FALSE)
1827 #define EXPECT_FALSE(condition) GTEST_EXPECT_FALSE(condition)
1830 #if !(defined(GTEST_DONT_DEFINE_ASSERT_TRUE) && GTEST_DONT_DEFINE_ASSERT_TRUE)
1831 #define ASSERT_TRUE(condition) GTEST_ASSERT_TRUE(condition)
1834 #if !(defined(GTEST_DONT_DEFINE_ASSERT_FALSE) && GTEST_DONT_DEFINE_ASSERT_FALSE)
1835 #define ASSERT_FALSE(condition) GTEST_ASSERT_FALSE(condition)
1884 #define EXPECT_EQ(val1, val2) \
1885 EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
1886 #define EXPECT_NE(val1, val2) \
1887 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
1888 #define EXPECT_LE(val1, val2) \
1889 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
1890 #define EXPECT_LT(val1, val2) \
1891 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
1892 #define EXPECT_GE(val1, val2) \
1893 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
1894 #define EXPECT_GT(val1, val2) \
1895 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
1897 #define GTEST_ASSERT_EQ(val1, val2) \
1898 ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
1899 #define GTEST_ASSERT_NE(val1, val2) \
1900 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
1901 #define GTEST_ASSERT_LE(val1, val2) \
1902 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
1903 #define GTEST_ASSERT_LT(val1, val2) \
1904 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
1905 #define GTEST_ASSERT_GE(val1, val2) \
1906 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
1907 #define GTEST_ASSERT_GT(val1, val2) \
1908 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
1913 #if !(defined(GTEST_DONT_DEFINE_ASSERT_EQ) && GTEST_DONT_DEFINE_ASSERT_EQ)
1914 #define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
1917 #if !(defined(GTEST_DONT_DEFINE_ASSERT_NE) && GTEST_DONT_DEFINE_ASSERT_NE)
1918 #define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
1921 #if !(defined(GTEST_DONT_DEFINE_ASSERT_LE) && GTEST_DONT_DEFINE_ASSERT_LE)
1922 #define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
1925 #if !(defined(GTEST_DONT_DEFINE_ASSERT_LT) && GTEST_DONT_DEFINE_ASSERT_LT)
1926 #define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
1929 #if !(defined(GTEST_DONT_DEFINE_ASSERT_GE) && GTEST_DONT_DEFINE_ASSERT_GE)
1930 #define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
1933 #if !(defined(GTEST_DONT_DEFINE_ASSERT_GT) && GTEST_DONT_DEFINE_ASSERT_GT)
1934 #define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
1953 #define EXPECT_STREQ(s1, s2) \
1954 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
1955 #define EXPECT_STRNE(s1, s2) \
1956 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
1957 #define EXPECT_STRCASEEQ(s1, s2) \
1958 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
1959 #define EXPECT_STRCASENE(s1, s2) \
1960 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
1962 #define ASSERT_STREQ(s1, s2) \
1963 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
1964 #define ASSERT_STRNE(s1, s2) \
1965 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
1966 #define ASSERT_STRCASEEQ(s1, s2) \
1967 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
1968 #define ASSERT_STRCASENE(s1, s2) \
1969 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
1985 #define EXPECT_FLOAT_EQ(val1, val2) \
1986 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
1989 #define EXPECT_DOUBLE_EQ(val1, val2) \
1990 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
1993 #define ASSERT_FLOAT_EQ(val1, val2) \
1994 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
1997 #define ASSERT_DOUBLE_EQ(val1, val2) \
1998 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
2001 #define EXPECT_NEAR(val1, val2, abs_error) \
2002 EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, val1, val2, \
2005 #define ASSERT_NEAR(val1, val2, abs_error) \
2006 ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, val1, val2, \
2017 float val1,
float val2);
2019 double val1,
double val2);
2021 #ifdef GTEST_OS_WINDOWS
2032 #define EXPECT_HRESULT_SUCCEEDED(expr) \
2033 EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
2035 #define ASSERT_HRESULT_SUCCEEDED(expr) \
2036 ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
2038 #define EXPECT_HRESULT_FAILED(expr) \
2039 EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
2041 #define ASSERT_HRESULT_FAILED(expr) \
2042 ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
2044 #endif // GTEST_OS_WINDOWS
2056 #define ASSERT_NO_FATAL_FAILURE(statement) \
2057 GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
2058 #define EXPECT_NO_FATAL_FAILURE(statement) \
2059 GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
2078 template <
typename T>
2080 PushTrace(file, line, (
Message() << message).GetString());
2085 PushTrace(file, line, message ? message :
"(null)");
2089 PushTrace(file, line, message);
2099 void PushTrace(
const char* file,
int line, std::string message);
2120 #define SCOPED_TRACE(message) \
2121 const ::testing::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)( \
2122 __FILE__, __LINE__, (message))
2154 template <
typename T1,
typename T2>
2185 #define GTEST_TEST(test_suite_name, test_name) \
2186 GTEST_TEST_(test_suite_name, test_name, ::testing::Test, \
2187 ::testing::internal::GetTestTypeId())
2191 #if !(defined(GTEST_DONT_DEFINE_TEST) && GTEST_DONT_DEFINE_TEST)
2192 #define TEST(test_suite_name, test_name) GTEST_TEST(test_suite_name, test_name)
2220 #define GTEST_TEST_F(test_fixture, test_name) \
2221 GTEST_TEST_(test_fixture, test_name, test_fixture, \
2222 ::testing::internal::GetTypeId<test_fixture>())
2223 #if !(defined(GTEST_DONT_DEFINE_TEST_F) && GTEST_DONT_DEFINE_TEST_F)
2224 #define TEST_F(test_fixture, test_name) GTEST_TEST_F(test_fixture, test_name)
2298 template <
int&... ExplicitParameterBarrier, typename Factory>
2300 const
char* type_param, const
char* value_param,
2301 const
char* file,
int line, Factory factory) {
2302 using TestT =
typename std::remove_pointer<decltype(factory())>::type;
2306 explicit FactoryImpl(Factory
f) : factory_(std::move(f)) {}
2307 Test* CreateTest()
override {
return factory_(); }
2314 test_suite_name, test_name, type_param, value_param,
2318 new FactoryImpl{std::move(factory)});
2334 inline
int RUN_ALL_TESTS() { return ::testing::UnitTest::GetInstance()->Run(); }
2338 #endif // GOOGLETEST_INCLUDE_GTEST_GTEST_H_
const char * file() const
class UnitTestImpl * GetUnitTestImpl()
static void RecordProperty(const std::string &key, const T &value)
void ReportFailureInUnknownLocation(TestPartResult::Type result_type, const std::string &message)
void OnTestDisabled(const TestInfo &) override
Environment * AddGlobalTestEnvironment(Environment *env)
int death_test_count() const
static void SetUpTestCase()
virtual void OnTestCaseStart(const TestCase &)
AssertionResult AssertionFailure()
#define GTEST_DECLARE_bool_(name)
virtual void OnEnvironmentsTearDownStart(const UnitTest &unit_test)=0
const std::vector< TestProperty > & test_properties() const
const std::string test_suite_name_
static const ParamType * parameter_
AssertionResult CmpHelperEQ(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
std::vector< TestInfo * > test_info_list_
internal::TestEventRepeater * repeater_
GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
const internal::UnitTestImpl * impl() const
static void ClearTestResult(TestInfo *test_info)
GTEST_API_ AssertionResult CmpHelperSTREQ(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
internal::TearDownTestSuiteFunc tear_down_tc_
const std::vector< TestPartResult > & test_part_results() const
int increment_death_test_count()
GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
void OnTestCaseStart(const TestCase &) override
TestPartResult::Type const type
virtual void OnTestIterationStart(const UnitTest &unit_test, int iteration)=0
static bool TestPassed(const TestInfo *test_info)
virtual ~TestEventListener()=default
virtual void OnEnvironmentsSetUpStart(const UnitTest &unit_test)=0
void set_elapsed_time(TimeInMillis elapsed)
TestEventListener * default_xml_generator() const
GTEST_API_ AssertionResult DoubleNearPredFormat(const char *expr1, const char *expr2, const char *abs_error_expr, double val1, double val2, double abs_error)
virtual ~Environment()=default
static void SetParam(const ParamType *parameter)
virtual void OnTestStart(const TestInfo &test_info)=0
GTEST_DISABLE_MSC_WARNINGS_POP_() template< int &...ExplicitParameterBarrier
void OnEnvironmentsSetUpEnd(const UnitTest &) override
void OnTestEnd(const TestInfo &) override
const char * name() const
void OnTestIterationStart(const UnitTest &, int) override
GTEST_API_ std::string SrcDir()
std::string FormatForComparisonFailureMessage(const T1 &value, const T2 &)
TestResult ad_hoc_test_result_
#define GTEST_LOCK_EXCLUDED_(locks)
const std::unique_ptr< const ::std::string > type_param_
void(*)( TearDownTestSuiteFunc)
TimeInMillis start_timestamp_
const std::vector< TestInfo * > & test_info_list() const
AssertHelperData *const data_
void SetValue(const std::string &new_value)
void RunTearDownTestSuite()
internal::TimeInMillis TimeInMillis
void OnTestStart(const TestInfo &) override
bool operator!=(const Allocator< T > &a_t, const Allocator< U > &a_u)
int increment_death_test_count()
internal::TestFactoryBase *const factory_
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, BiggestInt lhs, BiggestInt rhs)
const std::unique_ptr< GTEST_FLAG_SAVER_ > gtest_flag_saver_
const internal::TypeId fixture_class_id_
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, std::nullptr_t, T *rhs)
AssertionResult CmpHelperFloatingPointEQ(const char *lhs_expression, const char *rhs_expression, RawType lhs_value, RawType rhs_value)
void OnTestCaseEnd(const TestCase &) override
std::set< std::string > * GetIgnoredParameterizedTestSuites()
#define GTEST_IMPL_CMP_HELPER_(op_name, op)
void OnEnvironmentsSetUpStart(const UnitTest &) override
void OnTestSuiteStart(const TestSuite &) override
virtual Setup_should_be_spelled_SetUp * Setup()
bool is_reportable() const
const char * name() const
virtual void OnTestIterationEnd(const UnitTest &unit_test, int iteration)=0
virtual void OnTestProgramEnd(const UnitTest &unit_test)=0
const std::unique_ptr< const ::std::string > type_param_
AssertionResult AssertionSuccess()
void OnTestProgramStart(const UnitTest &) override
#define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
#define GTEST_CHECK_(condition)
std::string const message
const int kMaxStackTraceDepth
std::vector< TestPartResult > test_part_results_
#define GTEST_DECLARE_int32_(name)
std::vector< TestProperty > test_properties_
static void TearDownTestSuite()
TimeInMillis start_timestamp() const
AssertionResult CmpHelperOpFailure(const char *expr1, const char *expr2, const T1 &val1, const T2 &val2, const char *op)
std::vector< int > test_indices_
const char * type_param() const
virtual void OnTestDisabled(const TestInfo &)
virtual void OnTestSuiteEnd(const TestSuite &)
virtual Setup_should_be_spelled_SetUp * Setup()
TimeInMillis start_timestamp_
void OnTestPartResult(const TestPartResult &) override
virtual void OnTestSuiteStart(const TestSuite &)
const char * value_param() const
GTEST_API_ AssertionResult IsSubstring(const char *needle_expr, const char *haystack_expr, const char *needle, const char *haystack)
static bool ShouldRunTest(const TestInfo *test_info)
AssertHelperData(TestPartResult::Type t, const char *srcfile, int line_num, const char *msg)
const char * test_case_name() const
TimeInMillis start_timestamp() const
void set_start_timestamp(TimeInMillis start)
virtual void OnEnvironmentsTearDownEnd(const UnitTest &unit_test)=0
GTEST_API_ AssertionResult CmpHelperSTRNE(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
#define GTEST_DECLARE_string_(name)
GTEST_API_ TestInfo * MakeAndRegisterTestInfo(std::string test_suite_name, const char *name, const char *type_param, const char *value_param, CodeLocation code_location, TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc, TearDownTestSuiteFunc tear_down_tc, TestFactoryBase *factory)
Environment * AddEnvironment(Environment *env)
const char * test_suite_name() const
static bool TestDisabled(const TestInfo *test_info)
internal::UnitTestImpl * impl()
TimeInMillis elapsed_time_
AssertionResult CmpHelperEQFailure(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
GTEST_API_ AssertionResult EqFailure(const char *expected_expression, const char *actual_expression, const std::string &expected_value, const std::string &actual_value, bool ignoring_case)
bool operator==(const Handle< T > &h1, const Handle< T > &h2)
Compare two handles.
TestProperty(const std::string &a_key, const std::string &a_value)
TestEventListener * default_xml_generator_
virtual void OnTestPartResult(const TestPartResult &test_part_result)=0
static bool TestSkipped(const TestInfo *test_info)
TimeInMillis elapsed_time_
TestEventListener * default_result_printer_
ScopedTrace(const char *file, int line, const T &message)
void OnTestProgramEnd(const UnitTest &) override
virtual void OnEnvironmentsSetUpEnd(const UnitTest &unit_test)=0
GTEST_API_ std::string StringStreamToString(::std::stringstream *stream)
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
std::vector< TestInfo * > & test_info_list()
virtual void OnTestCaseEnd(const TestCase &)
virtual void OnTestEnd(const TestInfo &test_info)=0
virtual void OnTestProgramStart(const UnitTest &unit_test)=0
static bool TestFailed(const TestInfo *test_info)
GTEST_API_ AssertionResult DoubleLE(const char *expr1, const char *expr2, double val1, double val2)
GTEST_API_ void InitGoogleTest(int *argc, char **argv)
void set_should_run(bool should)
static const ParamType & GetParam()
const TestResult * result() const
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
GTEST_API_ AssertionResult IsNotSubstring(const char *needle_expr, const char *haystack_expr, const char *needle, const char *haystack)
Factory TestInfo * RegisterTest(const char *test_suite_name, const char *test_name, const char *type_param, const char *value_param, const char *file, int line, Factory factory)
static UnitTest * GetInstance()
static void SetUpTestSuite()
TestEventListener * default_result_printer() const
void(*)( SetUpTestSuiteFunc)
constexpr bool StaticAssertTypeEq() noexcept
const char * type_param() const
internal::Mutex test_properties_mutex_
void OnTestSuiteEnd(const TestSuite &) override
void OnTestIterationEnd(const UnitTest &, int) override
const char * value() const
internal::SetUpTestSuiteFunc set_up_tc_
ScopedTrace(const char *file, int line, const char *message)
TimeInMillis elapsed_time() const
static void ClearTestSuiteResult(TestSuite *test_suite)
const TestResult & ad_hoc_test_result() const
static bool TestReportable(const TestInfo *test_info)
static bool TestReportableDisabled(const TestInfo *test_info)
bool is_in_another_shard() const
const std::unique_ptr< const ::std::string > value_param_
bool is_in_another_shard_
void OnEnvironmentsTearDownStart(const UnitTest &) override
static void TearDownTestCase()
#define GTEST_MUST_USE_RESULT_
internal::CodeLocation location_
void OnEnvironmentsTearDownEnd(const UnitTest &) override
GTEST_API_ AssertionResult FloatLE(const char *expr1, const char *expr2, float val1, float val2)
ScopedTrace(const char *file, int line, const std::string &message)
GTEST_API_ std::string TempDir()
TimeInMillis elapsed_time() const