@ -446,7 +446,8 @@ std::string UnitTestOptions::GetOutputFormat() {
const char * const colon = strchr ( gtest_output_flag , ' : ' ) ;
return ( colon = = nullptr )
? std : : string ( gtest_output_flag )
: std : : string ( gtest_output_flag , colon - gtest_output_flag ) ;
: std : : string ( gtest_output_flag ,
static_cast < size_t > ( colon - gtest_output_flag ) ) ;
}
// Returns the name of the requested output file, or the default if none
@ -1240,9 +1241,11 @@ std::string CreateUnifiedDiff(const std::vector<std::string>& left,
for ( ; edit_i < edits . size ( ) ; + + edit_i ) {
if ( n_suffix > = context ) {
// Continue only if the next hunk is very close.
std : : vector < EditType > : : const_iterator it = edits . begin ( ) + edit_i ;
std : : vector < EditType > : : const_iterator it = edits . begin ( ) +
static_cast < int > ( edit_i ) ;
while ( it ! = edits . end ( ) & & * it = = kMatch ) + + it ;
if ( it = = edits . end ( ) | | ( it - edits . begin ( ) ) - edit_i > = context ) {
if ( it = = edits . end ( ) | |
static_cast < size_t > ( it - edits . begin ( ) ) - edit_i > = context ) {
// There is no next edit or it is too far away.
break ;
}
@ -1767,7 +1770,7 @@ inline UInt32 ChopLowBits(UInt32* bits, int n) {
// to "(Invalid Unicode 0xXXXXXXXX)".
std : : string CodePointToUtf8 ( UInt32 code_point ) {
if ( code_point > kMaxCodePoint4 ) {
return " (Invalid Unicode 0x " + String : : FormatHexInt ( code_point ) + " ) " ;
return " (Invalid Unicode 0x " + String : : FormatHexU Int32 ( code_point ) + " ) " ;
}
char str [ 5 ] ; // Big enough for the largest valid code point.
@ -1808,12 +1811,14 @@ inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
// Creates a Unicode code point from UTF16 surrogate pair.
inline UInt32 CreateCodePointFromUtf16SurrogatePair ( wchar_t first ,
wchar_t second ) {
const UInt32 first_u = static_cast < UInt32 > ( first ) ;
const UInt32 second_u = static_cast < UInt32 > ( second ) ;
const UInt32 mask = ( 1 < < 10 ) - 1 ;
return ( sizeof ( wchar_t ) = = 2 ) ?
( ( ( first & mask ) < < 10 ) | ( second & mask ) ) + 0x10000 :
( ( ( first_u & mask ) < < 10 ) | ( second_u & mask ) ) + 0x10000 :
// This function should not be called when the condition is
// false, but we provide a sensible default in case it is.
static_cast < UInt32 > ( first ) ;
first_u ;
}
// Converts a wide string to a narrow string in UTF-8 encoding.
@ -1970,12 +1975,17 @@ std::string String::FormatIntWidth2(int value) {
}
// Formats an int value as "%X".
std : : string String : : FormatHexInt ( int value ) {
std : : string String : : FormatHexUInt32 ( UInt32 value ) {
std : : stringstream ss ;
ss < < std : : hex < < std : : uppercase < < value ;
return ss . str ( ) ;
}
// Formats an int value as "%X".
std : : string String : : FormatHexInt ( int value ) {
return FormatHexUInt32 ( static_cast < UInt32 > ( value ) ) ;
}
// Formats a byte as "%02X".
std : : string String : : FormatByte ( unsigned char value ) {
std : : stringstream ss ;
@ -1992,7 +2002,7 @@ std::string StringStreamToString(::std::stringstream* ss) {
const char * const end = start + str . length ( ) ;
std : : string result ;
result . reserve ( 2 * ( end - start ) ) ;
result . reserve ( static_cast < size_t > ( 2 * ( end - start ) ) ) ;
for ( const char * ch = start ; ch ! = end ; + + ch ) {
if ( * ch = = ' \0 ' ) {
result + = " \\ 0 " ; // Replaces NUL with "\\0";
@ -2036,7 +2046,7 @@ TestResult::~TestResult() {
const TestPartResult & TestResult : : GetTestPartResult ( int i ) const {
if ( i < 0 | | i > = total_part_count ( ) )
internal : : posix : : Abort ( ) ;
return test_part_results_ . at ( i ) ;
return test_part_results_ . at ( static_cast < size_t > ( i ) ) ;
}
// Returns the i-th test property. i can range from 0 to
@ -2045,7 +2055,7 @@ const TestPartResult& TestResult::GetTestPartResult(int i) const {
const TestProperty & TestResult : : GetTestProperty ( int i ) const {
if ( i < 0 | | i > = test_property_count ( ) )
internal : : posix : : Abort ( ) ;
return test_properties_ . at ( i ) ;
return test_properties_ . at ( static_cast < size_t > ( i ) ) ;
}
// Clears the test part results.
@ -2776,14 +2786,14 @@ TestSuite::~TestSuite() {
// total_test_count() - 1. If i is not in that range, returns NULL.
const TestInfo * TestSuite : : GetTestInfo ( int i ) const {
const int index = GetElementOr ( test_indices_ , i , - 1 ) ;
return index < 0 ? nullptr : test_info_list_ [ index ] ;
return index < 0 ? nullptr : test_info_list_ [ static_cast < size_t > ( index ) ] ;
}
// Returns the i-th test among all the tests. i can range from 0 to
// total_test_count() - 1. If i is not in that range, returns NULL.
TestInfo * TestSuite : : GetMutableTestInfo ( int i ) {
const int index = GetElementOr ( test_indices_ , i , - 1 ) ;
return index < 0 ? nullptr : test_info_list_ [ index ] ;
return index < 0 ? nullptr : test_info_list_ [ static_cast < size_t > ( index ) ] ;
}
// Adds a test to this test suite. Will delete the test upon
@ -3401,7 +3411,7 @@ void TestEventRepeater::Append(TestEventListener *listener) {
TestEventListener * TestEventRepeater : : Release ( TestEventListener * listener ) {
for ( size_t i = 0 ; i < listeners_ . size ( ) ; + + i ) {
if ( listeners_ [ i ] = = listener ) {
listeners_ . erase ( listeners_ . begin ( ) + i ) ;
listeners_ . erase ( listeners_ . begin ( ) + static_cast < int > ( i ) ) ;
return listener ;
}
}
@ -3424,8 +3434,8 @@ void TestEventRepeater::Name(const Type& parameter) { \
# define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \
void TestEventRepeater : : Name ( const Type & parameter ) { \
if ( forwarding_enabled_ ) { \
for ( in t i = static_cast < int > ( listeners_ . size ( ) ) - 1 ; i > = 0 ; i - - ) { \
listeners_ [ i ] - > Name ( parameter ) ; \
for ( size_ t i = listeners_ . size ( ) ; i ! = 0 ; i - - ) { \
listeners_ [ i - 1 ] - > Name ( parameter ) ; \
} \
} \
}
@ -3465,8 +3475,8 @@ void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test,
void TestEventRepeater : : OnTestIterationEnd ( const UnitTest & unit_test ,
int iteration ) {
if ( forwarding_enabled_ ) {
for ( int i = static_cast < int > ( listeners_ . size ( ) ) - 1 ; i > = 0 ; i - - ) {
listeners_ [ i ] - > OnTestIterationEnd ( unit_test , iteration ) ;
for ( size_t i = listeners_ . size ( ) ; i > 0 ; i - - ) {
listeners_ [ i - 1 ] - > OnTestIterationEnd ( unit_test , iteration ) ;
}
}
}
@ -4069,8 +4079,8 @@ static std::string FormatEpochTimeInMillisAsRFC3339(TimeInMillis ms) {
String : : FormatIntWidth2 ( time_struct . tm_sec ) + " Z " ;
}
static inline std : : string Indent ( in t width ) {
return std : : string ( width , ' ' ) ;
static inline std : : string Indent ( size_ t width ) {
return std : : string ( static_cast < size_t > ( width ) , ' ' ) ;
}
void JsonUnitTestResultPrinter : : OutputJsonKey (
@ -4726,8 +4736,7 @@ void UnitTest::AddTestPartResult(
if ( impl_ - > gtest_trace_stack ( ) . size ( ) > 0 ) {
msg < < " \n " < < GTEST_NAME_ < < " trace: " ;
for ( int i = static_cast < int > ( impl_ - > gtest_trace_stack ( ) . size ( ) ) ;
i > 0 ; - - i ) {
for ( size_t i = impl_ - > gtest_trace_stack ( ) . size ( ) ; i > 0 ; - - i ) {
const internal : : TraceInfo & trace = impl_ - > gtest_trace_stack ( ) [ i - 1 ] ;
msg < < " \n " < < internal : : FormatFileLocation ( trace . file , trace . line )
< < " " < < trace . message ;
@ -5237,7 +5246,7 @@ bool UnitTestImpl::RunAllTests() {
// Shuffles test suites and tests if requested.
if ( has_tests_to_run & & GTEST_FLAG ( shuffle ) ) {
random ( ) - > Reseed ( random_seed_ ) ;
random ( ) - > Reseed ( static_cast < UInt32 > ( random_seed_ ) ) ;
// This should be done before calling OnTestIterationStart(),
// such that a test event listener can see the actual test order
// in the event.