49#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_H_
50#define GOOGLETEST_INCLUDE_GTEST_GTEST_H_
161#if GTEST_USE_OWN_FLAGFILE_FLAG_
172const
int kMaxStackTraceDepth = 100;
177class DefaultGlobalTestPartResultReporter;
179class NoExecDeathTest;
180class FinalSuccessChecker;
182class StreamingListenerTest;
183class TestResultAccessor;
184class TestEventListenersAccessor;
185class TestEventRepeater;
186class UnitTestRecordPropertyTestHelper;
187class WindowsDeathTest;
188class FuchsiaDeathTest;
189class UnitTestImpl* GetUnitTestImpl();
190void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
191 const std::string& message);
192std::set<std::string>* GetIgnoredParameterizedTestSuites();
214#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
268#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
274 static bool HasFatalFailure();
277 static bool HasNonfatalFailure();
280 static bool IsSkipped();
284 static bool HasFailure() {
return HasFatalFailure() || HasNonfatalFailure(); }
299 static void RecordProperty(
const std::string& key,
const std::string&
value);
302 template <typename T, std::enable_if_t<std::is_convertible<T, int64_t>::value,
313 virtual void SetUp();
316 virtual void TearDown();
321 static bool HasSameFixtureClass();
329 virtual void TestBody() = 0;
336 void DeleteSelf_() {
delete this; }
338 const std::unique_ptr<GTEST_FLAG_SAVER_> gtest_flag_saver_;
356 struct Setup_should_be_spelled_SetUp {};
357 virtual Setup_should_be_spelled_SetUp* Setup() {
return nullptr; }
360 Test(
const Test&) =
delete;
361 Test& operator=(
const Test&) =
delete;
376 : key_(a_key), value_(a_value) {}
379 const char*
key()
const {
return key_.c_str(); }
382 const char*
value()
const {
return value_.c_str(); }
385 void SetValue(
const std::string& new_value) { value_ = new_value; }
410 int total_part_count()
const;
413 int test_property_count()
const;
416 bool Passed()
const {
return !Skipped() && !Failed(); }
419 bool Skipped()
const;
425 bool HasFatalFailure()
const;
428 bool HasNonfatalFailure()
const;
439 const TestPartResult& GetTestPartResult(
int i)
const;
451 friend class internal::ExecDeathTest;
454 friend class internal::WindowsDeathTest;
455 friend class internal::FuchsiaDeathTest;
458 const std::vector<TestPartResult>& test_part_results()
const {
459 return test_part_results_;
463 const std::vector<TestProperty>& test_properties()
const {
464 return test_properties_;
468 void set_start_timestamp(TimeInMillis start) { start_timestamp_ = start; }
471 void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
479 void RecordProperty(
const std::string& xml_element,
480 const TestProperty& test_property);
485 static bool ValidateTestProperty(
const std::string& xml_element,
486 const TestProperty& test_property);
489 void AddTestPartResult(
const TestPartResult& test_part_result);
492 int death_test_count()
const {
return death_test_count_; }
495 int increment_death_test_count() {
return ++death_test_count_; }
498 void ClearTestPartResults();
505 internal::Mutex test_properties_mutex_;
508 std::vector<TestPartResult> test_part_results_;
510 std::vector<TestProperty> test_properties_;
512 int death_test_count_;
514 TimeInMillis start_timestamp_;
516 TimeInMillis elapsed_time_;
519 TestResult(
const TestResult&) =
delete;
520 TestResult& operator=(
const TestResult&) =
delete;
544#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
549 const char*
name()
const {
return name_.c_str(); }
554 if (type_param_ !=
nullptr)
return type_param_->c_str();
561 if (value_param_ !=
nullptr)
return value_param_->c_str();
566 const char*
file()
const {
return location_.file.c_str(); }
569 int line()
const {
return location_.line; }
596 return matches_filter_ && !is_in_another_shard_;
603#ifdef GTEST_HAS_DEATH_TEST
604 friend class internal::DefaultDeathTestFactory;
609 friend class internal::StreamingListenerTest;
610 friend TestInfo* internal::MakeAndRegisterTestInfo(
611 const char* test_suite_name,
const char* name,
const char* type_param,
619 TestInfo(
const std::string& test_suite_name,
const std::string& name,
620 const char* a_type_param,
621 const char* a_value_param,
628 int increment_death_test_count() {
629 return result_.increment_death_test_count();
639 static void ClearTestResult(
TestInfo* test_info) {
640 test_info->result_.Clear();
644 const std::string test_suite_name_;
645 const std::string name_;
648 const std::unique_ptr<const ::std::string> type_param_;
651 const std::unique_ptr<const ::std::string> value_param_;
652 internal::CodeLocation location_;
653 const internal::TypeId fixture_class_id_;
656 bool matches_filter_;
658 bool is_in_another_shard_;
659 internal::TestFactoryBase*
const factory_;
666 TestInfo(
const TestInfo&) =
delete;
667 TestInfo& operator=(
const TestInfo&) =
delete;
687 TestSuite(
const char* name,
const char* a_type_param,
695 const char*
name()
const {
return name_.c_str(); }
700 if (type_param_ !=
nullptr)
return type_param_->c_str();
708 int successful_test_count()
const;
711 int skipped_test_count()
const;
714 int failed_test_count()
const;
717 int reportable_disabled_test_count()
const;
720 int disabled_test_count()
const;
723 int reportable_test_count()
const;
726 int test_to_run_count()
const;
729 int total_test_count()
const;
732 bool Passed()
const {
return !Failed(); }
736 return failed_test_count() > 0 || ad_hoc_test_result().Failed();
748 const TestInfo* GetTestInfo(
int i)
const;
759 std::vector<TestInfo*>& test_info_list() {
return test_info_list_; }
762 const std::vector<TestInfo*>& test_info_list()
const {
763 return test_info_list_;
768 TestInfo* GetMutableTestInfo(
int i);
771 void set_should_run(
bool should) { should_run_ = should; }
775 void AddTestInfo(TestInfo* test_info);
781 static void ClearTestSuiteResult(TestSuite* test_suite) {
782 test_suite->ClearResult();
793 void RunSetUpTestSuite() {
794 if (set_up_tc_ !=
nullptr) {
801 void RunTearDownTestSuite() {
802 if (tear_down_tc_ !=
nullptr) {
808 static bool TestPassed(
const TestInfo* test_info) {
809 return test_info->should_run() && test_info->result()->Passed();
813 static bool TestSkipped(
const TestInfo* test_info) {
814 return test_info->should_run() && test_info->result()->Skipped();
818 static bool TestFailed(
const TestInfo* test_info) {
819 return test_info->should_run() && test_info->result()->Failed();
824 static bool TestReportableDisabled(
const TestInfo* test_info) {
825 return test_info->is_reportable() && test_info->is_disabled_;
829 static bool TestDisabled(
const TestInfo* test_info) {
830 return test_info->is_disabled_;
834 static bool TestReportable(
const TestInfo* test_info) {
835 return test_info->is_reportable();
839 static bool ShouldRunTest(
const TestInfo* test_info) {
840 return test_info->should_run();
844 void ShuffleTests(internal::Random* random);
847 void UnshuffleTests();
853 const std::unique_ptr<const ::std::string> type_param_;
856 std::vector<TestInfo*> test_info_list_;
860 std::vector<int> test_indices_;
862 internal::SetUpTestSuiteFunc set_up_tc_;
864 internal::TearDownTestSuiteFunc tear_down_tc_;
868 TimeInMillis start_timestamp_;
870 TimeInMillis elapsed_time_;
873 TestResult ad_hoc_test_result_;
876 TestSuite(
const TestSuite&) =
delete;
877 TestSuite& operator=(
const TestSuite&) =
delete;
908 struct Setup_should_be_spelled_SetUp {};
909 virtual Setup_should_be_spelled_SetUp* Setup() {
return nullptr; }
912#if GTEST_HAS_EXCEPTIONS
916 :
public internal::GoogleTestFailureException {
918 explicit AssertionException(
const TestPartResult& result)
919 : GoogleTestFailureException(result) {}
949#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
971#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1002#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1011#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1044 return default_result_printer_;
1055 return default_xml_generator_;
1060 void SuppressEventForwarding(
bool);
1066 friend class internal::NoExecDeathTest;
1090 bool EventForwardingEnabled()
const;
1138#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1147 int random_seed() const;
1153 internal::ParameterizedTestSuiteRegistry& parameterized_test_registry()
1157 int successful_test_suite_count() const;
1160 int failed_test_suite_count() const;
1163 int total_test_suite_count() const;
1167 int test_suite_to_run_count() const;
1170#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1171 int successful_test_case_count()
const;
1172 int failed_test_case_count()
const;
1173 int total_test_case_count()
const;
1174 int test_case_to_run_count()
const;
1178 int successful_test_count()
const;
1181 int skipped_test_count()
const;
1184 int failed_test_count()
const;
1187 int reportable_disabled_test_count()
const;
1190 int disabled_test_count()
const;
1193 int reportable_test_count()
const;
1196 int total_test_count()
const;
1199 int test_to_run_count()
const;
1210 bool Passed()
const;
1214 bool Failed()
const;
1221#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1222 const TestCase* GetTestCase(
int i)
const;
1227 const TestResult& ad_hoc_test_result()
const;
1249 void AddTestPartResult(TestPartResult::Type result_type,
1250 const char* file_name,
int line_number,
1251 const std::string& message,
1252 const std::string& os_stack_trace)
1260 void RecordProperty(
const std::string& key,
const std::string&
value);
1275 friend class internal::StreamingListenerTest;
1278 friend std::set<std::string>* internal::GetIgnoredParameterizedTestSuites();
1280 friend void internal::ReportFailureInUnknownLocation(
1281 TestPartResult::Type result_type,
const std::string& message);
1299 mutable internal::Mutex mutex_;
1305 internal::UnitTestImpl* impl_;
1331 return UnitTest::GetInstance()->AddEnvironment(env);
1358template <
typename T1,
typename T2>
1360 const char* rhs_expression,
const T1& lhs,
1362 return EqFailure(lhs_expression, rhs_expression,
1375template <
typename T1,
typename T2>
1377 const char* rhs_expression,
const T1& lhs,
1380 return AssertionSuccess();
1390 typename T1,
typename T2,
1393 typename std::enable_if<!std::is_integral<T1>::value ||
1394 !std::is_pointer<T2>::value>::type* =
nullptr>
1395 static AssertionResult
Compare(
const char* lhs_expression,
1396 const char* rhs_expression,
const T1& lhs,
1398 return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
1407 static AssertionResult
Compare(
const char* lhs_expression,
1410 return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
1413 template <
typename T>
1415 const char* lhs_expression,
const char* rhs_expression,
1417 std::nullptr_t ,
T* rhs) {
1419 return CmpHelperEQ(lhs_expression, rhs_expression,
static_cast<T*
>(
nullptr),
1427template <
typename T1,
typename T2>
1429 const T1& val1,
const T2& val2,
1431 return AssertionFailure()
1432 <<
"Expected: (" << expr1 <<
") " << op <<
" (" << expr2
1443#define GTEST_IMPL_CMP_HELPER_(op_name, op) \
1444 template <typename T1, typename T2> \
1445 AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
1446 const T1& val1, const T2& val2) { \
1447 if (val1 op val2) { \
1448 return AssertionSuccess(); \
1450 return CmpHelperOpFailure(expr1, expr2, val1, val2, #op); \
1467#undef GTEST_IMPL_CMP_HELPER_
1472GTEST_API_ AssertionResult CmpHelperSTREQ(
const char* s1_expression,
1473 const char* s2_expression,
1474 const char* s1,
const char* s2);
1479GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(
const char* s1_expression,
1480 const char* s2_expression,
1481 const char* s1,
const char* s2);
1486GTEST_API_ AssertionResult CmpHelperSTRNE(
const char* s1_expression,
1487 const char* s2_expression,
1488 const char* s1,
const char* s2);
1493GTEST_API_ AssertionResult CmpHelperSTRCASENE(
const char* s1_expression,
1494 const char* s2_expression,
1495 const char* s1,
const char* s2);
1500GTEST_API_ AssertionResult CmpHelperSTREQ(
const char* s1_expression,
1501 const char* s2_expression,
1502 const wchar_t* s1,
const wchar_t* s2);
1507GTEST_API_ AssertionResult CmpHelperSTRNE(
const char* s1_expression,
1508 const char* s2_expression,
1509 const wchar_t* s1,
const wchar_t* s2);
1521GTEST_API_ AssertionResult IsSubstring(
const char* needle_expr,
1522 const char* haystack_expr,
1524 const char* haystack);
1525GTEST_API_ AssertionResult IsSubstring(
const char* needle_expr,
1526 const char* haystack_expr,
1527 const wchar_t* needle,
1528 const wchar_t* haystack);
1529GTEST_API_ AssertionResult IsNotSubstring(
const char* needle_expr,
1530 const char* haystack_expr,
1532 const char* haystack);
1533GTEST_API_ AssertionResult IsNotSubstring(
const char* needle_expr,
1534 const char* haystack_expr,
1535 const wchar_t* needle,
1536 const wchar_t* haystack);
1537GTEST_API_ AssertionResult IsSubstring(
const char* needle_expr,
1538 const char* haystack_expr,
1539 const ::std::string& needle,
1540 const ::std::string& haystack);
1541GTEST_API_ AssertionResult IsNotSubstring(
const char* needle_expr,
1542 const char* haystack_expr,
1543 const ::std::string& needle,
1544 const ::std::string& haystack);
1546#if GTEST_HAS_STD_WSTRING
1547GTEST_API_ AssertionResult IsSubstring(
const char* needle_expr,
1548 const char* haystack_expr,
1549 const ::std::wstring& needle,
1550 const ::std::wstring& haystack);
1551GTEST_API_ AssertionResult IsNotSubstring(
const char* needle_expr,
1552 const char* haystack_expr,
1553 const ::std::wstring& needle,
1554 const ::std::wstring& haystack);
1566template <
typename RawType>
1568 const char* rhs_expression,
1569 RawType lhs_value, RawType rhs_value) {
1572 if (lhs.AlmostEquals(rhs)) {
1573 return AssertionSuccess();
1576 ::std::stringstream lhs_ss;
1577 lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
1580 ::std::stringstream rhs_ss;
1581 rhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
1584 return EqFailure(lhs_expression, rhs_expression,
1592GTEST_API_ AssertionResult DoubleNearPredFormat(
const char* expr1,
1594 const char* abs_error_expr,
1595 double val1,
double val2,
1603 AssertHelper(TestPartResult::Type type,
const char* file,
int line,
1604 const char* message);
1609 void operator=(
const Message& message)
const;
1616 struct AssertHelperData {
1617 AssertHelperData(TestPartResult::Type t,
const char* srcfile,
int line_num,
1619 : type(t), file(srcfile), line(line_num), message(msg) {}
1621 TestPartResult::Type
const type;
1622 const char*
const file;
1624 std::string
const message;
1627 AssertHelperData(
const AssertHelperData&) =
delete;
1628 AssertHelperData& operator=(
const AssertHelperData&) =
delete;
1631 AssertHelperData*
const data_;
1673template <
typename T>
1683 <<
"GetParam() can only be called inside a value-parameterized test "
1684 <<
"-- did you intend to write TEST_P instead of TEST_F?";
1691 static void SetParam(
const ParamType* parameter) { parameter_ = parameter; }
1694 static const ParamType* parameter_;
1697 template <
class TestClass>
1701template <
typename T>
1707template <
typename T>
1715#define GTEST_SKIP() GTEST_SKIP_("")
1735#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed")
1739#define ADD_FAILURE_AT(file, line) \
1740 GTEST_MESSAGE_AT_(file, line, "Failed", \
1741 ::testing::TestPartResult::kNonFatalFailure)
1744#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
1747#define GTEST_FAIL_AT(file, line) \
1748 return GTEST_MESSAGE_AT_(file, line, "Failed", \
1749 ::testing::TestPartResult::kFatalFailure)
1753#if !(defined(GTEST_DONT_DEFINE_FAIL) && GTEST_DONT_DEFINE_FAIL)
1754#define FAIL() GTEST_FAIL()
1758#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded")
1762#if !(defined(GTEST_DONT_DEFINE_SUCCEED) && GTEST_DONT_DEFINE_SUCCEED)
1763#define SUCCEED() GTEST_SUCCEED()
1775#define EXPECT_THROW(statement, expected_exception) \
1776 GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
1777#define EXPECT_NO_THROW(statement) \
1778 GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
1779#define EXPECT_ANY_THROW(statement) \
1780 GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
1781#define ASSERT_THROW(statement, expected_exception) \
1782 GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
1783#define ASSERT_NO_THROW(statement) \
1784 GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
1785#define ASSERT_ANY_THROW(statement) \
1786 GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
1791#define GTEST_EXPECT_TRUE(condition) \
1792 GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
1793 GTEST_NONFATAL_FAILURE_)
1794#define GTEST_EXPECT_FALSE(condition) \
1795 GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
1796 GTEST_NONFATAL_FAILURE_)
1797#define GTEST_ASSERT_TRUE(condition) \
1798 GTEST_TEST_BOOLEAN_(condition, #condition, false, true, GTEST_FATAL_FAILURE_)
1799#define GTEST_ASSERT_FALSE(condition) \
1800 GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
1801 GTEST_FATAL_FAILURE_)
1806#if !(defined(GTEST_DONT_DEFINE_EXPECT_TRUE) && GTEST_DONT_DEFINE_EXPECT_TRUE)
1807#define EXPECT_TRUE(condition) GTEST_EXPECT_TRUE(condition)
1810#if !(defined(GTEST_DONT_DEFINE_EXPECT_FALSE) && GTEST_DONT_DEFINE_EXPECT_FALSE)
1811#define EXPECT_FALSE(condition) GTEST_EXPECT_FALSE(condition)
1814#if !(defined(GTEST_DONT_DEFINE_ASSERT_TRUE) && GTEST_DONT_DEFINE_ASSERT_TRUE)
1815#define ASSERT_TRUE(condition) GTEST_ASSERT_TRUE(condition)
1818#if !(defined(GTEST_DONT_DEFINE_ASSERT_FALSE) && GTEST_DONT_DEFINE_ASSERT_FALSE)
1819#define ASSERT_FALSE(condition) GTEST_ASSERT_FALSE(condition)
1868#define EXPECT_EQ(val1, val2) \
1869 EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
1870#define EXPECT_NE(val1, val2) \
1871 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
1872#define EXPECT_LE(val1, val2) \
1873 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
1874#define EXPECT_LT(val1, val2) \
1875 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
1876#define EXPECT_GE(val1, val2) \
1877 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
1878#define EXPECT_GT(val1, val2) \
1879 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
1881#define GTEST_ASSERT_EQ(val1, val2) \
1882 ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
1883#define GTEST_ASSERT_NE(val1, val2) \
1884 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
1885#define GTEST_ASSERT_LE(val1, val2) \
1886 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
1887#define GTEST_ASSERT_LT(val1, val2) \
1888 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
1889#define GTEST_ASSERT_GE(val1, val2) \
1890 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
1891#define GTEST_ASSERT_GT(val1, val2) \
1892 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
1897#if !(defined(GTEST_DONT_DEFINE_ASSERT_EQ) && GTEST_DONT_DEFINE_ASSERT_EQ)
1898#define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
1901#if !(defined(GTEST_DONT_DEFINE_ASSERT_NE) && GTEST_DONT_DEFINE_ASSERT_NE)
1902#define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
1905#if !(defined(GTEST_DONT_DEFINE_ASSERT_LE) && GTEST_DONT_DEFINE_ASSERT_LE)
1906#define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
1909#if !(defined(GTEST_DONT_DEFINE_ASSERT_LT) && GTEST_DONT_DEFINE_ASSERT_LT)
1910#define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
1913#if !(defined(GTEST_DONT_DEFINE_ASSERT_GE) && GTEST_DONT_DEFINE_ASSERT_GE)
1914#define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
1917#if !(defined(GTEST_DONT_DEFINE_ASSERT_GT) && GTEST_DONT_DEFINE_ASSERT_GT)
1918#define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
1937#define EXPECT_STREQ(s1, s2) \
1938 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
1939#define EXPECT_STRNE(s1, s2) \
1940 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
1941#define EXPECT_STRCASEEQ(s1, s2) \
1942 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
1943#define EXPECT_STRCASENE(s1, s2) \
1944 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
1946#define ASSERT_STREQ(s1, s2) \
1947 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
1948#define ASSERT_STRNE(s1, s2) \
1949 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
1950#define ASSERT_STRCASEEQ(s1, s2) \
1951 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
1952#define ASSERT_STRCASENE(s1, s2) \
1953 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
1969#define EXPECT_FLOAT_EQ(val1, val2) \
1970 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
1973#define EXPECT_DOUBLE_EQ(val1, val2) \
1974 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
1977#define ASSERT_FLOAT_EQ(val1, val2) \
1978 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
1981#define ASSERT_DOUBLE_EQ(val1, val2) \
1982 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
1985#define EXPECT_NEAR(val1, val2, abs_error) \
1986 EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, val1, val2, \
1989#define ASSERT_NEAR(val1, val2, abs_error) \
1990 ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, val1, val2, \
2000GTEST_API_ AssertionResult FloatLE(
const char* expr1,
const char* expr2,
2001 float val1,
float val2);
2002GTEST_API_ AssertionResult DoubleLE(
const char* expr1,
const char* expr2,
2003 double val1,
double val2);
2005#ifdef GTEST_OS_WINDOWS
2016#define EXPECT_HRESULT_SUCCEEDED(expr) \
2017 EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
2019#define ASSERT_HRESULT_SUCCEEDED(expr) \
2020 ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
2022#define EXPECT_HRESULT_FAILED(expr) \
2023 EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
2025#define ASSERT_HRESULT_FAILED(expr) \
2026 ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
2040#define ASSERT_NO_FATAL_FAILURE(statement) \
2041 GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
2042#define EXPECT_NO_FATAL_FAILURE(statement) \
2043 GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
2062 template <
typename T>
2064 PushTrace(file, line, (
Message() << message).GetString());
2069 PushTrace(file, line, message ? message :
"(null)");
2073 PushTrace(file, line, message);
2083 void PushTrace(
const char* file,
int line, std::string message);
2104#define SCOPED_TRACE(message) \
2105 const ::testing::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)( \
2106 __FILE__, __LINE__, (message))
2138template <
typename T1,
typename T2>
2139constexpr bool StaticAssertTypeEq() noexcept {
2140 static_assert(std::is_same<T1, T2>::value,
"T1 and T2 are not the same type");
2169#define GTEST_TEST(test_suite_name, test_name) \
2170 GTEST_TEST_(test_suite_name, test_name, ::testing::Test, \
2171 ::testing::internal::GetTestTypeId())
2175#if !(defined(GTEST_DONT_DEFINE_TEST) && GTEST_DONT_DEFINE_TEST)
2176#define TEST(test_suite_name, test_name) GTEST_TEST(test_suite_name, test_name)
2204#define GTEST_TEST_F(test_fixture, test_name) \
2205 GTEST_TEST_(test_fixture, test_name, test_fixture, \
2206 ::testing::internal::GetTypeId<test_fixture>())
2207#if !(defined(GTEST_DONT_DEFINE_TEST_F) && GTEST_DONT_DEFINE_TEST_F)
2208#define TEST_F(test_fixture, test_name) GTEST_TEST_F(test_fixture, test_name)
2282template <
int&... ExplicitParameterBarrier, typename Factory>
2283TestInfo* RegisterTest(const
char* test_suite_name, const
char* test_name,
2284 const
char* type_param, const
char* value_param,
2285 const
char* file,
int line, Factory factory) {
2286 using TestT =
typename std::remove_pointer<
decltype(factory())>::type;
2290 explicit FactoryImpl(Factory f) : factory_(std::move(f)) {}
2291 Test* CreateTest()
override {
return factory_(); }
2297 return internal::MakeAndRegisterTestInfo(
2298 test_suite_name, test_name, type_param, value_param,
2302 new FactoryImpl{std::move(factory)});
void OnTestStart(const TestInfo &) override
Definition gtest.h:1006
void OnTestSuiteStart(const TestSuite &) override
Definition gtest.h:1000
void OnTestDisabled(const TestInfo &) override
Definition gtest.h:1007
void OnTestIterationStart(const UnitTest &, int) override
Definition gtest.h:996
void OnEnvironmentsTearDownStart(const UnitTest &) override
Definition gtest.h:1015
void OnEnvironmentsSetUpStart(const UnitTest &) override
Definition gtest.h:998
void OnTestEnd(const TestInfo &) override
Definition gtest.h:1009
void OnTestCaseStart(const TestCase &) override
Definition gtest.h:1003
void OnEnvironmentsSetUpEnd(const UnitTest &) override
Definition gtest.h:999
void OnTestProgramEnd(const UnitTest &) override
Definition gtest.h:1019
void OnTestIterationEnd(const UnitTest &, int) override
Definition gtest.h:1017
void OnTestPartResult(const TestPartResult &) override
Definition gtest.h:1008
void OnTestCaseEnd(const TestCase &) override
Definition gtest.h:1012
void OnTestProgramStart(const UnitTest &) override
Definition gtest.h:995
void OnEnvironmentsTearDownEnd(const UnitTest &) override
Definition gtest.h:1016
void OnTestSuiteEnd(const TestSuite &) override
Definition gtest.h:1010
virtual void TearDown()
Definition gtest.h:903
virtual void SetUp()
Definition gtest.h:900
virtual ~Environment()=default
Definition gtest-message.h:101
ScopedTrace(const char *file, int line, const std::string &message)
Definition gtest.h:2072
ScopedTrace(const char *file, int line, const T &message)
Definition gtest.h:2063
ScopedTrace(const char *file, int line, const char *message)
Definition gtest.h:2068
virtual void OnTestPartResult(const TestPartResult &test_part_result)=0
virtual void OnTestSuiteStart(const TestSuite &)
Definition gtest.h:946
virtual void OnTestDisabled(const TestInfo &)
Definition gtest.h:957
virtual void OnEnvironmentsTearDownStart(const UnitTest &unit_test)=0
virtual void OnTestIterationEnd(const UnitTest &unit_test, int iteration)=0
virtual void OnTestProgramStart(const UnitTest &unit_test)=0
virtual void OnTestIterationStart(const UnitTest &unit_test, int iteration)=0
virtual void OnTestCaseEnd(const TestCase &)
Definition gtest.h:972
virtual void OnTestSuiteEnd(const TestSuite &)
Definition gtest.h:968
virtual void OnEnvironmentsTearDownEnd(const UnitTest &unit_test)=0
virtual void OnEnvironmentsSetUpStart(const UnitTest &unit_test)=0
virtual void OnEnvironmentsSetUpEnd(const UnitTest &unit_test)=0
virtual ~TestEventListener()=default
virtual void OnTestStart(const TestInfo &test_info)=0
virtual void OnTestEnd(const TestInfo &test_info)=0
virtual void OnTestCaseStart(const TestCase &)
Definition gtest.h:950
virtual void OnTestProgramEnd(const UnitTest &unit_test)=0
TestEventListener * default_result_printer() const
Definition gtest.h:1043
TestEventListener * default_xml_generator() const
Definition gtest.h:1054
const char * file() const
Definition gtest.h:566
const char * value_param() const
Definition gtest.h:560
bool is_reportable() const
Definition gtest.h:593
bool is_in_another_shard() const
Definition gtest.h:572
bool should_run() const
Definition gtest.h:590
const char * type_param() const
Definition gtest.h:553
const char * name() const
Definition gtest.h:549
const TestResult * result() const
Definition gtest.h:600
const char * test_case_name() const
Definition gtest.h:545
const char * test_suite_name() const
Definition gtest.h:541
int line() const
Definition gtest.h:569
const char * value() const
Definition gtest.h:382
TestProperty(const std::string &a_key, const std::string &a_value)
Definition gtest.h:375
void SetValue(const std::string &new_value)
Definition gtest.h:385
const char * key() const
Definition gtest.h:379
TimeInMillis elapsed_time() const
Definition gtest.h:431
bool Passed() const
Definition gtest.h:416
TimeInMillis start_timestamp() const
Definition gtest.h:435
const char * name() const
Definition gtest.h:695
TimeInMillis elapsed_time() const
Definition gtest.h:740
const char * type_param() const
Definition gtest.h:699
const TestResult & ad_hoc_test_result() const
Definition gtest.h:752
bool should_run() const
Definition gtest.h:705
TimeInMillis start_timestamp() const
Definition gtest.h:744
bool Passed() const
Definition gtest.h:732
bool Failed() const
Definition gtest.h:735
static void RecordProperty(const std::string &key, const T &value)
Definition gtest.h:304
static void SetUpTestCase()
Definition gtest.h:270
static void TearDownTestSuite()
Definition gtest.h:264
static bool HasFailure()
Definition gtest.h:284
static void SetUpTestSuite()
Definition gtest.h:256
static void TearDownTestCase()
Definition gtest.h:269
const char * original_working_dir() const
static const ParamType & GetParam()
Definition gtest.h:1681
T ParamType
Definition gtest.h:1676
virtual ~WithParamInterface()=default
Definition gtest-internal-inl.h:469
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
Definition gtest.h:1395
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, std::nullptr_t, T *rhs)
Definition gtest.h:1414
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, BiggestInt lhs, BiggestInt rhs)
Definition gtest.h:1407
Definition gtest-internal.h:246
GTestNonCopyable & operator=(const GTestNonCopyable &)=delete
GTestNonCopyable(const GTestNonCopyable &)=delete
~GTestNonCopyable()=default
GTestNonCopyable()=default
Definition gtest-param-util.h:399
Definition gtest_unittest.cc:172
Definition gtest-internal.h:436
Definition gtest-internal-inl.h:1041
Definition gtest-internal-inl.h:508
Definition gtest_unittest.cc:196
int value
Definition gmock-actions_test.cc:1714
int i
Definition gmock-matchers-comparisons_test.cc:603
#define GTEST_DECLARE_bool_(name)
Definition gtest-port.h:2275
#define GTEST_LOCK_EXCLUDED_(locks)
Definition gtest-port.h:2302
#define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
Definition gtest-port.h:360
#define GTEST_MUST_USE_RESULT_
Definition gtest-port.h:776
#define GTEST_DECLARE_string_(name)
Definition gtest-port.h:2285
#define GTEST_API_
Definition gtest-port.h:842
#define GTEST_DECLARE_int32_(name)
Definition gtest-port.h:2280
#define GTEST_DISABLE_MSC_WARNINGS_POP_()
Definition gtest-port.h:361
#define GTEST_CHECK_(condition)
Definition gtest-port.h:1078
#define GTEST_IMPL_CMP_HELPER_(op_name, op)
Definition gtest.h:1443
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
Definition gtest.h:2317
Run(command)
Definition googletest-break-on-failure-unittest.py:77
long long BiggestInt
Definition gtest-port.h:2171
AssertionResult CmpHelperEQFailure(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
Definition gtest.h:1359
AssertionResult CmpHelperEQ(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
Definition gtest.h:1376
int64_t TimeInMillis
Definition gtest-port.h:2219
AssertionResult CmpHelperOpFailure(const char *expr1, const char *expr2, const T1 &val1, const T2 &val2, const char *op)
Definition gtest.h:1428
std::string FormatForComparisonFailureMessage(const T1 &value, const T2 &)
Definition gtest-printers.h:437
AssertionResult CmpHelperFloatingPointEQ(const char *lhs_expression, const char *rhs_expression, RawType lhs_value, RawType rhs_value)
Definition gtest.h:1567
const void * TypeId
Definition gtest-internal.h:401
GTEST_API_ std::string StringStreamToString(::std::stringstream *stream)
Definition gtest.cc:2216
void(*)() SetUpTestSuiteFunc
Definition gtest-internal.h:474
void(*)() TearDownTestSuiteFunc
Definition gtest-internal.h:475
Definition gmock-actions.h:151
Environment * AddGlobalTestEnvironment(Environment *env)
Definition gtest.h:1330
GTEST_API_ std::string SrcDir()
internal::TimeInMillis TimeInMillis
Definition gtest.h:364
GTEST_API_ void InitGoogleTest(int *argc, char **argv)
Definition gtest.cc:6794
Definition gtest-internal.h:477
Definition gtest-internal.h:500
Definition gtest-internal-inl.h:460