Merge pull request #2170 from ngie-eign:issue-2146-ver2
PiperOrigin-RevId: 244069956
This commit is contained in:
commit
a0d60bed4d
@ -4,6 +4,10 @@
|
||||
[![Build Status](https://api.travis-ci.org/google/googletest.svg?branch=master)](https://travis-ci.org/google/googletest)
|
||||
[![Build status](https://ci.appveyor.com/api/projects/status/4o38plt0xbo1ubc8/branch/master?svg=true)](https://ci.appveyor.com/project/GoogleTestAppVeyor/googletest/branch/master)
|
||||
|
||||
**PR FREEZE COMING SOON**
|
||||
|
||||
We are working on a large refactoring that would make it hard to accept external PRs. *Really Soon Now* we will not be accepting new PRs until the refactoring has been completed.
|
||||
|
||||
**Future Plans**:
|
||||
* 1.8.x Release - [the 1.8.x](https://github.com/google/googletest/releases/tag/release-1.8.1) is the last release that works with pre-C++11 compilers. The 1.8.x will not accept any requests for any new features and any bugfix requests will only be accepted if proven "critical"
|
||||
* Post 1.8.x - work to improve/cleanup/pay technical debt. When this work is completed there will be a 1.9.x tagged release
|
||||
|
@ -17,7 +17,7 @@ If all this seems too abstract for you, don't worry - the most important thing t
|
||||
Using Google Mock involves three basic steps:
|
||||
|
||||
1. Use some simple macros to describe the interface you want to mock, and they will expand to the implementation of your mock class;
|
||||
1. Create some mock objects and specify their expectations and behavior using an intuitive syntax;
|
||||
1. Create some mock objects and specify its expectations and behavior using an intuitive syntax;
|
||||
1. Exercise code that uses the mock objects. Google Mock will catch any violation of the expectations as soon as it arises.
|
||||
|
||||
# Why Google Mock? #
|
||||
|
@ -4310,8 +4310,11 @@ TEST(ResultOfTest, WorksForPolymorphicFunctorsIgnoringResultType) {
|
||||
}
|
||||
|
||||
TEST(ResultOfTest, WorksForLambdas) {
|
||||
Matcher<int> matcher =
|
||||
ResultOf([](int str_len) { return std::string(str_len, 'x'); }, "xxx");
|
||||
Matcher<int> matcher = ResultOf(
|
||||
[](int str_len) {
|
||||
return std::string(static_cast<size_t>(str_len), 'x');
|
||||
},
|
||||
"xxx");
|
||||
EXPECT_TRUE(matcher.Matches(3));
|
||||
EXPECT_FALSE(matcher.Matches(1));
|
||||
}
|
||||
@ -5812,11 +5815,11 @@ class BacktrackingBPMTest : public ::testing::Test { };
|
||||
|
||||
// Tests the MaxBipartiteMatching algorithm with square matrices.
|
||||
// The single int param is the # of nodes on each of the left and right sides.
|
||||
class BipartiteTest : public ::testing::TestWithParam<int> { };
|
||||
class BipartiteTest : public ::testing::TestWithParam<size_t> {};
|
||||
|
||||
// Verify all match graphs up to some moderate number of edges.
|
||||
TEST_P(BipartiteTest, Exhaustive) {
|
||||
int nodes = GetParam();
|
||||
size_t nodes = GetParam();
|
||||
MatchMatrix graph(nodes, nodes);
|
||||
do {
|
||||
ElementMatcherPairs matches =
|
||||
@ -5841,7 +5844,7 @@ TEST_P(BipartiteTest, Exhaustive) {
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(AllGraphs, BipartiteTest,
|
||||
::testing::Range(0, 5));
|
||||
::testing::Range(size_t{0}, size_t{5}));
|
||||
|
||||
// Parameterized by a pair interpreted as (LhsSize, RhsSize).
|
||||
class BipartiteNonSquareTest
|
||||
@ -5857,7 +5860,7 @@ TEST_F(BipartiteNonSquareTest, SimpleBacktracking) {
|
||||
// :.......:
|
||||
// 0 1 2
|
||||
MatchMatrix g(4, 3);
|
||||
static const int kEdges[][2] = {{0, 2}, {1, 1}, {2, 1}, {3, 0}};
|
||||
static const size_t kEdges[][2] = {{0, 2}, {1, 1}, {2, 1}, {3, 0}};
|
||||
for (size_t i = 0; i < GTEST_ARRAY_SIZE_(kEdges); ++i) {
|
||||
g.SetEdge(kEdges[i][0], kEdges[i][1], true);
|
||||
}
|
||||
@ -5902,15 +5905,15 @@ class BipartiteRandomTest
|
||||
TEST_P(BipartiteRandomTest, LargerNets) {
|
||||
int nodes = GetParam().first;
|
||||
int iters = GetParam().second;
|
||||
MatchMatrix graph(nodes, nodes);
|
||||
MatchMatrix graph(static_cast<size_t>(nodes), static_cast<size_t>(nodes));
|
||||
|
||||
testing::internal::Int32 seed = GTEST_FLAG(random_seed);
|
||||
auto seed = static_cast<testing::internal::UInt32>(GTEST_FLAG(random_seed));
|
||||
if (seed == 0) {
|
||||
seed = static_cast<testing::internal::Int32>(time(nullptr));
|
||||
seed = static_cast<testing::internal::UInt32>(time(nullptr));
|
||||
}
|
||||
|
||||
for (; iters > 0; --iters, ++seed) {
|
||||
srand(static_cast<int>(seed));
|
||||
srand(static_cast<unsigned int>(seed));
|
||||
graph.Randomize();
|
||||
EXPECT_EQ(FindBacktrackingMaxBPM(graph).size(),
|
||||
internal::FindMaxBipartiteMatching(graph).size())
|
||||
|
@ -78,7 +78,7 @@ macro(config_compiler_and_linker)
|
||||
# http://stackoverflow.com/questions/3232669 explains the issue.
|
||||
set(cxx_base_flags "${cxx_base_flags} -wd4702")
|
||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
set(cxx_base_flags "-Wall -Wshadow -Werror -Wno-error=sign-conversion")
|
||||
set(cxx_base_flags "-Wall -Wshadow -Werror -Wconversion")
|
||||
set(cxx_exception_flags "-fexceptions")
|
||||
set(cxx_no_exception_flags "-fno-exceptions")
|
||||
set(cxx_strict_flags "-W -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline -Wredundant-decls")
|
||||
|
@ -700,7 +700,7 @@ class TypeParameterizedTest {
|
||||
// list.
|
||||
MakeAndRegisterTestInfo(
|
||||
(std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name +
|
||||
"/" + type_names[index])
|
||||
"/" + type_names[static_cast<size_t>(index)])
|
||||
.c_str(),
|
||||
StripTrailingSpaces(GetPrefixUntilComma(test_names)).c_str(),
|
||||
GetTypeName<Type>().c_str(),
|
||||
|
@ -150,6 +150,9 @@ class GTEST_API_ String {
|
||||
// Formats an int value as "%X".
|
||||
static std::string FormatHexInt(int value);
|
||||
|
||||
// Formats an int value as "%X".
|
||||
static std::string FormatHexUInt32(UInt32 value);
|
||||
|
||||
// Formats a byte as "%02X".
|
||||
static std::string FormatByte(unsigned char value);
|
||||
|
||||
|
@ -1354,7 +1354,7 @@ static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {
|
||||
|
||||
if (!use_fork) {
|
||||
static const bool stack_grows_down = StackGrowsDown();
|
||||
const size_t stack_size = getpagesize();
|
||||
const auto stack_size = static_cast<size_t>(getpagesize());
|
||||
// MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
|
||||
void* const stack = mmap(nullptr, stack_size, PROT_READ | PROT_WRITE,
|
||||
MAP_ANON | MAP_PRIVATE, -1, 0);
|
||||
@ -1370,8 +1370,9 @@ static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {
|
||||
void* const stack_top =
|
||||
static_cast<char*>(stack) +
|
||||
(stack_grows_down ? stack_size - kMaxStackAlignment : 0);
|
||||
GTEST_DEATH_TEST_CHECK_(stack_size > kMaxStackAlignment &&
|
||||
reinterpret_cast<intptr_t>(stack_top) % kMaxStackAlignment == 0);
|
||||
GTEST_DEATH_TEST_CHECK_(
|
||||
static_cast<size_t>(stack_size) > kMaxStackAlignment &&
|
||||
reinterpret_cast<uintptr_t>(stack_top) % kMaxStackAlignment == 0);
|
||||
|
||||
child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args);
|
||||
|
||||
|
@ -163,7 +163,7 @@ FilePath FilePath::RemoveFileName() const {
|
||||
const char* const last_sep = FindLastPathSeparator();
|
||||
std::string dir;
|
||||
if (last_sep) {
|
||||
dir = std::string(c_str(), last_sep + 1 - c_str());
|
||||
dir = std::string(c_str(), static_cast<size_t>(last_sep + 1 - c_str()));
|
||||
} else {
|
||||
dir = kCurrentDirectoryString;
|
||||
}
|
||||
|
@ -298,7 +298,8 @@ void ForEach(const Container& c, Functor functor) {
|
||||
// in range [0, v.size()).
|
||||
template <typename E>
|
||||
inline E GetElementOr(const std::vector<E>& v, int i, E default_value) {
|
||||
return (i < 0 || i >= static_cast<int>(v.size())) ? default_value : v[i];
|
||||
return (i < 0 || i >= static_cast<int>(v.size())) ? default_value
|
||||
: v[static_cast<size_t>(i)];
|
||||
}
|
||||
|
||||
// Performs an in-place shuffle of a range of the vector's elements.
|
||||
@ -320,8 +321,11 @@ void ShuffleRange(internal::Random* random, int begin, int end,
|
||||
// http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
|
||||
for (int range_width = end - begin; range_width >= 2; range_width--) {
|
||||
const int last_in_range = begin + range_width - 1;
|
||||
const int selected = begin + random->Generate(range_width);
|
||||
std::swap((*v)[selected], (*v)[last_in_range]);
|
||||
const int selected =
|
||||
begin +
|
||||
static_cast<int>(random->Generate(static_cast<UInt32>(range_width)));
|
||||
std::swap((*v)[static_cast<size_t>(selected)],
|
||||
(*v)[static_cast<size_t>(last_in_range)]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -586,7 +590,7 @@ class GTEST_API_ UnitTestImpl {
|
||||
// total_test_suite_count() - 1. If i is not in that range, returns NULL.
|
||||
const TestSuite* GetTestSuite(int i) const {
|
||||
const int index = GetElementOr(test_suite_indices_, i, -1);
|
||||
return index < 0 ? nullptr : test_suites_[i];
|
||||
return index < 0 ? nullptr : test_suites_[static_cast<size_t>(i)];
|
||||
}
|
||||
|
||||
// Legacy API is deprecated but still available
|
||||
@ -598,7 +602,7 @@ class GTEST_API_ UnitTestImpl {
|
||||
// total_test_suite_count() - 1. If i is not in that range, returns NULL.
|
||||
TestSuite* GetMutableSuiteCase(int i) {
|
||||
const int index = GetElementOr(test_suite_indices_, i, -1);
|
||||
return index < 0 ? nullptr : test_suites_[index];
|
||||
return index < 0 ? nullptr : test_suites_[static_cast<size_t>(index)];
|
||||
}
|
||||
|
||||
// Provides access to the event listener list.
|
||||
@ -1083,8 +1087,8 @@ class StreamingListener : public EmptyTestEventListener {
|
||||
GTEST_CHECK_(sockfd_ != -1)
|
||||
<< "Send() can be called only when there is a connection.";
|
||||
|
||||
const int len = static_cast<int>(message.length());
|
||||
if (write(sockfd_, message.c_str(), len) != len) {
|
||||
const auto len = static_cast<size_t>(message.length());
|
||||
if (write(sockfd_, message.c_str(), len) != static_cast<ssize_t>(len)) {
|
||||
GTEST_LOG_(WARNING)
|
||||
<< "stream_result_to: failed to stream to "
|
||||
<< host_name_ << ":" << port_num_;
|
||||
|
@ -117,7 +117,7 @@ T ReadProcFileField(const std::string& filename, int field) {
|
||||
size_t GetThreadCount() {
|
||||
const std::string filename =
|
||||
(Message() << "/proc/" << getpid() << "/stat").GetString();
|
||||
return ReadProcFileField<int>(filename, 19);
|
||||
return ReadProcFileField<size_t>(filename, 19);
|
||||
}
|
||||
|
||||
#elif GTEST_OS_MAC
|
||||
@ -175,7 +175,7 @@ size_t GetThreadCount() {
|
||||
if (sysctl(mib, miblen, &info, &size, NULL, 0)) {
|
||||
return 0;
|
||||
}
|
||||
return KP_NLWP(info);
|
||||
return static_cast<size_t>(KP_NLWP(info));
|
||||
}
|
||||
#elif GTEST_OS_OPENBSD
|
||||
|
||||
|
@ -70,7 +70,7 @@ const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const {
|
||||
internal::posix::Abort();
|
||||
}
|
||||
|
||||
return array_[index];
|
||||
return array_[static_cast<size_t>(index)];
|
||||
}
|
||||
|
||||
// Returns the number of TestPartResult objects in the array.
|
||||
|
@ -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,10 @@ 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;
|
||||
auto 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 +1769,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::FormatHexUInt32(code_point) + ")";
|
||||
}
|
||||
|
||||
char str[5]; // Big enough for the largest valid code point.
|
||||
@ -1808,12 +1810,15 @@ 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 auto first_u = static_cast<UInt32>(first);
|
||||
const auto second_u = static_cast<UInt32>(second);
|
||||
const UInt32 mask = (1 << 10) - 1;
|
||||
return (sizeof(wchar_t) == 2) ?
|
||||
(((first & mask) << 10) | (second & 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);
|
||||
return (sizeof(wchar_t) == 2)
|
||||
? (((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.
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -3421,14 +3431,14 @@ void TestEventRepeater::Name(const Type& parameter) { \
|
||||
}
|
||||
// This defines a member that forwards the call to all listeners in reverse
|
||||
// order.
|
||||
#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \
|
||||
void TestEventRepeater::Name(const Type& parameter) { \
|
||||
if (forwarding_enabled_) { \
|
||||
for (int i = static_cast<int>(listeners_.size()) - 1; i >= 0; i--) { \
|
||||
listeners_[i]->Name(parameter); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \
|
||||
void TestEventRepeater::Name(const Type& parameter) { \
|
||||
if (forwarding_enabled_) { \
|
||||
for (size_t i = listeners_.size(); i != 0; i--) { \
|
||||
listeners_[i - 1]->Name(parameter); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest)
|
||||
GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest)
|
||||
@ -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,7 +4079,7 @@ static std::string FormatEpochTimeInMillisAsRFC3339(TimeInMillis ms) {
|
||||
String::FormatIntWidth2(time_struct.tm_sec) + "Z";
|
||||
}
|
||||
|
||||
static inline std::string Indent(int width) {
|
||||
static inline std::string Indent(size_t width) {
|
||||
return std::string(width, ' ');
|
||||
}
|
||||
|
||||
@ -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.
|
||||
|
@ -884,10 +884,12 @@ class MockDeathTestFactory : public DeathTestFactory {
|
||||
int AssumeRoleCalls() const { return assume_role_calls_; }
|
||||
int WaitCalls() const { return wait_calls_; }
|
||||
size_t PassedCalls() const { return passed_args_.size(); }
|
||||
bool PassedArgument(int n) const { return passed_args_[n]; }
|
||||
bool PassedArgument(int n) const {
|
||||
return passed_args_[static_cast<size_t>(n)];
|
||||
}
|
||||
size_t AbortCalls() const { return abort_args_.size(); }
|
||||
DeathTest::AbortReason AbortArgument(int n) const {
|
||||
return abort_args_[n];
|
||||
return abort_args_[static_cast<size_t>(n)];
|
||||
}
|
||||
bool TestDeleted() const { return test_deleted_; }
|
||||
|
||||
|
@ -1048,7 +1048,7 @@ class AtomicCounterWithMutex {
|
||||
pthread_mutex_init(&memory_barrier_mutex, nullptr));
|
||||
GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&memory_barrier_mutex));
|
||||
|
||||
SleepMilliseconds(random_.Generate(30));
|
||||
SleepMilliseconds(static_cast<int>(random_.Generate(30)));
|
||||
|
||||
GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&memory_barrier_mutex));
|
||||
GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&memory_barrier_mutex));
|
||||
@ -1056,7 +1056,7 @@ class AtomicCounterWithMutex {
|
||||
// On Windows, performing an interlocked access puts up a memory barrier.
|
||||
volatile LONG dummy = 0;
|
||||
::InterlockedIncrement(&dummy);
|
||||
SleepMilliseconds(random_.Generate(30));
|
||||
SleepMilliseconds(static_cast<int>(random_.Generate(30)));
|
||||
::InterlockedIncrement(&dummy);
|
||||
#else
|
||||
# error "Memory barrier not implemented on this platform."
|
||||
|
@ -899,23 +899,23 @@ TEST(ContainerUtilityDeathTest, ShuffleRange) {
|
||||
|
||||
class VectorShuffleTest : public Test {
|
||||
protected:
|
||||
static const int kVectorSize = 20;
|
||||
static const size_t kVectorSize = 20;
|
||||
|
||||
VectorShuffleTest() : random_(1) {
|
||||
for (int i = 0; i < kVectorSize; i++) {
|
||||
for (int i = 0; i < static_cast<int>(kVectorSize); i++) {
|
||||
vector_.push_back(i);
|
||||
}
|
||||
}
|
||||
|
||||
static bool VectorIsCorrupt(const TestingVector& vector) {
|
||||
if (kVectorSize != static_cast<int>(vector.size())) {
|
||||
if (kVectorSize != vector.size()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool found_in_vector[kVectorSize] = { false };
|
||||
for (size_t i = 0; i < vector.size(); i++) {
|
||||
const int e = vector[i];
|
||||
if (e < 0 || e >= kVectorSize || found_in_vector[e]) {
|
||||
if (e < 0 || e >= static_cast<int>(kVectorSize) || found_in_vector[e]) {
|
||||
return true;
|
||||
}
|
||||
found_in_vector[e] = true;
|
||||
@ -932,7 +932,7 @@ class VectorShuffleTest : public Test {
|
||||
|
||||
static bool RangeIsShuffled(const TestingVector& vector, int begin, int end) {
|
||||
for (int i = begin; i < end; i++) {
|
||||
if (i != vector[i]) {
|
||||
if (i != vector[static_cast<size_t>(i)]) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -956,7 +956,7 @@ class VectorShuffleTest : public Test {
|
||||
TestingVector vector_;
|
||||
}; // class VectorShuffleTest
|
||||
|
||||
const int VectorShuffleTest::kVectorSize;
|
||||
const size_t VectorShuffleTest::kVectorSize;
|
||||
|
||||
TEST_F(VectorShuffleTest, HandlesEmptyRange) {
|
||||
// Tests an empty range at the beginning...
|
||||
@ -1008,7 +1008,7 @@ TEST_F(VectorShuffleTest, ShufflesEntireVector) {
|
||||
// Tests the first and last elements in particular to ensure that
|
||||
// there are no off-by-one problems in our shuffle algorithm.
|
||||
EXPECT_NE(0, vector_[0]);
|
||||
EXPECT_NE(kVectorSize - 1, vector_[kVectorSize - 1]);
|
||||
EXPECT_NE(static_cast<int>(kVectorSize - 1), vector_[kVectorSize - 1]);
|
||||
}
|
||||
|
||||
TEST_F(VectorShuffleTest, ShufflesStartOfVector) {
|
||||
@ -1018,7 +1018,8 @@ TEST_F(VectorShuffleTest, ShufflesStartOfVector) {
|
||||
|
||||
ASSERT_PRED1(VectorIsNotCorrupt, vector_);
|
||||
EXPECT_PRED3(RangeIsShuffled, vector_, 0, kRangeSize);
|
||||
EXPECT_PRED3(RangeIsUnshuffled, vector_, kRangeSize, kVectorSize);
|
||||
EXPECT_PRED3(RangeIsUnshuffled, vector_, kRangeSize,
|
||||
static_cast<int>(kVectorSize));
|
||||
}
|
||||
|
||||
TEST_F(VectorShuffleTest, ShufflesEndOfVector) {
|
||||
@ -1027,23 +1028,25 @@ TEST_F(VectorShuffleTest, ShufflesEndOfVector) {
|
||||
|
||||
ASSERT_PRED1(VectorIsNotCorrupt, vector_);
|
||||
EXPECT_PRED3(RangeIsUnshuffled, vector_, 0, kRangeSize);
|
||||
EXPECT_PRED3(RangeIsShuffled, vector_, kRangeSize, kVectorSize);
|
||||
EXPECT_PRED3(RangeIsShuffled, vector_, kRangeSize,
|
||||
static_cast<int>(kVectorSize));
|
||||
}
|
||||
|
||||
TEST_F(VectorShuffleTest, ShufflesMiddleOfVector) {
|
||||
int kRangeSize = kVectorSize/3;
|
||||
const int kRangeSize = static_cast<int>(kVectorSize) / 3;
|
||||
ShuffleRange(&random_, kRangeSize, 2*kRangeSize, &vector_);
|
||||
|
||||
ASSERT_PRED1(VectorIsNotCorrupt, vector_);
|
||||
EXPECT_PRED3(RangeIsUnshuffled, vector_, 0, kRangeSize);
|
||||
EXPECT_PRED3(RangeIsShuffled, vector_, kRangeSize, 2*kRangeSize);
|
||||
EXPECT_PRED3(RangeIsUnshuffled, vector_, 2*kRangeSize, kVectorSize);
|
||||
EXPECT_PRED3(RangeIsUnshuffled, vector_, 2 * kRangeSize,
|
||||
static_cast<int>(kVectorSize));
|
||||
}
|
||||
|
||||
TEST_F(VectorShuffleTest, ShufflesRepeatably) {
|
||||
TestingVector vector2;
|
||||
for (int i = 0; i < kVectorSize; i++) {
|
||||
vector2.push_back(i);
|
||||
for (size_t i = 0; i < kVectorSize; i++) {
|
||||
vector2.push_back(static_cast<int>(i));
|
||||
}
|
||||
|
||||
random_.Reseed(1234);
|
||||
@ -1054,7 +1057,7 @@ TEST_F(VectorShuffleTest, ShufflesRepeatably) {
|
||||
ASSERT_PRED1(VectorIsNotCorrupt, vector_);
|
||||
ASSERT_PRED1(VectorIsNotCorrupt, vector2);
|
||||
|
||||
for (int i = 0; i < kVectorSize; i++) {
|
||||
for (size_t i = 0; i < kVectorSize; i++) {
|
||||
EXPECT_EQ(vector_[i], vector2[i]) << " where i is " << i;
|
||||
}
|
||||
}
|
||||
@ -3496,7 +3499,7 @@ std::string EditsToString(const std::vector<EditType>& edits) {
|
||||
std::vector<size_t> CharsToIndices(const std::string& str) {
|
||||
std::vector<size_t> out;
|
||||
for (size_t i = 0; i < str.size(); ++i) {
|
||||
out.push_back(str[i]);
|
||||
out.push_back(static_cast<size_t>(str[i]));
|
||||
}
|
||||
return out;
|
||||
}
|
||||
@ -5654,11 +5657,11 @@ class ParseFlagsTest : public Test {
|
||||
|
||||
// Asserts that two narrow or wide string arrays are equal.
|
||||
template <typename CharType>
|
||||
static void AssertStringArrayEq(size_t size1, CharType** array1,
|
||||
size_t size2, CharType** array2) {
|
||||
static void AssertStringArrayEq(int size1, CharType** array1, int size2,
|
||||
CharType** array2) {
|
||||
ASSERT_EQ(size1, size2) << " Array sizes different.";
|
||||
|
||||
for (size_t i = 0; i != size1; i++) {
|
||||
for (int i = 0; i != size1; i++) {
|
||||
ASSERT_STREQ(array1[i], array2[i]) << " where i == " << i;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user