51#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
52#define GTEST_INCLUDE_GTEST_GTEST_H_
152class DefaultGlobalTestPartResultReporter;
154class NoExecDeathTest;
155class FinalSuccessChecker;
157class StreamingListenerTest;
158class TestResultAccessor;
159class TestEventListenersAccessor;
160class TestEventRepeater;
161class UnitTestRecordPropertyTestHelper;
162class WindowsDeathTest;
165 const std::string& message);
271 template <typename T>
274 typename internal::EnableIf<
277 : success_(success) {}
288 operator bool()
const {
return success_; }
298 return message_.get() != NULL ? message_->c_str() :
"";
313 ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
314 AppendMessage(
Message() << basic_manipulator);
320 void AppendMessage(
const Message& a_message) {
321 if (message_.get() == NULL)
322 message_.reset(new ::std::string);
323 message_->append(a_message.
GetString().c_str());
327 void swap(AssertionResult& other);
335 internal::scoped_ptr< ::std::string> message_;
373 friend class TestInfo;
377 typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc;
378 typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc;
389 static void SetUpTestCase() {}
397 static void TearDownTestCase() {}
400 static bool HasFatalFailure();
403 static bool HasNonfatalFailure();
407 static bool HasFailure() {
return HasFatalFailure() || HasNonfatalFailure(); }
422 static void RecordProperty(
const std::string& key,
const std::string&
value);
423 static void RecordProperty(
const std::string& key,
int value);
438 static bool HasSameFixtureClass();
453 void DeleteSelf_() {
delete this; }
473 struct Setup_should_be_spelled_SetUp {};
474 virtual Setup_should_be_spelled_SetUp* Setup() {
return NULL; }
491 TestProperty(
const std::string& a_key,
const std::string& a_value) :
492 key_(a_key), value_(a_value) {
496 const char* key()
const {
501 const char*
value()
const {
502 return value_.c_str();
506 void SetValue(
const std::string& new_value) {
533 int total_part_count()
const;
536 int test_property_count()
const;
539 bool Passed()
const {
return !Failed(); }
545 bool HasFatalFailure()
const;
548 bool HasNonfatalFailure()
const;
551 TimeInMillis elapsed_time()
const {
return elapsed_time_; }
556 const TestPartResult& GetTestPartResult(
int i)
const;
561 const TestProperty& GetTestProperty(
int i)
const;
564 friend class TestInfo;
565 friend class TestCase;
566 friend class UnitTest;
567 friend class internal::DefaultGlobalTestPartResultReporter;
568 friend class internal::ExecDeathTest;
569 friend class internal::TestResultAccessor;
570 friend class internal::UnitTestImpl;
571 friend class internal::WindowsDeathTest;
574 const std::vector<TestPartResult>& test_part_results()
const {
575 return test_part_results_;
579 const std::vector<TestProperty>& test_properties()
const {
580 return test_properties_;
584 void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
592 void RecordProperty(
const std::string& xml_element,
593 const TestProperty& test_property);
598 static bool ValidateTestProperty(
const std::string& xml_element,
599 const TestProperty& test_property);
602 void AddTestPartResult(
const TestPartResult& test_part_result);
605 int death_test_count()
const {
return death_test_count_; }
608 int increment_death_test_count() {
return ++death_test_count_; }
611 void ClearTestPartResults();
618 internal::Mutex test_properites_mutex_;
621 std::vector<TestPartResult> test_part_results_;
623 std::vector<TestProperty> test_properties_;
625 int death_test_count_;
651 const char* test_case_name()
const {
return test_case_name_.c_str(); }
654 const char* name()
const {
return name_.c_str(); }
658 const char* type_param()
const {
659 if (type_param_.get() != NULL)
660 return type_param_->c_str();
666 const char* value_param()
const {
667 if (value_param_.get() != NULL)
668 return value_param_->c_str();
673 const char* file()
const {
return location_.file.c_str(); }
676 int line()
const {
return location_.line; }
694 bool should_run()
const {
return should_run_; }
697 bool is_reportable()
const {
701 return matches_filter_;
705 const TestResult*
result()
const {
return &result_; }
708#if GTEST_HAS_DEATH_TEST
709 friend class internal::DefaultDeathTestFactory;
712 friend class TestCase;
713 friend class internal::UnitTestImpl;
714 friend class internal::StreamingListenerTest;
715 friend TestInfo* internal::MakeAndRegisterTestInfo(
716 const char* test_case_name,
718 const char* type_param,
719 const char* value_param,
720 internal::CodeLocation code_location,
721 internal::TypeId fixture_class_id,
722 Test::SetUpTestCaseFunc set_up_tc,
723 Test::TearDownTestCaseFunc tear_down_tc,
724 internal::TestFactoryBase* factory);
728 TestInfo(
const std::string& test_case_name,
729 const std::string& name,
730 const char* a_type_param,
731 const char* a_value_param,
732 internal::CodeLocation a_code_location,
733 internal::TypeId fixture_class_id,
734 internal::TestFactoryBase* factory);
738 int increment_death_test_count() {
739 return result_.increment_death_test_count();
746 static void ClearTestResult(TestInfo* test_info) {
747 test_info->result_.Clear();
751 const std::string test_case_name_;
752 const std::string name_;
755 const internal::scoped_ptr<const ::std::string> type_param_;
758 const internal::scoped_ptr<const ::std::string> value_param_;
759 internal::CodeLocation location_;
760 const internal::TypeId fixture_class_id_;
763 bool matches_filter_;
765 internal::TestFactoryBase*
const factory_;
792 TestCase(
const char* name,
const char* a_type_param,
793 Test::SetUpTestCaseFunc set_up_tc,
794 Test::TearDownTestCaseFunc tear_down_tc);
800 const char* name()
const {
return name_.c_str(); }
804 const char* type_param()
const {
805 if (type_param_.get() != NULL)
806 return type_param_->c_str();
811 bool should_run()
const {
return should_run_; }
814 int successful_test_count()
const;
817 int failed_test_count()
const;
820 int reportable_disabled_test_count()
const;
823 int disabled_test_count()
const;
826 int reportable_test_count()
const;
829 int test_to_run_count()
const;
832 int total_test_count()
const;
835 bool Passed()
const {
return !Failed(); }
838 bool Failed()
const {
return failed_test_count() > 0; }
841 TimeInMillis elapsed_time()
const {
return elapsed_time_; }
845 const TestInfo* GetTestInfo(
int i)
const;
849 const TestResult& ad_hoc_test_result()
const {
return ad_hoc_test_result_; }
853 friend class internal::UnitTestImpl;
856 std::vector<TestInfo*>& test_info_list() {
return test_info_list_; }
859 const std::vector<TestInfo*>& test_info_list()
const {
860 return test_info_list_;
865 TestInfo* GetMutableTestInfo(
int i);
868 void set_should_run(
bool should) { should_run_ = should; }
872 void AddTestInfo(TestInfo * test_info);
878 static void ClearTestCaseResult(TestCase* test_case) {
879 test_case->ClearResult();
887 void RunSetUpTestCase() { (*set_up_tc_)(); }
891 void RunTearDownTestCase() { (*tear_down_tc_)(); }
894 static bool TestPassed(
const TestInfo* test_info) {
895 return test_info->should_run() && test_info->result()->Passed();
899 static bool TestFailed(
const TestInfo* test_info) {
900 return test_info->should_run() && test_info->result()->Failed();
905 static bool TestReportableDisabled(
const TestInfo* test_info) {
906 return test_info->is_reportable() && test_info->is_disabled_;
910 static bool TestDisabled(
const TestInfo* test_info) {
911 return test_info->is_disabled_;
915 static bool TestReportable(
const TestInfo* test_info) {
916 return test_info->is_reportable();
920 static bool ShouldRunTest(
const TestInfo* test_info) {
921 return test_info->should_run();
925 void ShuffleTests(internal::Random* random);
928 void UnshuffleTests();
934 const internal::scoped_ptr<const ::std::string> type_param_;
937 std::vector<TestInfo*> test_info_list_;
941 std::vector<int> test_indices_;
943 Test::SetUpTestCaseFunc set_up_tc_;
945 Test::TearDownTestCaseFunc tear_down_tc_;
952 TestResult ad_hoc_test_result_;
975 virtual ~Environment() {}
978 virtual void SetUp() {}
981 virtual void TearDown() {}
985 struct Setup_should_be_spelled_SetUp {};
986 virtual Setup_should_be_spelled_SetUp* Setup() {
return NULL; }
991class TestEventListener {
993 virtual ~TestEventListener() {}
996 virtual void OnTestProgramStart(
const UnitTest& unit_test) = 0;
1001 virtual void OnTestIterationStart(
const UnitTest& unit_test,
1005 virtual void OnEnvironmentsSetUpStart(
const UnitTest& unit_test) = 0;
1008 virtual void OnEnvironmentsSetUpEnd(
const UnitTest& unit_test) = 0;
1011 virtual void OnTestCaseStart(
const TestCase& test_case) = 0;
1014 virtual void OnTestStart(
const TestInfo& test_info) = 0;
1017 virtual void OnTestPartResult(
const TestPartResult& test_part_result) = 0;
1020 virtual void OnTestEnd(
const TestInfo& test_info) = 0;
1023 virtual void OnTestCaseEnd(
const TestCase& test_case) = 0;
1026 virtual void OnEnvironmentsTearDownStart(
const UnitTest& unit_test) = 0;
1029 virtual void OnEnvironmentsTearDownEnd(
const UnitTest& unit_test) = 0;
1032 virtual void OnTestIterationEnd(
const UnitTest& unit_test,
1036 virtual void OnTestProgramEnd(
const UnitTest& unit_test) = 0;
1044class EmptyTestEventListener :
public TestEventListener {
1046 virtual void OnTestProgramStart(
const UnitTest& ) {}
1047 virtual void OnTestIterationStart(
const UnitTest& ,
1049 virtual void OnEnvironmentsSetUpStart(
const UnitTest& ) {}
1050 virtual void OnEnvironmentsSetUpEnd(
const UnitTest& ) {}
1051 virtual void OnTestCaseStart(
const TestCase& ) {}
1052 virtual void OnTestStart(
const TestInfo& ) {}
1053 virtual void OnTestPartResult(
const TestPartResult& ) {}
1054 virtual void OnTestEnd(
const TestInfo& ) {}
1055 virtual void OnTestCaseEnd(
const TestCase& ) {}
1056 virtual void OnEnvironmentsTearDownStart(
const UnitTest& ) {}
1057 virtual void OnEnvironmentsTearDownEnd(
const UnitTest& ) {}
1058 virtual void OnTestIterationEnd(
const UnitTest& ,
1060 virtual void OnTestProgramEnd(
const UnitTest& ) {}
1066 TestEventListeners();
1067 ~TestEventListeners();
1072 void Append(TestEventListener* listener);
1077 TestEventListener* Release(TestEventListener* listener);
1084 TestEventListener* default_result_printer()
const {
1085 return default_result_printer_;
1095 TestEventListener* default_xml_generator()
const {
1096 return default_xml_generator_;
1100 friend class TestCase;
1101 friend class TestInfo;
1102 friend class internal::DefaultGlobalTestPartResultReporter;
1103 friend class internal::NoExecDeathTest;
1104 friend class internal::TestEventListenersAccessor;
1105 friend class internal::UnitTestImpl;
1109 TestEventListener* repeater();
1116 void SetDefaultResultPrinter(TestEventListener* listener);
1123 void SetDefaultXmlGenerator(TestEventListener* listener);
1127 bool EventForwardingEnabled()
const;
1128 void SuppressEventForwarding();
1131 internal::TestEventRepeater* repeater_;
1133 TestEventListener* default_result_printer_;
1135 TestEventListener* default_xml_generator_;
1156 static UnitTest* GetInstance();
1168 const
char* original_working_dir() const;
1172 const TestCase* current_test_case() const
1177 const TestInfo* current_test_info() const
1181 int random_seed() const;
1183#if GTEST_HAS_PARAM_TEST
1188 internal::ParameterizedTestCaseRegistry& parameterized_test_registry()
1193 int successful_test_case_count()
const;
1196 int failed_test_case_count()
const;
1199 int total_test_case_count()
const;
1203 int test_case_to_run_count()
const;
1206 int successful_test_count()
const;
1209 int failed_test_count()
const;
1212 int reportable_disabled_test_count()
const;
1215 int disabled_test_count()
const;
1218 int reportable_test_count()
const;
1221 int total_test_count()
const;
1224 int test_to_run_count()
const;
1234 bool Passed()
const;
1238 bool Failed()
const;
1242 const TestCase* GetTestCase(
int i)
const;
1246 const TestResult& ad_hoc_test_result()
const;
1250 TestEventListeners& listeners();
1262 Environment* AddEnvironment(Environment* env);
1268 void AddTestPartResult(TestPartResult::Type result_type,
1269 const char* file_name,
1271 const std::string& message,
1272 const std::string& os_stack_trace)
1280 void RecordProperty(
const std::string& key,
const std::string&
value);
1284 TestCase* GetMutableTestCase(
int i);
1287 internal::UnitTestImpl* impl() {
return impl_; }
1288 const internal::UnitTestImpl* impl()
const {
return impl_; }
1293 friend class internal::AssertHelper;
1294 friend class internal::ScopedTrace;
1295 friend class internal::StreamingListenerTest;
1296 friend class internal::UnitTestRecordPropertyTestHelper;
1297 friend Environment* AddGlobalTestEnvironment(Environment* env);
1298 friend internal::UnitTestImpl* internal::GetUnitTestImpl();
1299 friend void internal::ReportFailureInUnknownLocation(
1300 TestPartResult::Type result_type,
1301 const std::string& message);
1307 virtual ~UnitTest();
1311 void PushGTestTrace(
const internal::TraceInfo& trace)
1315 void PopGTestTrace()
1320 mutable internal::Mutex mutex_;
1326 internal::UnitTestImpl* impl_;
1350inline Environment* AddGlobalTestEnvironment(Environment* env) {
1351 return UnitTest::GetInstance()->AddEnvironment(env);
1363GTEST_API_ void InitGoogleTest(
int* argc,
char** argv);
1367GTEST_API_ void InitGoogleTest(
int* argc,
wchar_t** argv);
1374template <
typename T1,
typename T2>
1376 const char* rhs_expression,
1377 const T1& lhs,
const T2& rhs) {
1386template <
typename T1,
typename T2>
1388 const char* rhs_expression,
1404 const char* rhs_expression,
1412template <
bool lhs_is_null_literal>
1416 template <
typename T1,
typename T2>
1418 const char* rhs_expression,
1421 return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
1431 const char* rhs_expression,
1434 return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
1447 template <
typename T1,
typename T2>
1449 const char* lhs_expression,
1450 const char* rhs_expression,
1459 return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
1464 template <
typename T>
1466 const char* lhs_expression,
1467 const char* rhs_expression,
1477 return CmpHelperEQ(lhs_expression, rhs_expression,
1478 static_cast<T*
>(NULL), rhs);
1485template <
typename T1,
typename T2>
1487 const T1& val1,
const T2& val2,
1490 <<
"Expected: (" << expr1 <<
") " << op <<
" (" << expr2
1506#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
1507template <typename T1, typename T2>\
1508AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
1509 const T1& val1, const T2& val2) {\
1510 if (val1 op val2) {\
1511 return AssertionSuccess();\
1513 return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\
1516GTEST_API_ AssertionResult CmpHelper##op_name(\
1517 const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
1532#undef GTEST_IMPL_CMP_HELPER_
1538 const char* s2_expression,
1546 const char* s2_expression,
1554 const char* s2_expression,
1562 const char* s2_expression,
1571 const char* s2_expression,
1579 const char* s2_expression,
1594 const char* needle_expr,
const char* haystack_expr,
1595 const char* needle,
const char* haystack);
1597 const char* needle_expr,
const char* haystack_expr,
1598 const wchar_t* needle,
const wchar_t* haystack);
1600 const char* needle_expr,
const char* haystack_expr,
1601 const char* needle,
const char* haystack);
1603 const char* needle_expr,
const char* haystack_expr,
1604 const wchar_t* needle,
const wchar_t* haystack);
1606 const char* needle_expr,
const char* haystack_expr,
1607 const ::std::string& needle, const ::std::string& haystack);
1609 const char* needle_expr,
const char* haystack_expr,
1610 const ::std::string& needle, const ::std::string& haystack);
1612#if GTEST_HAS_STD_WSTRING
1614 const char* needle_expr,
const char* haystack_expr,
1615 const ::std::wstring& needle, const ::std::wstring& haystack);
1617 const char* needle_expr,
const char* haystack_expr,
1618 const ::std::wstring& needle, const ::std::wstring& haystack);
1630template <
typename RawType>
1632 const char* rhs_expression,
1634 RawType rhs_value) {
1637 if (lhs.AlmostEquals(rhs)) {
1641 ::std::stringstream lhs_ss;
1642 lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
1645 ::std::stringstream rhs_ss;
1646 rhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
1661 const char* abs_error_expr,
1674 const char* message);
1686 struct AssertHelperData {
1688 const char* srcfile,
1691 : type(t), file(srcfile), line(line_num), message(msg) { }
1694 const char*
const file;
1696 std::string
const message;
1702 AssertHelperData*
const data_;
1709#if GTEST_HAS_PARAM_TEST
1744template <
typename T>
1745class WithParamInterface {
1747 typedef T ParamType;
1748 virtual ~WithParamInterface() {}
1755 const ParamType& GetParam()
const {
1757 <<
"GetParam() can only be called inside a value-parameterized test "
1758 <<
"-- did you intend to write TEST_P instead of TEST_F?";
1765 static void SetParam(
const ParamType* parameter) {
1766 parameter_ = parameter;
1770 static const ParamType* parameter_;
1773 template <
class TestClass>
friend class internal::ParameterizedTestFactory;
1776template <
typename T>
1777const T* WithParamInterface<T>::parameter_ = NULL;
1782template <
typename T>
1783class TestWithParam :
public Test,
public WithParamInterface<T> {
1808#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed")
1812#define ADD_FAILURE_AT(file, line) \
1813 GTEST_MESSAGE_AT_(file, line, "Failed", \
1814 ::testing::TestPartResult::kNonFatalFailure)
1817#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
1821#if !GTEST_DONT_DEFINE_FAIL
1822# define FAIL() GTEST_FAIL()
1826#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded")
1830#if !GTEST_DONT_DEFINE_SUCCEED
1831# define SUCCEED() GTEST_SUCCEED()
1843#define EXPECT_THROW(statement, expected_exception) \
1844 GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
1845#define EXPECT_NO_THROW(statement) \
1846 GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
1847#define EXPECT_ANY_THROW(statement) \
1848 GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
1849#define ASSERT_THROW(statement, expected_exception) \
1850 GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
1851#define ASSERT_NO_THROW(statement) \
1852 GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
1853#define ASSERT_ANY_THROW(statement) \
1854 GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
1859#define EXPECT_TRUE(condition) \
1860 GTEST_TEST_BOOLEAN_((condition), #condition, false, true, \
1861 GTEST_NONFATAL_FAILURE_)
1862#define EXPECT_FALSE(condition) \
1863 GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
1864 GTEST_NONFATAL_FAILURE_)
1865#define ASSERT_TRUE(condition) \
1866 GTEST_TEST_BOOLEAN_((condition), #condition, false, true, \
1867 GTEST_FATAL_FAILURE_)
1868#define ASSERT_FALSE(condition) \
1869 GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
1870 GTEST_FATAL_FAILURE_)
1922#define EXPECT_EQ(val1, val2) \
1923 EXPECT_PRED_FORMAT2(::testing::internal:: \
1924 EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, \
1926#define EXPECT_NE(val1, val2) \
1927 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
1928#define EXPECT_LE(val1, val2) \
1929 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
1930#define EXPECT_LT(val1, val2) \
1931 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
1932#define EXPECT_GE(val1, val2) \
1933 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
1934#define EXPECT_GT(val1, val2) \
1935 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
1937#define GTEST_ASSERT_EQ(val1, val2) \
1938 ASSERT_PRED_FORMAT2(::testing::internal:: \
1939 EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, \
1941#define GTEST_ASSERT_NE(val1, val2) \
1942 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
1943#define GTEST_ASSERT_LE(val1, val2) \
1944 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
1945#define GTEST_ASSERT_LT(val1, val2) \
1946 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
1947#define GTEST_ASSERT_GE(val1, val2) \
1948 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
1949#define GTEST_ASSERT_GT(val1, val2) \
1950 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
1955#if !GTEST_DONT_DEFINE_ASSERT_EQ
1956# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
1959#if !GTEST_DONT_DEFINE_ASSERT_NE
1960# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
1963#if !GTEST_DONT_DEFINE_ASSERT_LE
1964# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
1967#if !GTEST_DONT_DEFINE_ASSERT_LT
1968# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
1971#if !GTEST_DONT_DEFINE_ASSERT_GE
1972# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
1975#if !GTEST_DONT_DEFINE_ASSERT_GT
1976# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
1995#define EXPECT_STREQ(s1, s2) \
1996 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
1997#define EXPECT_STRNE(s1, s2) \
1998 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
1999#define EXPECT_STRCASEEQ(s1, s2) \
2000 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
2001#define EXPECT_STRCASENE(s1, s2)\
2002 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
2004#define ASSERT_STREQ(s1, s2) \
2005 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
2006#define ASSERT_STRNE(s1, s2) \
2007 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
2008#define ASSERT_STRCASEEQ(s1, s2) \
2009 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
2010#define ASSERT_STRCASENE(s1, s2)\
2011 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
2027#define EXPECT_FLOAT_EQ(val1, val2)\
2028 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
2031#define EXPECT_DOUBLE_EQ(val1, val2)\
2032 EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
2035#define ASSERT_FLOAT_EQ(val1, val2)\
2036 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
2039#define ASSERT_DOUBLE_EQ(val1, val2)\
2040 ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
2043#define EXPECT_NEAR(val1, val2, abs_error)\
2044 EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
2045 val1, val2, abs_error)
2047#define ASSERT_NEAR(val1, val2, abs_error)\
2048 ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
2049 val1, val2, abs_error)
2058GTEST_API_ AssertionResult FloatLE(
const char* expr1,
const char* expr2,
2059 float val1,
float val2);
2060GTEST_API_ AssertionResult DoubleLE(
const char* expr1,
const char* expr2,
2061 double val1,
double val2);
2075# define EXPECT_HRESULT_SUCCEEDED(expr) \
2076 EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
2078# define ASSERT_HRESULT_SUCCEEDED(expr) \
2079 ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
2081# define EXPECT_HRESULT_FAILED(expr) \
2082 EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
2084# define ASSERT_HRESULT_FAILED(expr) \
2085 ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
2099#define ASSERT_NO_FATAL_FAILURE(statement) \
2100 GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
2101#define EXPECT_NO_FATAL_FAILURE(statement) \
2102 GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
2115#define SCOPED_TRACE(message) \
2116 ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\
2117 __FILE__, __LINE__, ::testing::Message() << (message))
2149template <
typename T1,
typename T2>
2150bool StaticAssertTypeEq() {
2151 (void)internal::StaticAssertTypeEqHelper<T1, T2>();
2180#define GTEST_TEST(test_case_name, test_name)\
2181 GTEST_TEST_(test_case_name, test_name, \
2182 ::testing::Test, ::testing::internal::GetTestTypeId())
2186#if !GTEST_DONT_DEFINE_TEST
2187# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name)
2216#define TEST_F(test_fixture, test_name)\
2217 GTEST_TEST_(test_fixture, test_name, test_fixture, \
2218 ::testing::internal::GetTypeId<test_fixture>())
2233 return ::testing::UnitTest::GetInstance()->Run();
bsoncxx::types::value value
Definition DocumentManager.h:16
int result
Definition dllmain.cpp:82
AssertionResult(const AssertionResult &other)
AssertionResult operator!() const
const char * message() const
Definition gtest.h:297
AssertionResult & operator<<(const T &value)
Definition gtest.h:305
const char * failure_message() const
Definition gtest.h:302
AssertionResult & operator<<(::std::ostream &(*basic_manipulator)(::std::ostream &stream))
Definition gtest.h:312
Definition gtest-message.h:85
std::string GetString() const
virtual void TestBody()=0
Type
Definition gtest-test-part.h:51
void operator=(const Message &message) const
AssertHelper(TestPartResult::Type type, const char *file, int line, const char *message)
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs, typename EnableIf<!is_pointer< T2 >::value >::type *=0)
Definition gtest.h:1448
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, Secret *, T *rhs)
Definition gtest.h:1465
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, BiggestInt lhs, BiggestInt rhs)
Definition gtest.h:1430
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
Definition gtest.h:1417
Definition gtest-internal.h:262
Definition gtest-port.h:1115
#define GTEST_DECLARE_bool_(name)
Definition gtest-port.h:2515
#define GTEST_LOCK_EXCLUDED_(locks)
Definition gtest-port.h:2534
#define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
Definition gtest-port.h:317
#define GTEST_MUST_USE_RESULT_
Definition gtest-port.h:886
#define GTEST_DECLARE_string_(name)
Definition gtest-port.h:2518
#define GTEST_API_
Definition gtest-port.h:934
#define GTEST_DECLARE_int32_(name)
Definition gtest-port.h:2516
#define GTEST_DISABLE_MSC_WARNINGS_POP_()
Definition gtest-port.h:318
#define GTEST_CHECK_(condition)
Definition gtest-port.h:1295
#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)
Definition gtest-port.h:874
#define GTEST_IMPL_CMP_HELPER_(op_name, op)
Definition gtest.h:1506
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
Definition gtest.h:2232
GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
long long BiggestInt
Definition gtest-port.h:2241
class UnitTestImpl * GetUnitTestImpl()
AssertionResult CmpHelperEQFailure(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
Definition gtest.h:1375
AssertionResult CmpHelperEQ(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
Definition gtest.h:1387
GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
TypeWithSize< 8 >::Int TimeInMillis
Definition gtest-port.h:2498
GTEST_API_ AssertionResult CmpHelperSTRNE(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
GTEST_API_ std::string StringStreamToString(::std::stringstream *stream)
void ReportFailureInUnknownLocation(TestPartResult::Type result_type, const std::string &message)
AssertionResult CmpHelperOpFailure(const char *expr1, const char *expr2, const T1 &val1, const T2 &val2, const char *op)
Definition gtest.h:1486
std::string FormatForComparisonFailureMessage(const T1 &value, const T2 &)
Definition gtest-printers.h:349
GTEST_API_ AssertionResult CmpHelperSTREQ(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
AssertionResult CmpHelperFloatingPointEQ(const char *lhs_expression, const char *rhs_expression, RawType lhs_value, RawType rhs_value)
Definition gtest.h:1631
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)
GTEST_API_ AssertionResult DoubleNearPredFormat(const char *expr1, const char *expr2, const char *abs_error_expr, double val1, double val2, double abs_error)
Definition gtest-death-test.h:43
GTEST_API_ AssertionResult AssertionSuccess()
GTEST_API_ AssertionResult AssertionFailure()
const int kMaxStackTraceDepth
Definition gtest.h:147
Definition gtest-internal.h:946
Definition gtest-port.h:2213