@ -57,16 +57,16 @@
# include <ostream>
# include <vector>
# include "gtest/internal/gtest-internal.h"
# include "gtest/internal/gtest-string.h"
# include "gtest/gtest-death-test.h"
# include "gtest/gtest-matchers.h"
# include "gtest/gtest-message.h"
# include "gtest/gtest-param-test.h"
# include "gtest/gtest-printers.h"
# include "gtest/gtest_prod.h"
# include "gtest/gtest-test-part.h"
# include "gtest/gtest-typed-test.h"
# include "gtest/gtest_prod.h"
# include "gtest/internal/gtest-internal.h"
# include "gtest/internal/gtest-string.h"
GTEST_DISABLE_MSC_WARNINGS_PUSH_ ( 4251 \
/* class A needs to have dll-interface to be used by clients of class B */ )
@ -91,12 +91,11 @@ namespace testing {
// Silence C4100 (unreferenced formal parameter) and 4805
// unsafe mix of type 'const int' and type 'const bool'
# ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable:4805)
# pragma warning(disable:4100)
# pragma warning(push)
# pragma warning(disable : 4805)
# pragma warning(disable : 4100)
# endif
// Declares the flags.
// This flag temporary enables the disabled tests.
@ -334,7 +333,8 @@ class GTEST_API_ AssertionResult {
const char * failure_message ( ) const { return message ( ) ; }
// Streams a custom failure message into this object.
template < typename T > AssertionResult & operator < < ( const T & value ) {
template < typename T >
AssertionResult & operator < < ( const T & value ) {
AppendMessage ( Message ( ) < < value ) ;
return * this ;
}
@ -531,24 +531,17 @@ class TestProperty {
// C'tor. TestProperty does NOT have a default constructor.
// Always use this constructor (with parameters) to create a
// TestProperty object.
TestProperty ( const std : : string & a_key , const std : : string & a_value ) :
key_ ( a_key ) , value_ ( a_value ) {
}
TestProperty ( const std : : string & a_key , const std : : string & a_value )
: key_ ( a_key ) , value_ ( a_value ) { }
// Gets the user supplied key.
const char * key ( ) const {
return key_ . c_str ( ) ;
}
const char * key ( ) const { return key_ . c_str ( ) ; }
// Gets the user supplied value.
const char * value ( ) const {
return value_ . c_str ( ) ;
}
const char * value ( ) const { return value_ . c_str ( ) ; }
// Sets a new value, overriding the one supplied in the constructor.
void SetValue ( const std : : string & new_value ) {
value_ = new_value ;
}
void SetValue ( const std : : string & new_value ) { value_ = new_value ; }
private :
// The key supplied by the user.
@ -759,20 +752,15 @@ class GTEST_API_ TestInfo {
friend class internal : : UnitTestImpl ;
friend class internal : : StreamingListenerTest ;
friend TestInfo * internal : : MakeAndRegisterTestInfo (
const char * test_case_name ,
const char * name ,
const char * type_param ,
const char * value_param ,
internal : : CodeLocation code_location ,
internal : : TypeId fixture_class_id ,
Test : : SetUpTestCaseFunc set_up_tc ,
const char * test_case_name , const char * name , const char * type_param ,
const char * value_param , internal : : CodeLocation code_location ,
internal : : TypeId fixture_class_id , Test : : SetUpTestCaseFunc set_up_tc ,
Test : : TearDownTestCaseFunc tear_down_tc ,
internal : : TestFactoryBase * factory ) ;
// Constructs a TestInfo object. The newly constructed instance assumes
// ownership of the factory object.
TestInfo ( const std : : string & test_case_name ,
const std : : string & name ,
TestInfo ( const std : : string & test_case_name , const std : : string & name ,
const char * a_type_param , // NULL if not a type-parameterized test
const char * a_value_param , // NULL if not a value-parameterized test
internal : : CodeLocation a_code_location ,
@ -794,8 +782,8 @@ class GTEST_API_ TestInfo {
}
// These fields are immutable properties of the test.
const std : : string test_case_name_ ; // Test case name
const std : : string name_ ; // Test name
const std : : string test_case_name_ ; // Test case name
const std : : string name_ ; // Test name
// Name of the parameter type, or NULL if this is not a typed or a
// type-parameterized test.
const std : : unique_ptr < const : : std : : string > type_param_ ;
@ -804,11 +792,11 @@ class GTEST_API_ TestInfo {
const std : : unique_ptr < const : : std : : string > value_param_ ;
internal : : CodeLocation location_ ;
const internal : : TypeId fixture_class_id_ ; // ID of the test fixture class
bool should_run_ ; // True iff this test should run
bool is_disabled_ ; // True iff this test is disabled
bool matches_filter_ ; // True if this test matches the
// user-specified filter.
bool is_in_another_shard_ ; // Will be run in another shard.
bool should_run_ ; // True iff this test should run
bool is_disabled_ ; // True iff this test is disabled
bool matches_filter_ ; // True if this test matches the
// user-specified filter.
bool is_in_another_shard_ ; // Will be run in another shard.
internal : : TestFactoryBase * const factory_ ; // The factory that creates
// the test object
@ -918,7 +906,7 @@ class GTEST_API_ TestCase {
// Adds a TestInfo to this test case. Will delete the TestInfo upon
// destruction of the TestCase object.
void AddTestInfo ( TestInfo * test_info ) ;
void AddTestInfo ( TestInfo * test_info ) ;
// Clears the results of all tests in this test case.
void ClearResult ( ) ;
@ -1033,6 +1021,7 @@ class Environment {
// Override this to define how to tear down the environment.
virtual void TearDown ( ) { }
private :
// If you see an error about overriding the following function or
// about it being private, you have mis-spelled SetUp() as Setup().
@ -1097,8 +1086,7 @@ class TestEventListener {
virtual void OnEnvironmentsTearDownEnd ( const UnitTest & unit_test ) = 0 ;
// Fired after each iteration of tests finishes.
virtual void OnTestIterationEnd ( const UnitTest & unit_test ,
int iteration ) = 0 ;
virtual void OnTestIterationEnd ( const UnitTest & unit_test , int iteration ) = 0 ;
// Fired after all test activities have ended.
virtual void OnTestProgramEnd ( const UnitTest & unit_test ) = 0 ;
@ -1237,13 +1225,11 @@ class GTEST_API_ UnitTest {
// Returns the TestCase object for the test that's currently running,
// or NULL if no test is running.
const TestCase * current_test_case ( ) const
GTEST_LOCK_EXCLUDED_ ( mutex_ ) ;
const TestCase * current_test_case ( ) const GTEST_LOCK_EXCLUDED_ ( mutex_ ) ;
// Returns the TestInfo object for the test that's currently running,
// or NULL if no test is running.
const TestInfo * current_test_info ( ) const
GTEST_LOCK_EXCLUDED_ ( mutex_ ) ;
const TestInfo * current_test_info ( ) const GTEST_LOCK_EXCLUDED_ ( mutex_ ) ;
// Returns the random seed used at the start of the current test run.
int random_seed ( ) const ;
@ -1335,8 +1321,7 @@ class GTEST_API_ UnitTest {
// eventually call this to report their results. The user code
// should use the assertion macros instead of calling this directly.
void AddTestPartResult ( TestPartResult : : Type result_type ,
const char * file_name ,
int line_number ,
const char * file_name , int line_number ,
const std : : string & message ,
const std : : string & os_stack_trace )
GTEST_LOCK_EXCLUDED_ ( mutex_ ) ;
@ -1366,8 +1351,7 @@ class GTEST_API_ UnitTest {
friend Environment * AddGlobalTestEnvironment ( Environment * env ) ;
friend internal : : UnitTestImpl * internal : : GetUnitTestImpl ( ) ;
friend void internal : : ReportFailureInUnknownLocation (
TestPartResult : : Type result_type ,
const std : : string & message ) ;
TestPartResult : : Type result_type , const std : : string & message ) ;
// Creates an empty UnitTest.
UnitTest ( ) ;
@ -1381,8 +1365,7 @@ class GTEST_API_ UnitTest {
GTEST_LOCK_EXCLUDED_ ( mutex_ ) ;
// Pops a trace from the per-thread Google Test trace stack.
void PopGTestTrace ( )
GTEST_LOCK_EXCLUDED_ ( mutex_ ) ;
void PopGTestTrace ( ) GTEST_LOCK_EXCLUDED_ ( mutex_ ) ;
// Protects mutable state in *impl_. This is mutable as some const
// methods need to lock it too.
@ -1442,13 +1425,11 @@ namespace internal {
// when calling EXPECT_* in a tight loop.
template < typename T1 , typename T2 >
AssertionResult CmpHelperEQFailure ( const char * lhs_expression ,
const char * rhs_expression ,
const T1 & lhs , const T2 & rhs ) {
return EqFailure ( lhs_expression ,
rhs_expression ,
const char * rhs_expression , const T1 & lhs ,
const T2 & rhs ) {
return EqFailure ( lhs_expression , rhs_expression ,
FormatForComparisonFailureMessage ( lhs , rhs ) ,
FormatForComparisonFailureMessage ( rhs , lhs ) ,
false ) ;
FormatForComparisonFailureMessage ( rhs , lhs ) , false ) ;
}
// This block of code defines operator==/!=
@ -1461,8 +1442,7 @@ inline bool operator!=(faketype, faketype) { return false; }
// The helper function for {ASSERT|EXPECT}_EQ.
template < typename T1 , typename T2 >
AssertionResult CmpHelperEQ ( const char * lhs_expression ,
const char * rhs_expression ,
const T1 & lhs ,
const char * rhs_expression , const T1 & lhs ,
const T2 & rhs ) {
if ( lhs = = rhs ) {
return AssertionSuccess ( ) ;
@ -1476,8 +1456,7 @@ AssertionResult CmpHelperEQ(const char* lhs_expression,
// can be implicitly cast to BiggestInt.
GTEST_API_ AssertionResult CmpHelperEQ ( const char * lhs_expression ,
const char * rhs_expression ,
BiggestInt lhs ,
BiggestInt rhs ) ;
BiggestInt lhs , BiggestInt rhs ) ;
// The helper class for {ASSERT|EXPECT}_EQ. The template argument
// lhs_is_null_literal is true iff the first argument to ASSERT_EQ()
@ -1489,8 +1468,7 @@ class EqHelper {
// This templatized version is for the general case.
template < typename T1 , typename T2 >
static AssertionResult Compare ( const char * lhs_expression ,
const char * rhs_expression ,
const T1 & lhs ,
const char * rhs_expression , const T1 & lhs ,
const T2 & rhs ) {
return CmpHelperEQ ( lhs_expression , rhs_expression , lhs , rhs ) ;
}
@ -1502,8 +1480,7 @@ class EqHelper {
// Even though its body looks the same as the above version, we
// cannot merge the two, as it will make anonymous enums unhappy.
static AssertionResult Compare ( const char * lhs_expression ,
const char * rhs_expression ,
BiggestInt lhs ,
const char * rhs_expression , BiggestInt lhs ,
BiggestInt rhs ) {
return CmpHelperEQ ( lhs_expression , rhs_expression , lhs , rhs ) ;
}
@ -1535,16 +1512,14 @@ class EqHelper<true> {
// pointer, e.g. ASSERT_EQ(NULL, a_pointer).
template < typename T >
static AssertionResult Compare (
const char * lhs_expression ,
const char * rhs_expression ,
const char * lhs_expression , const char * rhs_expression ,
// We used to have a second template parameter instead of Secret*. That
// template parameter would deduce to 'long', making this a better match
// than the first overload even without the first overload's EnableIf.
// Unfortunately, gcc with -Wconversion-null warns when "passing NULL to
// non-pointer argument" (even a deduced integral argument), so the old
// implementation caused warnings in user code.
Secret * /* lhs (NULL) */ ,
T * rhs ) {
Secret * /* lhs (NULL) */ , T * rhs ) {
// We already know that 'lhs' is a null pointer.
return CmpHelperEQ ( lhs_expression , rhs_expression , static_cast < T * > ( nullptr ) ,
rhs ) ;
@ -1575,18 +1550,18 @@ AssertionResult CmpHelperOpFailure(const char* expr1, const char* expr2,
//
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
# define GTEST_IMPL_CMP_HELPER_(op_name, op)\
template < typename T1 , typename T2 > \
AssertionResult CmpHelper # # op_name ( const char * expr1 , const char * expr2 , \
const T1 & val1 , const T2 & val2 ) { \
if ( val1 op val2 ) { \
return AssertionSuccess ( ) ; \
} else { \
return CmpHelperOpFailure ( expr1 , expr2 , val1 , val2 , # op ) ; \
} \
} \
GTEST_API_ AssertionResult CmpHelper # # op_name ( \
const char * expr1 , const char * expr2 , BiggestInt val1 , BiggestInt val2 )
# define GTEST_IMPL_CMP_HELPER_(op_name, op) \
template < typename T1 , typename T2 > \
AssertionResult CmpHelper # # op_name ( const char * expr1 , const char * expr2 , \
const T1 & val1 , const T2 & val2 ) { \
if ( val1 op val2 ) { \
return AssertionSuccess ( ) ; \
} else { \
return CmpHelperOpFailure ( expr1 , expr2 , val1 , val2 , # op ) ; \
} \
} \
GTEST_API_ AssertionResult CmpHelper # # op_name ( \
const char * expr1 , const char * expr2 , BiggestInt val1 , BiggestInt val2 )
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
@ -1608,49 +1583,42 @@ GTEST_IMPL_CMP_HELPER_(GT, >);
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
GTEST_API_ AssertionResult CmpHelperSTREQ ( const char * s1_expression ,
const char * s2_expression ,
const char * s1 ,
const char * s2 ) ;
const char * s1 , const char * s2 ) ;
// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
//
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
GTEST_API_ AssertionResult CmpHelperSTRCASEEQ ( const char * s1_expression ,
const char * s2_expression ,
const char * s1 ,
const char * s2 ) ;
const char * s1 , const char * s2 ) ;
// The helper function for {ASSERT|EXPECT}_STRNE.
//
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
GTEST_API_ AssertionResult CmpHelperSTRNE ( const char * s1_expression ,
const char * s2_expression ,
const char * s1 ,
const char * s2 ) ;
const char * s1 , const char * s2 ) ;
// The helper function for {ASSERT|EXPECT}_STRCASENE.
//
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
GTEST_API_ AssertionResult CmpHelperSTRCASENE ( const char * s1_expression ,
const char * s2_expression ,
const char * s1 ,
const char * s2 ) ;
const char * s1 , const char * s2 ) ;
// Helper function for *_STREQ on wide strings.
//
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
GTEST_API_ AssertionResult CmpHelperSTREQ ( const char * s1_expression ,
const char * s2_expression ,
const wchar_t * s1 ,
const wchar_t * s2 ) ;
const wchar_t * s1 , const wchar_t * s2 ) ;
// Helper function for *_STRNE on wide strings.
//
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
GTEST_API_ AssertionResult CmpHelperSTRNE ( const char * s1_expression ,
const char * s2_expression ,
const wchar_t * s1 ,
const wchar_t * s2 ) ;
const wchar_t * s1 , const wchar_t * s2 ) ;
} // namespace internal
@ -1662,32 +1630,40 @@ GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
//
// The {needle,haystack}_expr arguments are the stringified
// expressions that generated the two real arguments.
GTEST_API_ AssertionResult IsSubstring (
const char * needle_expr , const char * haystack_expr ,
const char * needle , const char * haystack ) ;
GTEST_API_ AssertionResult IsSubstring (
const char * needle_expr , const char * haystack_expr ,
const wchar_t * needle , const wchar_t * haystack ) ;
GTEST_API_ AssertionResult IsNotSubstring (
const char * needle_expr , const char * haystack_expr ,
const char * needle , const char * haystack ) ;
GTEST_API_ AssertionResult IsNotSubstring (
const char * needle_expr , const char * haystack_expr ,
const wchar_t * needle , const wchar_t * haystack ) ;
GTEST_API_ AssertionResult IsSubstring (
const char * needle_expr , const char * haystack_expr ,
const : : std : : string & needle , const : : std : : string & haystack ) ;
GTEST_API_ AssertionResult IsNotSubstring (
const char * needle_expr , const char * haystack_expr ,
const : : std : : string & needle , const : : std : : string & haystack ) ;
GTEST_API_ AssertionResult IsSubstring ( const char * needle_expr ,
const char * haystack_expr ,
const char * needle ,
const char * haystack ) ;
GTEST_API_ AssertionResult IsSubstring ( const char * needle_expr ,
const char * haystack_expr ,
const wchar_t * needle ,
const wchar_t * haystack ) ;
GTEST_API_ AssertionResult IsNotSubstring ( const char * needle_expr ,
const char * haystack_expr ,
const char * needle ,
const char * haystack ) ;
GTEST_API_ AssertionResult IsNotSubstring ( const char * needle_expr ,
const char * haystack_expr ,
const wchar_t * needle ,
const wchar_t * haystack ) ;
GTEST_API_ AssertionResult IsSubstring ( const char * needle_expr ,
const char * haystack_expr ,
const : : std : : string & needle ,
const : : std : : string & haystack ) ;
GTEST_API_ AssertionResult IsNotSubstring ( const char * needle_expr ,
const char * haystack_expr ,
const : : std : : string & needle ,
const : : std : : string & haystack ) ;
# if GTEST_HAS_STD_WSTRING
GTEST_API_ AssertionResult IsSubstring (
const char * needle_expr , const char * haystack_expr ,
const : : std : : wstring & needle , const : : std : : wstring & haystack ) ;
GTEST_API_ AssertionResult IsNotSubstring (
const char * needle_expr , const char * haystack_expr ,
const : : std : : wstring & needle , const : : std : : wstring & haystack ) ;
GTEST_API_ AssertionResult IsSubstring ( const char * needle_expr ,
const char * haystack_expr ,
const : : std : : wstring & needle ,
const : : std : : wstring & haystack ) ;
GTEST_API_ AssertionResult IsNotSubstring ( const char * needle_expr ,
const char * haystack_expr ,
const : : std : : wstring & needle ,
const : : std : : wstring & haystack ) ;
# endif // GTEST_HAS_STD_WSTRING
namespace internal {
@ -1702,8 +1678,7 @@ namespace internal {
template < typename RawType >
AssertionResult CmpHelperFloatingPointEQ ( const char * lhs_expression ,
const char * rhs_expression ,
RawType lhs_value ,
RawType rhs_value ) {
RawType lhs_value , RawType rhs_value ) {
const FloatingPoint < RawType > lhs ( lhs_value ) , rhs ( rhs_value ) ;
if ( lhs . AlmostEquals ( rhs ) ) {
@ -1718,10 +1693,8 @@ AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression,
rhs_ss < < std : : setprecision ( std : : numeric_limits < RawType > : : digits10 + 2 )
< < rhs_value ;
return EqFailure ( lhs_expression ,
rhs_expression ,
StringStreamToString ( & lhs_ss ) ,
StringStreamToString ( & rhs_ss ) ,
return EqFailure ( lhs_expression , rhs_expression ,
StringStreamToString ( & lhs_ss ) , StringStreamToString ( & rhs_ss ) ,
false ) ;
}
@ -1731,8 +1704,7 @@ AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression,
GTEST_API_ AssertionResult DoubleNearPredFormat ( const char * expr1 ,
const char * expr2 ,
const char * abs_error_expr ,
double val1 ,
double val2 ,
double val1 , double val2 ,
double abs_error ) ;
// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
@ -1740,9 +1712,7 @@ GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1,
class GTEST_API_ AssertHelper {
public :
// Constructor.
AssertHelper ( TestPartResult : : Type type ,
const char * file ,
int line ,
AssertHelper ( TestPartResult : : Type type , const char * file , int line ,
const char * message ) ;
~ AssertHelper ( ) ;
@ -1756,11 +1726,9 @@ class GTEST_API_ AssertHelper {
// re-using stack space even for temporary variables, so every EXPECT_EQ
// reserves stack space for another AssertHelper.
struct AssertHelperData {
AssertHelperData ( TestPartResult : : Type t ,
const char * srcfile ,
int line_num ,
AssertHelperData ( TestPartResult : : Type t , const char * srcfile , int line_num ,
const char * msg )
: type ( t ) , file ( srcfile ) , line ( line_num ) , message ( msg ) { }
: type ( t ) , file ( srcfile ) , line ( line_num ) , message ( msg ) { }
TestPartResult : : Type const type ;
const char * const file ;
@ -1836,15 +1804,14 @@ class WithParamInterface {
private :
// Sets parameter value. The caller is responsible for making sure the value
// remains alive and unchanged throughout the current test.
static void SetParam ( const ParamType * parameter ) {
parameter_ = parameter ;
}
static void SetParam ( const ParamType * parameter ) { parameter_ = parameter ; }
// Static value used for accessing parameter during a test lifetime.
static const ParamType * parameter_ ;
// TestClass must be a subclass of WithParamInterface<T> and Test.
template < class TestClass > friend class internal : : ParameterizedTestFactory ;
template < class TestClass >
friend class internal : : ParameterizedTestFactory ;
} ;
template < typename T >
@ -1854,8 +1821,7 @@ const T* WithParamInterface<T>::parameter_ = nullptr;
// WithParamInterface, and can just inherit from ::testing::TestWithParam.
template < typename T >
class TestWithParam : public Test , public WithParamInterface < T > {
} ;
class TestWithParam : public Test , public WithParamInterface < T > { } ;
// Macros for indicating success/failure in test code.
@ -1886,7 +1852,7 @@ class TestWithParam : public Test, public WithParamInterface<T> {
// Generates a nonfatal failure at the given source file location with
// a generic message.
# define ADD_FAILURE_AT(file, line) \
# define ADD_FAILURE_AT(file, line) \
GTEST_MESSAGE_AT_ ( file , line , " Failed " , \
: : testing : : TestPartResult : : kNonFatalFailure )
@ -1896,7 +1862,7 @@ class TestWithParam : public Test, public WithParamInterface<T> {
// Define this macro to 1 to omit the definition of FAIL(), which is a
// generic name and clashes with some other libraries.
# if !GTEST_DONT_DEFINE_FAIL
# define FAIL() GTEST_FAIL()
# define FAIL() GTEST_FAIL()
# endif
// Generates a success with a generic message.
@ -1905,7 +1871,7 @@ class TestWithParam : public Test, public WithParamInterface<T> {
// Define this macro to 1 to omit the definition of SUCCEED(), which
// is a generic name and clashes with some other libraries.
# if !GTEST_DONT_DEFINE_SUCCEED
# define SUCCEED() GTEST_SUCCEED()
# define SUCCEED() GTEST_SUCCEED()
# endif
// Macros for testing exceptions.
@ -1933,16 +1899,15 @@ class TestWithParam : public Test, public WithParamInterface<T> {
// Boolean assertions. Condition can be either a Boolean expression or an
// AssertionResult. For more information on how to use AssertionResult with
// these macros see comments on that class.
# define EXPECT_TRUE(condition) \
# define EXPECT_TRUE(condition) \
GTEST_TEST_BOOLEAN_ ( condition , # condition , false , true , \
GTEST_NONFATAL_FAILURE_ )
# define EXPECT_FALSE(condition) \
# define EXPECT_FALSE(condition) \
GTEST_TEST_BOOLEAN_ ( ! ( condition ) , # condition , true , false , \
GTEST_NONFATAL_FAILURE_ )
# define ASSERT_TRUE(condition) \
GTEST_TEST_BOOLEAN_ ( condition , # condition , false , true , \
GTEST_FATAL_FAILURE_ )
# define ASSERT_FALSE(condition) \
GTEST_TEST_BOOLEAN_ ( condition , # condition , false , true , GTEST_FATAL_FAILURE_ )
# define ASSERT_FALSE(condition) \
GTEST_TEST_BOOLEAN_ ( ! ( condition ) , # condition , true , false , \
GTEST_FATAL_FAILURE_ )
@ -1992,10 +1957,10 @@ class TestWithParam : public Test, public WithParamInterface<T> {
// ASSERT_LT(i, array_size);
// ASSERT_GT(records.size(), 0) << "There is no record left.";
# define EXPECT_EQ(val1, val2) \
EXPECT_PRED_FORMAT2 ( : : testing : : internal : : \
EqHelper < GTEST_IS_NULL_LITERAL_ ( val1 ) > : : Compare , \
val1 , val2 )
# define EXPECT_EQ(val1, val2) \
EXPECT_PRED_FORMAT2 ( \
: : testing : : internal : : EqHelper < GTEST_IS_NULL_LITERAL_ ( val1 ) > : : Compare , \
val1 , val2 )
# define EXPECT_NE(val1, val2) \
EXPECT_PRED_FORMAT2 ( : : testing : : internal : : CmpHelperNE , val1 , val2 )
# define EXPECT_LE(val1, val2) \
@ -2007,10 +1972,10 @@ class TestWithParam : public Test, public WithParamInterface<T> {
# define EXPECT_GT(val1, val2) \
EXPECT_PRED_FORMAT2 ( : : testing : : internal : : CmpHelperGT , val1 , val2 )
# define GTEST_ASSERT_EQ(val1, val2) \
ASSERT_PRED_FORMAT2 ( : : testing : : internal : : \
EqHelper < GTEST_IS_NULL_LITERAL_ ( val1 ) > : : Compare , \
val1 , val2 )
# define GTEST_ASSERT_EQ(val1, val2) \
ASSERT_PRED_FORMAT2 ( \
: : testing : : internal : : EqHelper < GTEST_IS_NULL_LITERAL_ ( val1 ) > : : Compare , \
val1 , val2 )
# define GTEST_ASSERT_NE(val1, val2) \
ASSERT_PRED_FORMAT2 ( : : testing : : internal : : CmpHelperNE , val1 , val2 )
# define GTEST_ASSERT_LE(val1, val2) \
@ -2026,27 +1991,27 @@ class TestWithParam : public Test, public WithParamInterface<T> {
// ASSERT_XY(), which clashes with some users' own code.
# if !GTEST_DONT_DEFINE_ASSERT_EQ
# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
# endif
# if !GTEST_DONT_DEFINE_ASSERT_NE
# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
# endif
# if !GTEST_DONT_DEFINE_ASSERT_LE
# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
# endif
# if !GTEST_DONT_DEFINE_ASSERT_LT
# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
# endif
# if !GTEST_DONT_DEFINE_ASSERT_GE
# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
# endif
# if !GTEST_DONT_DEFINE_ASSERT_GT
# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
# endif
// C-string Comparisons. All tests treat NULL and any non-NULL string
@ -2071,7 +2036,7 @@ class TestWithParam : public Test, public WithParamInterface<T> {
EXPECT_PRED_FORMAT2 ( : : testing : : internal : : CmpHelperSTRNE , s1 , s2 )
# define EXPECT_STRCASEEQ(s1, s2) \
EXPECT_PRED_FORMAT2 ( : : testing : : internal : : CmpHelperSTRCASEEQ , s1 , s2 )
# define EXPECT_STRCASENE(s1, s2)\
# define EXPECT_STRCASENE(s1, s2) \
EXPECT_PRED_FORMAT2 ( : : testing : : internal : : CmpHelperSTRCASENE , s1 , s2 )
# define ASSERT_STREQ(s1, s2) \
@ -2080,7 +2045,7 @@ class TestWithParam : public Test, public WithParamInterface<T> {
ASSERT_PRED_FORMAT2 ( : : testing : : internal : : CmpHelperSTRNE , s1 , s2 )
# define ASSERT_STRCASEEQ(s1, s2) \
ASSERT_PRED_FORMAT2 ( : : testing : : internal : : CmpHelperSTRCASEEQ , s1 , s2 )
# define ASSERT_STRCASENE(s1, s2)\
# define ASSERT_STRCASENE(s1, s2) \
ASSERT_PRED_FORMAT2 ( : : testing : : internal : : CmpHelperSTRCASENE , s1 , s2 )
// Macros for comparing floating-point numbers.
@ -2097,29 +2062,29 @@ class TestWithParam : public Test, public WithParamInterface<T> {
// FloatingPoint template class in gtest-internal.h if you are
// interested in the implementation details.
# define EXPECT_FLOAT_EQ(val1, val2)\
# define EXPECT_FLOAT_EQ(val1, val2) \
EXPECT_PRED_FORMAT2 ( : : testing : : internal : : CmpHelperFloatingPointEQ < float > , \
val1 , val2 )
# define EXPECT_DOUBLE_EQ(val1, val2)\
# define EXPECT_DOUBLE_EQ(val1, val2) \
EXPECT_PRED_FORMAT2 ( : : testing : : internal : : CmpHelperFloatingPointEQ < double > , \
val1 , val2 )
# define ASSERT_FLOAT_EQ(val1, val2)\
# define ASSERT_FLOAT_EQ(val1, val2) \
ASSERT_PRED_FORMAT2 ( : : testing : : internal : : CmpHelperFloatingPointEQ < float > , \
val1 , val2 )
# define ASSERT_DOUBLE_EQ(val1, val2)\
# define ASSERT_DOUBLE_EQ(val1, val2) \
ASSERT_PRED_FORMAT2 ( : : testing : : internal : : CmpHelperFloatingPointEQ < double > , \
val1 , val2 )
# define EXPECT_NEAR(val1, val2, abs_error)\
EXPECT_PRED_FORMAT3 ( : : testing : : internal : : DoubleNearPredFormat , \
val1 , val2 , abs_error )
# define EXPECT_NEAR(val1, val2, abs_error) \
EXPECT_PRED_FORMAT3 ( : : testing : : internal : : DoubleNearPredFormat , val1 , val2 , \
abs_error )
# define ASSERT_NEAR(val1, val2, abs_error)\
ASSERT_PRED_FORMAT3 ( : : testing : : internal : : DoubleNearPredFormat , \
val1 , val2 , abs_error )
# define ASSERT_NEAR(val1, val2, abs_error) \
ASSERT_PRED_FORMAT3 ( : : testing : : internal : : DoubleNearPredFormat , val1 , val2 , \
abs_error )
// These predicate format functions work on floating-point values, and
// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g.
@ -2133,7 +2098,6 @@ GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2,
GTEST_API_ AssertionResult DoubleLE ( const char * expr1 , const char * expr2 ,
double val1 , double val2 ) ;
# if GTEST_OS_WINDOWS
// Macros that test for HRESULT failure and success, these are only useful
@ -2145,17 +2109,17 @@ GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
// expected result and the actual result with both a human-readable
// string representation of the error, if available, as well as the
// hex result code.
# define EXPECT_HRESULT_SUCCEEDED(expr) \
EXPECT_PRED_FORMAT1 ( : : testing : : internal : : IsHRESULTSuccess , ( expr ) )
# define EXPECT_HRESULT_SUCCEEDED(expr) \
EXPECT_PRED_FORMAT1 ( : : testing : : internal : : IsHRESULTSuccess , ( expr ) )
# define ASSERT_HRESULT_SUCCEEDED(expr) \
ASSERT_PRED_FORMAT1 ( : : testing : : internal : : IsHRESULTSuccess , ( expr ) )
# define ASSERT_HRESULT_SUCCEEDED(expr) \
ASSERT_PRED_FORMAT1 ( : : testing : : internal : : IsHRESULTSuccess , ( expr ) )
# define EXPECT_HRESULT_FAILED(expr) \
EXPECT_PRED_FORMAT1 ( : : testing : : internal : : IsHRESULTFailure , ( expr ) )
# define EXPECT_HRESULT_FAILED(expr) \
EXPECT_PRED_FORMAT1 ( : : testing : : internal : : IsHRESULTFailure , ( expr ) )
# define ASSERT_HRESULT_FAILED(expr) \
ASSERT_PRED_FORMAT1 ( : : testing : : internal : : IsHRESULTFailure , ( expr ) )
# define ASSERT_HRESULT_FAILED(expr) \
ASSERT_PRED_FORMAT1 ( : : testing : : internal : : IsHRESULTFailure , ( expr ) )
# endif // GTEST_OS_WINDOWS
@ -2170,9 +2134,9 @@ GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
// ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed";
//
# define ASSERT_NO_FATAL_FAILURE(statement) \
GTEST_TEST_NO_FATAL_FAILURE_ ( statement , GTEST_FATAL_FAILURE_ )
GTEST_TEST_NO_FATAL_FAILURE_ ( statement , GTEST_FATAL_FAILURE_ )
# define EXPECT_NO_FATAL_FAILURE(statement) \
GTEST_TEST_NO_FATAL_FAILURE_ ( statement , GTEST_NONFATAL_FAILURE_ )
GTEST_TEST_NO_FATAL_FAILURE_ ( statement , GTEST_NONFATAL_FAILURE_ )
// Causes a trace (including the given source file path and line number,
// and the given message) to be included in every test failure message generated
@ -2240,10 +2204,9 @@ class GTEST_API_ ScopedTrace {
// Assuming that each thread maintains its own stack of traces.
// Therefore, a SCOPED_TRACE() would (correctly) only affect the
// assertions in its own thread.
# define SCOPED_TRACE(message) \
: : testing : : ScopedTrace GTEST_CONCAT_TOKEN_ ( gtest_trace_ , __LINE__ ) ( \
__FILE__ , __LINE__ , ( message ) )
# define SCOPED_TRACE(message) \
: : testing : : ScopedTrace GTEST_CONCAT_TOKEN_ ( gtest_trace_ , __LINE__ ) ( \
__FILE__ , __LINE__ , ( message ) )
// Compile-time assertion for type equality.
// StaticAssertTypeEq<type1, type2>() compiles iff type1 and type2 are
@ -2306,14 +2269,14 @@ bool StaticAssertTypeEq() {
// code. GetTestTypeId() is guaranteed to always return the same
// value, as it always calls GetTypeId<>() from the Google Test
// framework.
# define GTEST_TEST(test_case_name, test_name)\
GTEST_TEST_ ( test_case_name , test_name , \
: : testing : : Test , : : testing : : internal : : GetTestTypeId ( ) )
# define GTEST_TEST(test_case_name, test_name) \
GTEST_TEST_ ( test_case_name , test_name , : : testing : : Test , \
: : testing : : internal : : GetTestTypeId ( ) )
// Define this macro to 1 to omit the definition of TEST(), which
// is a generic name and clashes with some other libraries.
# if !GTEST_DONT_DEFINE_TEST
# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name)
# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name)
# endif
// Defines a test that uses a test fixture.
@ -2342,7 +2305,7 @@ bool StaticAssertTypeEq() {
// EXPECT_EQ(b_.size(), 1);
// }
# define TEST_F(test_fixture, test_name)\
# define TEST_F(test_fixture, test_name) \
GTEST_TEST_ ( test_fixture , test_name , test_fixture , \
: : testing : : internal : : GetTypeId < test_fixture > ( ) )
@ -2351,7 +2314,7 @@ bool StaticAssertTypeEq() {
GTEST_API_ std : : string TempDir ( ) ;
# ifdef _MSC_VER
# pragma warning(pop)
# pragma warning(pop)
# endif
} // namespace testing
@ -2366,10 +2329,22 @@ GTEST_API_ std::string TempDir();
// namespace and has an all-caps name.
int RUN_ALL_TESTS ( ) GTEST_MUST_USE_RESULT_ ;
inline int RUN_ALL_TESTS ( ) {
return : : testing : : UnitTest : : GetInstance ( ) - > Run ( ) ;
inline int RUN_ALL_TESTS ( ) { return : : testing : : UnitTest : : GetInstance ( ) - > Run ( ) ; }
# ifdef ARDUINO
inline void gtest_setup ( ) {
// Since Arduino doesn't have a command line, fake out the argc/argv arguments
int argc = 1 ;
const auto arg0 = " PlatformIO " ;
char * argv0 = const_cast < char * > ( arg0 ) ;
char * * argv = & argv0 ;
testing : : InitGoogleTest ( & argc , argv ) ;
}
inline void gtest_loop ( ) { RUN_ALL_TESTS ( ) ; }
# endif
GTEST_DISABLE_MSC_WARNINGS_POP_ ( ) // 4251
# endif // GTEST_INCLUDE_GTEST_GTEST_H_