Chromium Code Reviews| Index: minidump/minidump_string_writer_test.cc |
| diff --git a/minidump/minidump_string_writer_test.cc b/minidump/minidump_string_writer_test.cc |
| index 3501a07babf205d152acd9f30b42efd243c3bd53..8854f444f8334e3604efa52c0a496d4ade51435a 100644 |
| --- a/minidump/minidump_string_writer_test.cc |
| +++ b/minidump/minidump_string_writer_test.cc |
| @@ -22,8 +22,11 @@ |
| #include "base/basictypes.h" |
| #include "base/strings/string16.h" |
| #include "base/strings/stringprintf.h" |
| +#include "base/strings/utf_string_conversions.h" |
| #include "gtest/gtest.h" |
| +#include "minidump/test/minidump_rva_list_test_util.h" |
| #include "minidump/test/minidump_string_writer_test_util.h" |
| +#include "minidump/test/minidump_writable_test_util.h" |
| #include "util/file/string_file_writer.h" |
| namespace crashpad { |
| @@ -194,6 +197,63 @@ TEST(MinidumpStringWriter, MinidumpUTF8StringWriter) { |
| } |
| } |
| +struct MinidumpUTF16StringListWriterTraits { |
| + using MinidumpStringListWriterType = internal::MinidumpUTF16StringListWriter; |
| + static string16 ExpectationForUTF8(const std::string& utf8) { |
| + return base::UTF8ToUTF16(utf8); |
| + } |
| + static string16 ObservationAtRVA(const std::string& file_contents, RVA rva) { |
| + return MinidumpStringAtRVAAsString(file_contents, rva); |
| + } |
| +}; |
| + |
| +struct MinidumpUTF8StringListWriterTraits { |
| + using MinidumpStringListWriterType = internal::MinidumpUTF8StringListWriter; |
| + static std::string ExpectationForUTF8(const std::string& utf8) { |
| + return utf8; |
| + } |
| + static std::string ObservationAtRVA(const std::string& file_contents, |
| + RVA rva) { |
| + return MinidumpUTF8StringAtRVAAsString(file_contents, rva); |
| + } |
| +}; |
| + |
| +template <typename Traits> |
|
Robert Sesek
2014/11/07 14:47:00
There's gtest support for this, too: https://code.
Mark Mentovai
2014/11/07 14:56:48
Robert Sesek wrote:
|
| +void MinidumpStringListTest() { |
| + std::vector<std::string> strings; |
| + strings.push_back(std::string("One")); |
| + strings.push_back(std::string()); |
| + strings.push_back(std::string("3")); |
| + strings.push_back(std::string("\360\237\222\251")); |
| + |
| + typename Traits::MinidumpStringListWriterType string_list_writer; |
| + EXPECT_FALSE(string_list_writer.IsUseful()); |
| + string_list_writer.InitializeFromVector(strings); |
| + EXPECT_TRUE(string_list_writer.IsUseful()); |
| + |
| + StringFileWriter file_writer; |
| + |
| + ASSERT_TRUE(string_list_writer.WriteEverything(&file_writer)); |
| + |
| + const MinidumpRVAList* list = |
| + MinidumpRVAListAtStart(file_writer.string(), strings.size()); |
| + ASSERT_TRUE(list); |
| + |
| + for (size_t index = 0; index < strings.size(); ++index) { |
| + EXPECT_EQ(Traits::ExpectationForUTF8(strings[index]), |
| + Traits::ObservationAtRVA(file_writer.string(), |
| + list->children[index])); |
| + } |
| +} |
| + |
| +TEST(MinidumpStringWriter, MinidumpUTF16StringList) { |
| + MinidumpStringListTest<MinidumpUTF16StringListWriterTraits>(); |
| +} |
| + |
| +TEST(MinidumpStringWriter, MinidumpUTF8StringList) { |
| + MinidumpStringListTest<MinidumpUTF8StringListWriterTraits>(); |
| +} |
| + |
| } // namespace |
| } // namespace test |
| } // namespace crashpad |