Break out redundant tests into a routine

Bug: crashpad:263
Change-Id: Ib6f05f5e7b91a434e54e0a8d6cd55078b2bf84f5
Reviewed-on: https://chromium-review.googlesource.com/c/1387269
Commit-Queue: Vlad Tsyrklevich <vtsyrklevich@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
This commit is contained in:
Vlad Tsyrklevich 2018-12-20 11:57:49 -08:00 committed by Commit Bot
parent 4e3be595f3
commit 3f7d4d7d09

View File

@ -304,6 +304,23 @@ class ReadCStringTest : public MultiprocessAdaptor {
long_string_address);
}
void Compare(ProcessMemory& memory, VMAddress address, const char* str) {
std::string result;
if (limit_size_) {
ASSERT_TRUE(
memory.ReadCStringSizeLimited(address, strlen(str) + 1, &result));
EXPECT_EQ(result, str);
ASSERT_TRUE(
memory.ReadCStringSizeLimited(address, strlen(str) + 2, &result));
EXPECT_EQ(result, str);
EXPECT_FALSE(
memory.ReadCStringSizeLimited(address, strlen(str), &result));
} else {
ASSERT_TRUE(memory.ReadCString(address, &result));
EXPECT_EQ(result, str);
}
}
void DoTest(ProcessType process,
VMAddress const_empty_address,
VMAddress const_short_address,
@ -313,51 +330,12 @@ class ReadCStringTest : public MultiprocessAdaptor {
ProcessMemoryNative memory;
ASSERT_TRUE(memory.Initialize(process));
std::string result;
if (limit_size_) {
ASSERT_TRUE(memory.ReadCStringSizeLimited(
const_empty_address, arraysize(kConstCharEmpty), &result));
EXPECT_EQ(result, kConstCharEmpty);
ASSERT_TRUE(memory.ReadCStringSizeLimited(
const_short_address, arraysize(kConstCharShort), &result));
EXPECT_EQ(result, kConstCharShort);
EXPECT_FALSE(memory.ReadCStringSizeLimited(
const_short_address, arraysize(kConstCharShort) - 1, &result));
ASSERT_TRUE(
memory.ReadCStringSizeLimited(local_empty_address, 1, &result));
EXPECT_EQ(result, "");
ASSERT_TRUE(memory.ReadCStringSizeLimited(
local_short_address, strlen(SHORT_LOCAL_STRING) + 1, &result));
EXPECT_EQ(result, SHORT_LOCAL_STRING);
EXPECT_FALSE(memory.ReadCStringSizeLimited(
local_short_address, strlen(SHORT_LOCAL_STRING), &result));
Compare(memory, const_empty_address, kConstCharEmpty);
Compare(memory, const_short_address, kConstCharShort);
Compare(memory, local_empty_address, "");
Compare(memory, local_short_address, SHORT_LOCAL_STRING);
std::string long_string_for_comparison = MakeLongString();
ASSERT_TRUE(memory.ReadCStringSizeLimited(
long_string_address, long_string_for_comparison.size() + 1, &result));
EXPECT_EQ(result, long_string_for_comparison);
EXPECT_FALSE(memory.ReadCStringSizeLimited(
long_string_address, long_string_for_comparison.size(), &result));
} else {
ASSERT_TRUE(memory.ReadCString(const_empty_address, &result));
EXPECT_EQ(result, kConstCharEmpty);
ASSERT_TRUE(memory.ReadCString(const_short_address, &result));
EXPECT_EQ(result, kConstCharShort);
ASSERT_TRUE(memory.ReadCString(local_empty_address, &result));
EXPECT_EQ(result, "");
ASSERT_TRUE(memory.ReadCString(local_short_address, &result));
EXPECT_EQ(result, SHORT_LOCAL_STRING);
ASSERT_TRUE(memory.ReadCString(long_string_address, &result));
EXPECT_EQ(result, MakeLongString());
}
Compare(memory, long_string_address, long_string_for_comparison.c_str());
}
const bool limit_size_;