52 #ifndef GTEST_INCLUDE_GTEST_GTEST_H_ 53 #define GTEST_INCLUDE_GTEST_GTEST_H_ 59 #include "gtest/internal/gtest-internal.h" 60 #include "gtest/internal/gtest-string.h" 61 #include "gtest/gtest-death-test.h" 62 #include "gtest/gtest-message.h" 63 #include "gtest/gtest-param-test.h" 64 #include "gtest/gtest-printers.h" 65 #include "gtest/gtest_prod.h" 66 #include "gtest/gtest-test-part.h" 67 #include "gtest/gtest-typed-test.h" 69 GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
92 # pragma warning(push) 93 # pragma warning(disable:4805) 94 # pragma warning(disable:4100) 101 GTEST_DECLARE_bool_(also_run_disabled_tests);
104 GTEST_DECLARE_bool_(break_on_failure);
108 GTEST_DECLARE_bool_(catch_exceptions);
113 GTEST_DECLARE_string_(color);
117 GTEST_DECLARE_string_(filter);
121 GTEST_DECLARE_bool_(install_failure_signal_handler);
125 GTEST_DECLARE_bool_(list_tests);
129 GTEST_DECLARE_string_(output);
133 GTEST_DECLARE_bool_(print_time);
136 GTEST_DECLARE_bool_(print_utf8);
139 GTEST_DECLARE_int32_(random_seed);
143 GTEST_DECLARE_int32_(repeat);
147 GTEST_DECLARE_bool_(show_internal_stack_frames);
150 GTEST_DECLARE_bool_(shuffle);
154 GTEST_DECLARE_int32_(stack_trace_depth);
159 GTEST_DECLARE_bool_(throw_on_failure);
164 GTEST_DECLARE_string_(stream_result_to);
166 #if GTEST_USE_OWN_FLAGFILE_FLAG_ 167 GTEST_DECLARE_string_(flagfile);
168 #endif // GTEST_USE_OWN_FLAGFILE_FLAG_ 171 const int kMaxStackTraceDepth = 100;
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;
188 class UnitTestImpl* GetUnitTestImpl();
189 void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
190 const std::string& message);
281 class GTEST_API_ AssertionResult {
285 AssertionResult(
const AssertionResult& other);
287 #if defined(_MSC_VER) && _MSC_VER < 1910 288 GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 )
298 template <
typename T>
299 explicit AssertionResult(
301 typename internal::EnableIf<
302 !internal::ImplicitlyConvertible<T, AssertionResult>::value>::type*
304 : success_(success) {}
306 #if defined(_MSC_VER) && _MSC_VER < 1910 307 GTEST_DISABLE_MSC_WARNINGS_POP_()
311 AssertionResult& operator=(AssertionResult other) {
317 operator bool()
const {
return success_; }
320 AssertionResult operator!()
const;
326 const char* message()
const {
327 return message_.get() != NULL ? message_->c_str() :
"";
331 const char* failure_message()
const {
return message(); }
334 template <
typename T> AssertionResult& operator<<(
const T& value) {
335 AppendMessage(Message() << value);
341 AssertionResult& operator<<(
342 ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
343 AppendMessage(Message() << basic_manipulator);
349 void AppendMessage(
const Message& a_message) {
350 if (message_.get() == NULL)
351 message_.reset(new ::std::string);
352 message_->append(a_message.GetString().c_str());
356 void swap(AssertionResult& other);
364 internal::scoped_ptr< ::std::string> message_;
368 GTEST_API_ AssertionResult AssertionSuccess();
371 GTEST_API_ AssertionResult AssertionFailure();
375 GTEST_API_ AssertionResult AssertionFailure(
const Message& msg);
382 #include "gtest/gtest_pred_impl.h" 415 typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc;
416 typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc;
427 static void SetUpTestCase() {}
435 static void TearDownTestCase() {}
438 static bool HasFatalFailure();
441 static bool HasNonfatalFailure();
445 static bool HasFailure() {
return HasFatalFailure() || HasNonfatalFailure(); }
460 static void RecordProperty(
const std::string& key,
const std::string& value);
461 static void RecordProperty(
const std::string& key,
int value);
468 virtual void SetUp();
471 virtual void TearDown();
476 static bool HasSameFixtureClass();
484 virtual void TestBody() = 0;
491 void DeleteSelf_() {
delete this; }
511 struct Setup_should_be_spelled_SetUp {};
512 virtual Setup_should_be_spelled_SetUp* Setup() {
return NULL; }
515 GTEST_DISALLOW_COPY_AND_ASSIGN_(
Test);
518 typedef internal::TimeInMillis TimeInMillis;
529 TestProperty(
const std::string& a_key,
const std::string& a_value) :
530 key_(a_key), value_(a_value) {
534 const char* key()
const {
539 const char* value()
const {
540 return value_.c_str();
544 void SetValue(
const std::string& new_value) {
571 int total_part_count()
const;
574 int test_property_count()
const;
577 bool Passed()
const {
return !Failed(); }
583 bool HasFatalFailure()
const;
586 bool HasNonfatalFailure()
const;
589 TimeInMillis elapsed_time()
const {
return elapsed_time_; }
593 const TestPartResult& GetTestPartResult(
int i)
const;
604 friend class internal::DefaultGlobalTestPartResultReporter;
605 friend class internal::ExecDeathTest;
606 friend class internal::TestResultAccessor;
607 friend class internal::UnitTestImpl;
608 friend class internal::WindowsDeathTest;
609 friend class internal::FuchsiaDeathTest;
612 const std::vector<TestPartResult>& test_part_results()
const {
613 return test_part_results_;
617 const std::vector<TestProperty>& test_properties()
const {
618 return test_properties_;
622 void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
630 void RecordProperty(
const std::string& xml_element,
636 static bool ValidateTestProperty(
const std::string& xml_element,
640 void AddTestPartResult(
const TestPartResult& test_part_result);
643 int death_test_count()
const {
return death_test_count_; }
646 int increment_death_test_count() {
return ++death_test_count_; }
649 void ClearTestPartResults();
659 std::vector<TestPartResult> test_part_results_;
661 std::vector<TestProperty> test_properties_;
663 int death_test_count_;
665 TimeInMillis elapsed_time_;
689 const char* test_case_name()
const {
return test_case_name_.c_str(); }
692 const char* name()
const {
return name_.c_str(); }
696 const char* type_param()
const {
697 if (type_param_.get() != NULL)
698 return type_param_->c_str();
704 const char* value_param()
const {
705 if (value_param_.get() != NULL)
706 return value_param_->c_str();
711 const char* file()
const {
return location_.file.c_str(); }
714 int line()
const {
return location_.line; }
717 bool is_in_another_shard()
const {
return is_in_another_shard_; }
735 bool should_run()
const {
return should_run_; }
738 bool is_reportable()
const {
741 return matches_filter_ && !is_in_another_shard_;
745 const TestResult* result()
const {
return &result_; }
748 #if GTEST_HAS_DEATH_TEST 749 friend class internal::DefaultDeathTestFactory;
750 #endif // GTEST_HAS_DEATH_TEST 753 friend class internal::UnitTestImpl;
754 friend class internal::StreamingListenerTest;
755 friend TestInfo* internal::MakeAndRegisterTestInfo(
756 const char* test_case_name,
758 const char* type_param,
759 const char* value_param,
761 internal::TypeId fixture_class_id,
762 Test::SetUpTestCaseFunc set_up_tc,
763 Test::TearDownTestCaseFunc tear_down_tc,
768 TestInfo(
const std::string& test_case_name,
769 const std::string& name,
770 const char* a_type_param,
771 const char* a_value_param,
773 internal::TypeId fixture_class_id,
778 int increment_death_test_count() {
779 return result_.increment_death_test_count();
786 static void ClearTestResult(
TestInfo* test_info) {
787 test_info->result_.Clear();
791 const std::string test_case_name_;
792 const std::string name_;
800 const internal::TypeId fixture_class_id_;
803 bool matches_filter_;
805 bool is_in_another_shard_;
813 GTEST_DISALLOW_COPY_AND_ASSIGN_(
TestInfo);
833 TestCase(
const char* name,
const char* a_type_param,
834 Test::SetUpTestCaseFunc set_up_tc,
835 Test::TearDownTestCaseFunc tear_down_tc);
841 const char* name()
const {
return name_.c_str(); }
845 const char* type_param()
const {
846 if (type_param_.get() != NULL)
847 return type_param_->c_str();
852 bool should_run()
const {
return should_run_; }
855 int successful_test_count()
const;
858 int failed_test_count()
const;
861 int reportable_disabled_test_count()
const;
864 int disabled_test_count()
const;
867 int reportable_test_count()
const;
870 int test_to_run_count()
const;
873 int total_test_count()
const;
876 bool Passed()
const {
return !Failed(); }
879 bool Failed()
const {
return failed_test_count() > 0; }
882 TimeInMillis elapsed_time()
const {
return elapsed_time_; }
886 const TestInfo* GetTestInfo(
int i)
const;
890 const TestResult& ad_hoc_test_result()
const {
return ad_hoc_test_result_; }
894 friend class internal::UnitTestImpl;
897 std::vector<TestInfo*>& test_info_list() {
return test_info_list_; }
900 const std::vector<TestInfo*>& test_info_list()
const {
901 return test_info_list_;
906 TestInfo* GetMutableTestInfo(
int i);
909 void set_should_run(
bool should) { should_run_ = should; }
913 void AddTestInfo(
TestInfo * test_info);
919 static void ClearTestCaseResult(
TestCase* test_case) {
920 test_case->ClearResult();
928 void RunSetUpTestCase() { (*set_up_tc_)(); }
932 void RunTearDownTestCase() { (*tear_down_tc_)(); }
935 static bool TestPassed(
const TestInfo* test_info) {
936 return test_info->should_run() && test_info->result()->Passed();
940 static bool TestFailed(
const TestInfo* test_info) {
941 return test_info->should_run() && test_info->result()->Failed();
946 static bool TestReportableDisabled(
const TestInfo* test_info) {
947 return test_info->is_reportable() && test_info->is_disabled_;
951 static bool TestDisabled(
const TestInfo* test_info) {
952 return test_info->is_disabled_;
956 static bool TestReportable(
const TestInfo* test_info) {
957 return test_info->is_reportable();
961 static bool ShouldRunTest(
const TestInfo* test_info) {
962 return test_info->should_run();
969 void UnshuffleTests();
978 std::vector<TestInfo*> test_info_list_;
982 std::vector<int> test_indices_;
984 Test::SetUpTestCaseFunc set_up_tc_;
986 Test::TearDownTestCaseFunc tear_down_tc_;
990 TimeInMillis elapsed_time_;
996 GTEST_DISALLOW_COPY_AND_ASSIGN_(
TestCase);
1019 virtual void SetUp() {}
1022 virtual void TearDown() {}
1026 struct Setup_should_be_spelled_SetUp {};
1027 virtual Setup_should_be_spelled_SetUp* Setup() {
return NULL; }
1030 #if GTEST_HAS_EXCEPTIONS 1033 class GTEST_API_ AssertionException
1034 :
public internal::GoogleTestFailureException {
1036 explicit AssertionException(
const TestPartResult& result)
1037 : GoogleTestFailureException(result) {}
1040 #endif // GTEST_HAS_EXCEPTIONS 1049 virtual void OnTestProgramStart(
const UnitTest& unit_test) = 0;
1054 virtual void OnTestIterationStart(
const UnitTest& unit_test,
1058 virtual void OnEnvironmentsSetUpStart(
const UnitTest& unit_test) = 0;
1061 virtual void OnEnvironmentsSetUpEnd(
const UnitTest& unit_test) = 0;
1064 virtual void OnTestCaseStart(
const TestCase& test_case) = 0;
1067 virtual void OnTestStart(
const TestInfo& test_info) = 0;
1072 virtual void OnTestPartResult(
const TestPartResult& test_part_result) = 0;
1075 virtual void OnTestEnd(
const TestInfo& test_info) = 0;
1078 virtual void OnTestCaseEnd(
const TestCase& test_case) = 0;
1081 virtual void OnEnvironmentsTearDownStart(
const UnitTest& unit_test) = 0;
1084 virtual void OnEnvironmentsTearDownEnd(
const UnitTest& unit_test) = 0;
1087 virtual void OnTestIterationEnd(
const UnitTest& unit_test,
1091 virtual void OnTestProgramEnd(
const UnitTest& unit_test) = 0;
1101 virtual void OnTestProgramStart(
const UnitTest& ) {}
1102 virtual void OnTestIterationStart(
const UnitTest& ,
1104 virtual void OnEnvironmentsSetUpStart(
const UnitTest& ) {}
1105 virtual void OnEnvironmentsSetUpEnd(
const UnitTest& ) {}
1106 virtual void OnTestCaseStart(
const TestCase& ) {}
1107 virtual void OnTestStart(
const TestInfo& ) {}
1108 virtual void OnTestPartResult(
const TestPartResult& ) {}
1109 virtual void OnTestEnd(
const TestInfo& ) {}
1110 virtual void OnTestCaseEnd(
const TestCase& ) {}
1111 virtual void OnEnvironmentsTearDownStart(
const UnitTest& ) {}
1112 virtual void OnEnvironmentsTearDownEnd(
const UnitTest& ) {}
1113 virtual void OnTestIterationEnd(
const UnitTest& ,
1115 virtual void OnTestProgramEnd(
const UnitTest& ) {}
1140 return default_result_printer_;
1151 return default_xml_generator_;
1157 friend class internal::DefaultGlobalTestPartResultReporter;
1158 friend class internal::NoExecDeathTest;
1159 friend class internal::TestEventListenersAccessor;
1160 friend class internal::UnitTestImpl;
1182 bool EventForwardingEnabled()
const;
1183 void SuppressEventForwarding();
1219 int Run() GTEST_MUST_USE_RESULT_;
1223 const char* original_working_dir()
const;
1227 const TestCase* current_test_case()
const 1228 GTEST_LOCK_EXCLUDED_(mutex_);
1232 const TestInfo* current_test_info()
const 1233 GTEST_LOCK_EXCLUDED_(mutex_);
1236 int random_seed()
const;
1243 GTEST_LOCK_EXCLUDED_(mutex_);
1246 int successful_test_case_count()
const;
1249 int failed_test_case_count()
const;
1252 int total_test_case_count()
const;
1256 int test_case_to_run_count()
const;
1259 int successful_test_count()
const;
1262 int failed_test_count()
const;
1265 int reportable_disabled_test_count()
const;
1268 int disabled_test_count()
const;
1271 int reportable_test_count()
const;
1274 int total_test_count()
const;
1277 int test_to_run_count()
const;
1281 TimeInMillis start_timestamp()
const;
1284 TimeInMillis elapsed_time()
const;
1287 bool Passed()
const;
1291 bool Failed()
const;
1295 const TestCase* GetTestCase(
int i)
const;
1299 const TestResult& ad_hoc_test_result()
const;
1321 void AddTestPartResult(TestPartResult::Type result_type,
1322 const char* file_name,
1324 const std::string& message,
1325 const std::string& os_stack_trace)
1326 GTEST_LOCK_EXCLUDED_(mutex_);
1333 void RecordProperty(
const std::string& key,
const std::string& value);
1337 TestCase* GetMutableTestCase(
int i);
1340 internal::UnitTestImpl* impl() {
return impl_; }
1341 const internal::UnitTestImpl* impl()
const {
return impl_; }
1348 friend class internal::StreamingListenerTest;
1349 friend class internal::UnitTestRecordPropertyTestHelper;
1351 friend internal::UnitTestImpl* internal::GetUnitTestImpl();
1352 friend void internal::ReportFailureInUnknownLocation(
1353 TestPartResult::Type result_type,
1354 const std::string& message);
1364 void PushGTestTrace(
const internal::TraceInfo& trace)
1365 GTEST_LOCK_EXCLUDED_(mutex_);
1368 void PopGTestTrace()
1369 GTEST_LOCK_EXCLUDED_(mutex_);
1379 internal::UnitTestImpl* impl_;
1382 GTEST_DISALLOW_COPY_AND_ASSIGN_(
UnitTest);
1404 return UnitTest::GetInstance()->AddEnvironment(env);
1416 GTEST_API_
void InitGoogleTest(
int* argc,
char** argv);
1420 GTEST_API_
void InitGoogleTest(
int* argc,
wchar_t** argv);
1422 namespace internal {
1427 template <
typename T1,
typename T2>
1428 AssertionResult CmpHelperEQFailure(
const char* lhs_expression,
1429 const char* rhs_expression,
1430 const T1& lhs,
const T2& rhs) {
1431 return EqFailure(lhs_expression,
1433 FormatForComparisonFailureMessage(lhs, rhs),
1434 FormatForComparisonFailureMessage(rhs, lhs),
1439 template <
typename T1,
typename T2>
1440 AssertionResult CmpHelperEQ(
const char* lhs_expression,
1441 const char* rhs_expression,
1445 return AssertionSuccess();
1448 return CmpHelperEQFailure(lhs_expression, rhs_expression, lhs, rhs);
1454 GTEST_API_ AssertionResult CmpHelperEQ(
const char* lhs_expression,
1455 const char* rhs_expression,
1463 template <
bool lhs_is_null_literal>
1467 template <
typename T1,
typename T2>
1468 static AssertionResult Compare(
const char* lhs_expression,
1469 const char* rhs_expression,
1472 return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
1481 static AssertionResult Compare(
const char* lhs_expression,
1482 const char* rhs_expression,
1485 return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
1498 template <
typename T1,
typename T2>
1499 static AssertionResult Compare(
1500 const char* lhs_expression,
1501 const char* rhs_expression,
1510 return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
1515 template <
typename T>
1516 static AssertionResult Compare(
1517 const char* lhs_expression,
1518 const char* rhs_expression,
1528 return CmpHelperEQ(lhs_expression, rhs_expression,
1529 static_cast<T*>(NULL), rhs);
1536 template <
typename T1,
typename T2>
1537 AssertionResult CmpHelperOpFailure(
const char* expr1,
const char* expr2,
1538 const T1& val1,
const T2& val2,
1540 return AssertionFailure()
1541 <<
"Expected: (" << expr1 <<
") " << op <<
" (" << expr2
1542 <<
"), actual: " << FormatForComparisonFailureMessage(val1, val2)
1543 <<
" vs " << FormatForComparisonFailureMessage(val2, val1);
1557 #define GTEST_IMPL_CMP_HELPER_(op_name, op)\ 1558 template <typename T1, typename T2>\ 1559 AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ 1560 const T1& val1, const T2& val2) {\ 1561 if (val1 op val2) {\ 1562 return AssertionSuccess();\ 1564 return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\ 1567 GTEST_API_ AssertionResult CmpHelper##op_name(\ 1568 const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2) 1573 GTEST_IMPL_CMP_HELPER_(NE, !=);
1575 GTEST_IMPL_CMP_HELPER_(LE, <=);
1577 GTEST_IMPL_CMP_HELPER_(LT, <);
1579 GTEST_IMPL_CMP_HELPER_(GE, >=);
1581 GTEST_IMPL_CMP_HELPER_(GT, >);
1583 #undef GTEST_IMPL_CMP_HELPER_ 1588 GTEST_API_ AssertionResult CmpHelperSTREQ(
const char* s1_expression,
1589 const char* s2_expression,
1596 GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(
const char* s1_expression,
1597 const char* s2_expression,
1604 GTEST_API_ AssertionResult CmpHelperSTRNE(
const char* s1_expression,
1605 const char* s2_expression,
1612 GTEST_API_ AssertionResult CmpHelperSTRCASENE(
const char* s1_expression,
1613 const char* s2_expression,
1621 GTEST_API_ AssertionResult CmpHelperSTREQ(
const char* s1_expression,
1622 const char* s2_expression,
1629 GTEST_API_ AssertionResult CmpHelperSTRNE(
const char* s1_expression,
1630 const char* s2_expression,
1644 GTEST_API_ AssertionResult IsSubstring(
1645 const char* needle_expr,
const char* haystack_expr,
1646 const char* needle,
const char* haystack);
1647 GTEST_API_ AssertionResult IsSubstring(
1648 const char* needle_expr,
const char* haystack_expr,
1649 const wchar_t* needle,
const wchar_t* haystack);
1650 GTEST_API_ AssertionResult IsNotSubstring(
1651 const char* needle_expr,
const char* haystack_expr,
1652 const char* needle,
const char* haystack);
1653 GTEST_API_ AssertionResult IsNotSubstring(
1654 const char* needle_expr,
const char* haystack_expr,
1655 const wchar_t* needle,
const wchar_t* haystack);
1656 GTEST_API_ AssertionResult IsSubstring(
1657 const char* needle_expr,
const char* haystack_expr,
1658 const ::std::string& needle, const ::std::string& haystack);
1659 GTEST_API_ AssertionResult IsNotSubstring(
1660 const char* needle_expr,
const char* haystack_expr,
1661 const ::std::string& needle, const ::std::string& haystack);
1663 #if GTEST_HAS_STD_WSTRING 1664 GTEST_API_ AssertionResult IsSubstring(
1665 const char* needle_expr,
const char* haystack_expr,
1666 const ::std::wstring& needle, const ::std::wstring& haystack);
1667 GTEST_API_ AssertionResult IsNotSubstring(
1668 const char* needle_expr,
const char* haystack_expr,
1669 const ::std::wstring& needle, const ::std::wstring& haystack);
1670 #endif // GTEST_HAS_STD_WSTRING 1672 namespace internal {
1681 template <
typename RawType>
1682 AssertionResult CmpHelperFloatingPointEQ(
const char* lhs_expression,
1683 const char* rhs_expression,
1685 RawType rhs_value) {
1688 if (lhs.AlmostEquals(rhs)) {
1689 return AssertionSuccess();
1692 ::std::stringstream lhs_ss;
1693 lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
1696 ::std::stringstream rhs_ss;
1697 rhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
1700 return EqFailure(lhs_expression,
1702 StringStreamToString(&lhs_ss),
1703 StringStreamToString(&rhs_ss),
1710 GTEST_API_ AssertionResult DoubleNearPredFormat(
const char* expr1,
1712 const char* abs_error_expr,
1725 const char* message);
1730 void operator=(
const Message& message)
const;
1737 struct AssertHelperData {
1738 AssertHelperData(TestPartResult::Type t,
1739 const char* srcfile,
1742 : type(t), file(srcfile), line(line_num), message(msg) { }
1744 TestPartResult::Type
const type;
1745 const char*
const file;
1747 std::string
const message;
1750 GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData);
1753 AssertHelperData*
const data_;
1794 template <
typename T>
1797 typedef T ParamType;
1805 const ParamType& GetParam()
const {
1806 GTEST_CHECK_(parameter_ != NULL)
1807 <<
"GetParam() can only be called inside a value-parameterized test " 1808 <<
"-- did you intend to write TEST_P instead of TEST_F?";
1815 static void SetParam(
const ParamType* parameter) {
1816 parameter_ = parameter;
1820 static const ParamType* parameter_;
1826 template <
typename T>
1832 template <
typename T>
1856 #define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed") 1860 #define ADD_FAILURE_AT(file, line) \ 1861 GTEST_MESSAGE_AT_(file, line, "Failed", \ 1862 ::testing::TestPartResult::kNonFatalFailure) 1865 #define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed") 1869 #if !GTEST_DONT_DEFINE_FAIL 1870 # define FAIL() GTEST_FAIL() 1874 #define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded") 1878 #if !GTEST_DONT_DEFINE_SUCCEED 1879 # define SUCCEED() GTEST_SUCCEED() 1891 #define EXPECT_THROW(statement, expected_exception) \ 1892 GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_) 1893 #define EXPECT_NO_THROW(statement) \ 1894 GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_) 1895 #define EXPECT_ANY_THROW(statement) \ 1896 GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_) 1897 #define ASSERT_THROW(statement, expected_exception) \ 1898 GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_) 1899 #define ASSERT_NO_THROW(statement) \ 1900 GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_) 1901 #define ASSERT_ANY_THROW(statement) \ 1902 GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_) 1907 #define EXPECT_TRUE(condition) \ 1908 GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ 1909 GTEST_NONFATAL_FAILURE_) 1910 #define EXPECT_FALSE(condition) \ 1911 GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ 1912 GTEST_NONFATAL_FAILURE_) 1913 #define ASSERT_TRUE(condition) \ 1914 GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ 1915 GTEST_FATAL_FAILURE_) 1916 #define ASSERT_FALSE(condition) \ 1917 GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ 1918 GTEST_FATAL_FAILURE_) 1966 #define EXPECT_EQ(val1, val2) \ 1967 EXPECT_PRED_FORMAT2(::testing::internal:: \ 1968 EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, \ 1970 #define EXPECT_NE(val1, val2) \ 1971 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2) 1972 #define EXPECT_LE(val1, val2) \ 1973 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) 1974 #define EXPECT_LT(val1, val2) \ 1975 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) 1976 #define EXPECT_GE(val1, val2) \ 1977 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) 1978 #define EXPECT_GT(val1, val2) \ 1979 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) 1981 #define GTEST_ASSERT_EQ(val1, val2) \ 1982 ASSERT_PRED_FORMAT2(::testing::internal:: \ 1983 EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, \ 1985 #define GTEST_ASSERT_NE(val1, val2) \ 1986 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2) 1987 #define GTEST_ASSERT_LE(val1, val2) \ 1988 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) 1989 #define GTEST_ASSERT_LT(val1, val2) \ 1990 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) 1991 #define GTEST_ASSERT_GE(val1, val2) \ 1992 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) 1993 #define GTEST_ASSERT_GT(val1, val2) \ 1994 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) 1999 #if !GTEST_DONT_DEFINE_ASSERT_EQ 2000 # define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2) 2003 #if !GTEST_DONT_DEFINE_ASSERT_NE 2004 # define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2) 2007 #if !GTEST_DONT_DEFINE_ASSERT_LE 2008 # define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2) 2011 #if !GTEST_DONT_DEFINE_ASSERT_LT 2012 # define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2) 2015 #if !GTEST_DONT_DEFINE_ASSERT_GE 2016 # define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2) 2019 #if !GTEST_DONT_DEFINE_ASSERT_GT 2020 # define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2) 2039 #define EXPECT_STREQ(s1, s2) \ 2040 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2) 2041 #define EXPECT_STRNE(s1, s2) \ 2042 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) 2043 #define EXPECT_STRCASEEQ(s1, s2) \ 2044 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2) 2045 #define EXPECT_STRCASENE(s1, s2)\ 2046 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) 2048 #define ASSERT_STREQ(s1, s2) \ 2049 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2) 2050 #define ASSERT_STRNE(s1, s2) \ 2051 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) 2052 #define ASSERT_STRCASEEQ(s1, s2) \ 2053 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2) 2054 #define ASSERT_STRCASENE(s1, s2)\ 2055 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) 2071 #define EXPECT_FLOAT_EQ(val1, val2)\ 2072 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \ 2075 #define EXPECT_DOUBLE_EQ(val1, val2)\ 2076 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \ 2079 #define ASSERT_FLOAT_EQ(val1, val2)\ 2080 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \ 2083 #define ASSERT_DOUBLE_EQ(val1, val2)\ 2084 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \ 2087 #define EXPECT_NEAR(val1, val2, abs_error)\ 2088 EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ 2089 val1, val2, abs_error) 2091 #define ASSERT_NEAR(val1, val2, abs_error)\ 2092 ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ 2093 val1, val2, abs_error) 2102 GTEST_API_ AssertionResult FloatLE(
const char* expr1,
const char* expr2,
2103 float val1,
float val2);
2104 GTEST_API_ AssertionResult DoubleLE(
const char* expr1,
const char* expr2,
2105 double val1,
double val2);
2108 #if GTEST_OS_WINDOWS 2119 # define EXPECT_HRESULT_SUCCEEDED(expr) \ 2120 EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) 2122 # define ASSERT_HRESULT_SUCCEEDED(expr) \ 2123 ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) 2125 # define EXPECT_HRESULT_FAILED(expr) \ 2126 EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) 2128 # define ASSERT_HRESULT_FAILED(expr) \ 2129 ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) 2131 #endif // GTEST_OS_WINDOWS 2143 #define ASSERT_NO_FATAL_FAILURE(statement) \ 2144 GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_) 2145 #define EXPECT_NO_FATAL_FAILURE(statement) \ 2146 GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_) 2165 template <
typename T>
2166 ScopedTrace(
const char* file,
int line,
const T& message) {
2167 PushTrace(file, line, (
Message() << message).GetString());
2171 ScopedTrace(
const char* file,
int line,
const char* message) {
2172 PushTrace(file, line, message ? message :
"(null)");
2175 #if GTEST_HAS_GLOBAL_STRING 2176 ScopedTrace(
const char* file,
int line, const ::string& message) {
2177 PushTrace(file, line, message);
2181 ScopedTrace(
const char* file,
int line,
const std::string& message) {
2182 PushTrace(file, line, message);
2192 void PushTrace(
const char* file,
int line, std::string message);
2195 } GTEST_ATTRIBUTE_UNUSED_;
2214 #define SCOPED_TRACE(message) \ 2215 ::testing::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\ 2216 __FILE__, __LINE__, (message)) 2249 template <
typename T1,
typename T2>
2250 bool StaticAssertTypeEq() {
2280 #define GTEST_TEST(test_case_name, test_name)\ 2281 GTEST_TEST_(test_case_name, test_name, \ 2282 ::testing::Test, ::testing::internal::GetTestTypeId()) 2286 #if !GTEST_DONT_DEFINE_TEST 2287 # define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name) 2316 #define TEST_F(test_fixture, test_name)\ 2317 GTEST_TEST_(test_fixture, test_name, test_fixture, \ 2318 ::testing::internal::GetTypeId<test_fixture>()) 2322 GTEST_API_ std::string TempDir();
2325 # pragma warning(pop) 2338 int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_;
2340 inline int RUN_ALL_TESTS() {
2341 return ::testing::UnitTest::GetInstance()->Run();
2344 GTEST_DISABLE_MSC_WARNINGS_POP_()
2346 #endif // GTEST_INCLUDE_GTEST_GTEST_H_ Definition: gtest-death-test.h:43
Definition: gtest-port.h:2359
Definition: gtest-internal.h:788
Definition: gtest-message.h:89
Definition: gtest-internal.h:452
Definition: gtest-internal.h:492
Definition: gtest-internal.h:1039
Definition: gtest-param-util.h:404
Definition: gtest-port.h:2274
Definition: gtest.cc:3305
Definition: gtest-port.h:1155
Definition: gtest-internal.h:250
Definition: gtest-param-util.h:663