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> |
+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 |