Index: minidump/minidump_string_writer_test.cc |
diff --git a/minidump/minidump_string_writer_test.cc b/minidump/minidump_string_writer_test.cc |
index 0bd177173535f3313381ea3d7a0565ac422fff4e..8221994095b6ec16e00f511f192d4bf6d035c44b 100644 |
--- a/minidump/minidump_string_writer_test.cc |
+++ b/minidump/minidump_string_writer_test.cc |
@@ -22,16 +22,13 @@ |
#include "base/strings/string16.h" |
#include "base/strings/stringprintf.h" |
#include "gtest/gtest.h" |
+#include "minidump/test/minidump_string_writer_test_util.h" |
#include "util/file/string_file_writer.h" |
namespace crashpad { |
namespace test { |
namespace { |
-const MINIDUMP_STRING* MinidumpStringCast(const StringFileWriter& file_writer) { |
- return reinterpret_cast<const MINIDUMP_STRING*>(&file_writer.string()[0]); |
-} |
- |
TEST(MinidumpStringWriter, MinidumpUTF16StringWriter) { |
StringFileWriter file_writer; |
@@ -41,9 +38,11 @@ TEST(MinidumpStringWriter, MinidumpUTF16StringWriter) { |
crashpad::internal::MinidumpUTF16StringWriter string_writer; |
EXPECT_TRUE(string_writer.WriteEverything(&file_writer)); |
ASSERT_EQ(6u, file_writer.string().size()); |
- const MINIDUMP_STRING* minidump_string = MinidumpStringCast(file_writer); |
- EXPECT_EQ(0u, minidump_string->Length); |
- EXPECT_EQ(0, minidump_string->Buffer[0]); |
+ |
+ const MINIDUMP_STRING* minidump_string = |
+ MinidumpStringAtRVA(file_writer.string(), 0); |
+ EXPECT_TRUE(minidump_string); |
+ EXPECT_EQ(string16(), MinidumpStringAtRVAAsString(file_writer.string(), 0)); |
} |
const struct { |
@@ -88,14 +87,14 @@ TEST(MinidumpStringWriter, MinidumpUTF16StringWriter) { |
expected_utf16_units_with_nul * sizeof(MINIDUMP_STRING::Buffer[0]); |
ASSERT_EQ(sizeof(MINIDUMP_STRING) + expected_utf16_bytes, |
file_writer.string().size()); |
- const MINIDUMP_STRING* minidump_string = MinidumpStringCast(file_writer); |
- EXPECT_EQ( |
- kTestData[index].output_length * sizeof(minidump_string->Buffer[0]), |
- minidump_string->Length); |
- EXPECT_EQ(0, |
- base::c16memcmp(kTestData[index].output_string, |
- minidump_string->Buffer, |
- expected_utf16_units_with_nul)); |
+ |
+ const MINIDUMP_STRING* minidump_string = |
+ MinidumpStringAtRVA(file_writer.string(), 0); |
+ EXPECT_TRUE(minidump_string); |
+ string16 expect_string = string16(kTestData[index].output_string, |
+ kTestData[index].output_length); |
+ EXPECT_EQ(expect_string, |
+ MinidumpStringAtRVAAsString(file_writer.string(), 0)); |
} |
} |
@@ -122,27 +121,21 @@ TEST(MinidumpStringWriter, ConvertInvalidUTF8ToUTF16) { |
// The requirements for conversion of invalid UTF-8 input are lax. Make sure |
// that at least enough data was written for a string that has one unit and |
// a NUL terminator, make sure that the length field matches the length of |
- // data written, make sure the data is NUL-terminated, and make sure that at |
- // least one U+FFFD replacement character was written. |
- ASSERT_GE(file_writer.string().size(), |
- sizeof(MINIDUMP_STRING) + 2 * sizeof(MINIDUMP_STRING::Buffer[0])); |
- const MINIDUMP_STRING* minidump_string = MinidumpStringCast(file_writer); |
+ // data written, and make sure that at least one U+FFFD replacement |
+ // character was written. |
+ const MINIDUMP_STRING* minidump_string = |
+ MinidumpStringAtRVA(file_writer.string(), 0); |
+ EXPECT_TRUE(minidump_string); |
EXPECT_EQ(file_writer.string().size() - sizeof(MINIDUMP_STRING) - |
sizeof(MINIDUMP_STRING::Buffer[0]), |
minidump_string->Length); |
- size_t out_units = |
- minidump_string->Length / sizeof(minidump_string->Buffer[0]); |
- EXPECT_EQ(0, minidump_string->Buffer[out_units]); |
- EXPECT_NE(nullptr, |
- base::c16memchr(minidump_string->Buffer, 0xfffd, out_units)); |
+ string16 output_string = |
+ MinidumpStringAtRVAAsString(file_writer.string(), 0); |
+ EXPECT_FALSE(output_string.empty()); |
+ EXPECT_NE(string16::npos, output_string.find(0xfffd)); |
} |
} |
-const MinidumpUTF8String* MinidumpUTF8StringCast( |
- const StringFileWriter& file_writer) { |
- return reinterpret_cast<const MinidumpUTF8String*>(&file_writer.string()[0]); |
-} |
- |
TEST(MinidumpStringWriter, MinidumpUTF8StringWriter) { |
StringFileWriter file_writer; |
@@ -152,10 +145,12 @@ TEST(MinidumpStringWriter, MinidumpUTF8StringWriter) { |
crashpad::internal::MinidumpUTF8StringWriter string_writer; |
EXPECT_TRUE(string_writer.WriteEverything(&file_writer)); |
ASSERT_EQ(5u, file_writer.string().size()); |
+ |
const MinidumpUTF8String* minidump_string = |
- MinidumpUTF8StringCast(file_writer); |
- EXPECT_EQ(0u, minidump_string->Length); |
- EXPECT_EQ(0, minidump_string->Buffer[0]); |
+ MinidumpUTF8StringAtRVA(file_writer.string(), 0); |
+ EXPECT_TRUE(minidump_string); |
+ EXPECT_EQ(std::string(), |
+ MinidumpUTF8StringAtRVAAsString(file_writer.string(), 0)); |
} |
const struct { |
@@ -189,13 +184,12 @@ TEST(MinidumpStringWriter, MinidumpUTF8StringWriter) { |
const size_t expected_utf8_bytes_with_nul = kTestData[index].length + 1; |
ASSERT_EQ(sizeof(MinidumpUTF8String) + expected_utf8_bytes_with_nul, |
file_writer.string().size()); |
+ |
const MinidumpUTF8String* minidump_string = |
- MinidumpUTF8StringCast(file_writer); |
- EXPECT_EQ(kTestData[index].length, minidump_string->Length); |
- EXPECT_EQ(0, |
- memcmp(kTestData[index].string, |
- minidump_string->Buffer, |
- expected_utf8_bytes_with_nul)); |
+ MinidumpUTF8StringAtRVA(file_writer.string(), 0); |
+ EXPECT_TRUE(minidump_string); |
+ EXPECT_EQ(test_string, |
+ MinidumpUTF8StringAtRVAAsString(file_writer.string(), 0)); |
} |
} |