| Index: minidump/minidump_module_crashpad_info_writer_test.cc
|
| diff --git a/minidump/minidump_module_crashpad_info_writer_test.cc b/minidump/minidump_module_crashpad_info_writer_test.cc
|
| index 854771d258de25ce60493a8111e9e7e7db9c7f73..47aa760187312fb59af3d615540397a0f21b1113 100644
|
| --- a/minidump/minidump_module_crashpad_info_writer_test.cc
|
| +++ b/minidump/minidump_module_crashpad_info_writer_test.cc
|
| @@ -70,6 +70,8 @@ TEST(MinidumpModuleCrashpadInfoWriter, EmptyModule) {
|
|
|
| EXPECT_EQ(MinidumpModuleCrashpadInfo::kVersion, module->version);
|
| EXPECT_EQ(0u, module->minidump_module_list_index);
|
| + EXPECT_EQ(0u, module->list_annotations.DataSize);
|
| + EXPECT_EQ(0u, module->list_annotations.Rva);
|
| EXPECT_EQ(0u, module->simple_annotations.DataSize);
|
| EXPECT_EQ(0u, module->simple_annotations.Rva);
|
| }
|
| @@ -78,6 +80,8 @@ TEST(MinidumpModuleCrashpadInfoWriter, FullModule) {
|
| const uint32_t kMinidumpModuleListIndex = 1;
|
| const char kKey[] = "key";
|
| const char kValue[] = "value";
|
| + const char kEntry[] = "entry";
|
| + std::vector<std::string> vector(1, std::string(kEntry));
|
|
|
| StringFileWriter file_writer;
|
|
|
| @@ -86,6 +90,10 @@ TEST(MinidumpModuleCrashpadInfoWriter, FullModule) {
|
| auto module_writer =
|
| make_scoped_ptr(new MinidumpModuleCrashpadInfoWriter());
|
| module_writer->SetMinidumpModuleListIndex(kMinidumpModuleListIndex);
|
| + auto string_list_writer =
|
| + make_scoped_ptr(new internal::MinidumpUTF8StringListWriter());
|
| + string_list_writer->InitializeFromVector(vector);
|
| + module_writer->SetListAnnotations(string_list_writer.Pass());
|
| auto simple_string_dictionary_writer =
|
| make_scoped_ptr(new MinidumpSimpleStringDictionaryWriter());
|
| auto simple_string_dictionary_entry_writer =
|
| @@ -101,8 +109,11 @@ TEST(MinidumpModuleCrashpadInfoWriter, FullModule) {
|
| ASSERT_EQ(sizeof(MinidumpModuleCrashpadInfoList) +
|
| sizeof(MINIDUMP_LOCATION_DESCRIPTOR) +
|
| sizeof(MinidumpModuleCrashpadInfo) +
|
| + sizeof(MinidumpRVAList) +
|
| + sizeof(RVA) +
|
| sizeof(MinidumpSimpleStringDictionary) +
|
| sizeof(MinidumpSimpleStringDictionaryEntry) +
|
| + sizeof(MinidumpUTF8String) + arraysize(kEntry) + 2 + // padding
|
| sizeof(MinidumpUTF8String) + arraysize(kKey) +
|
| sizeof(MinidumpUTF8String) + arraysize(kValue),
|
| file_writer.string().size());
|
| @@ -118,9 +129,20 @@ TEST(MinidumpModuleCrashpadInfoWriter, FullModule) {
|
|
|
| EXPECT_EQ(MinidumpModuleCrashpadInfo::kVersion, module->version);
|
| EXPECT_EQ(kMinidumpModuleListIndex, module->minidump_module_list_index);
|
| + EXPECT_NE(0u, module->list_annotations.DataSize);
|
| + EXPECT_NE(0u, module->list_annotations.Rva);
|
| EXPECT_NE(0u, module->simple_annotations.DataSize);
|
| EXPECT_NE(0u, module->simple_annotations.Rva);
|
|
|
| + const MinidumpRVAList* list_annotations =
|
| + MinidumpWritableAtLocationDescriptor<MinidumpRVAList>(
|
| + file_writer.string(), module->list_annotations);
|
| + ASSERT_TRUE(list_annotations);
|
| +
|
| + ASSERT_EQ(1u, list_annotations->count);
|
| + EXPECT_EQ(kEntry, MinidumpUTF8StringAtRVAAsString(
|
| + file_writer.string(), list_annotations->children[0]));
|
| +
|
| const MinidumpSimpleStringDictionary* simple_annotations =
|
| MinidumpWritableAtLocationDescriptor<MinidumpSimpleStringDictionary>(
|
| file_writer.string(), module->simple_annotations);
|
| @@ -205,6 +227,11 @@ TEST(MinidumpModuleCrashpadInfoWriter, ThreeModules) {
|
| EXPECT_EQ(MinidumpModuleCrashpadInfo::kVersion, module_0->version);
|
| EXPECT_EQ(kMinidumpModuleListIndex0, module_0->minidump_module_list_index);
|
|
|
| + const MinidumpRVAList* list_annotations_0 =
|
| + MinidumpWritableAtLocationDescriptor<MinidumpRVAList>(
|
| + file_writer.string(), module_0->list_annotations);
|
| + EXPECT_FALSE(list_annotations_0);
|
| +
|
| const MinidumpSimpleStringDictionary* simple_annotations_0 =
|
| MinidumpWritableAtLocationDescriptor<MinidumpSimpleStringDictionary>(
|
| file_writer.string(), module_0->simple_annotations);
|
| @@ -226,6 +253,11 @@ TEST(MinidumpModuleCrashpadInfoWriter, ThreeModules) {
|
| EXPECT_EQ(MinidumpModuleCrashpadInfo::kVersion, module_1->version);
|
| EXPECT_EQ(kMinidumpModuleListIndex1, module_1->minidump_module_list_index);
|
|
|
| + const MinidumpRVAList* list_annotations_1 =
|
| + MinidumpWritableAtLocationDescriptor<MinidumpRVAList>(
|
| + file_writer.string(), module_1->list_annotations);
|
| + EXPECT_FALSE(list_annotations_1);
|
| +
|
| const MinidumpSimpleStringDictionary* simple_annotations_1 =
|
| MinidumpWritableAtLocationDescriptor<MinidumpSimpleStringDictionary>(
|
| file_writer.string(), module_1->simple_annotations);
|
| @@ -239,6 +271,11 @@ TEST(MinidumpModuleCrashpadInfoWriter, ThreeModules) {
|
| EXPECT_EQ(MinidumpModuleCrashpadInfo::kVersion, module_2->version);
|
| EXPECT_EQ(kMinidumpModuleListIndex2, module_2->minidump_module_list_index);
|
|
|
| + const MinidumpRVAList* list_annotations_2 =
|
| + MinidumpWritableAtLocationDescriptor<MinidumpRVAList>(
|
| + file_writer.string(), module_2->list_annotations);
|
| + EXPECT_FALSE(list_annotations_2);
|
| +
|
| const MinidumpSimpleStringDictionary* simple_annotations_2 =
|
| MinidumpWritableAtLocationDescriptor<MinidumpSimpleStringDictionary>(
|
| file_writer.string(), module_2->simple_annotations);
|
| @@ -266,6 +303,8 @@ TEST(MinidumpModuleCrashpadInfoWriter, InitializeFromSnapshot) {
|
| const char kValue0B[] = "estuary";
|
| const char kKey2[] = "k";
|
| const char kValue2[] = "different_value";
|
| + const char kEntry3A[] = "list";
|
| + const char kEntry3B[] = "erine";
|
|
|
| std::vector<const ModuleSnapshot*> module_snapshots;
|
|
|
| @@ -287,6 +326,13 @@ TEST(MinidumpModuleCrashpadInfoWriter, InitializeFromSnapshot) {
|
| module_snapshot_2.SetAnnotationsSimpleMap(annotations_simple_map_2);
|
| module_snapshots.push_back(&module_snapshot_2);
|
|
|
| + TestModuleSnapshot module_snapshot_3;
|
| + std::vector<std::string> annotations_vector_3;
|
| + annotations_vector_3.push_back(kEntry3A);
|
| + annotations_vector_3.push_back(kEntry3B);
|
| + module_snapshot_3.SetAnnotationsVector(annotations_vector_3);
|
| + module_snapshots.push_back(&module_snapshot_3);
|
| +
|
| MinidumpModuleCrashpadInfoListWriter module_list_writer;
|
| module_list_writer.InitializeFromSnapshot(module_snapshots);
|
|
|
| @@ -294,7 +340,7 @@ TEST(MinidumpModuleCrashpadInfoWriter, InitializeFromSnapshot) {
|
| ASSERT_TRUE(module_list_writer.WriteEverything(&file_writer));
|
|
|
| const MinidumpModuleCrashpadInfoList* module_list =
|
| - MinidumpLocationDescriptorListAtStart(file_writer.string(), 2);
|
| + MinidumpLocationDescriptorListAtStart(file_writer.string(), 3);
|
| ASSERT_TRUE(module_list);
|
|
|
| const MinidumpModuleCrashpadInfo* module_0 =
|
| @@ -305,6 +351,11 @@ TEST(MinidumpModuleCrashpadInfoWriter, InitializeFromSnapshot) {
|
| EXPECT_EQ(MinidumpModuleCrashpadInfo::kVersion, module_0->version);
|
| EXPECT_EQ(0u, module_0->minidump_module_list_index);
|
|
|
| + const MinidumpRVAList* list_annotations_0 =
|
| + MinidumpWritableAtLocationDescriptor<MinidumpRVAList>(
|
| + file_writer.string(), module_0->list_annotations);
|
| + EXPECT_FALSE(list_annotations_0);
|
| +
|
| const MinidumpSimpleStringDictionary* simple_annotations_0 =
|
| MinidumpWritableAtLocationDescriptor<MinidumpSimpleStringDictionary>(
|
| file_writer.string(), module_0->simple_annotations);
|
| @@ -332,6 +383,11 @@ TEST(MinidumpModuleCrashpadInfoWriter, InitializeFromSnapshot) {
|
| EXPECT_EQ(MinidumpModuleCrashpadInfo::kVersion, module_2->version);
|
| EXPECT_EQ(2u, module_2->minidump_module_list_index);
|
|
|
| + const MinidumpRVAList* list_annotations_2 =
|
| + MinidumpWritableAtLocationDescriptor<MinidumpRVAList>(
|
| + file_writer.string(), module_2->list_annotations);
|
| + EXPECT_FALSE(list_annotations_2);
|
| +
|
| const MinidumpSimpleStringDictionary* simple_annotations_2 =
|
| MinidumpWritableAtLocationDescriptor<MinidumpSimpleStringDictionary>(
|
| file_writer.string(), module_2->simple_annotations);
|
| @@ -344,6 +400,32 @@ TEST(MinidumpModuleCrashpadInfoWriter, InitializeFromSnapshot) {
|
| EXPECT_EQ(kValue2,
|
| MinidumpUTF8StringAtRVAAsString(
|
| file_writer.string(), simple_annotations_2->entries[0].value));
|
| +
|
| + const MinidumpModuleCrashpadInfo* module_3 =
|
| + MinidumpWritableAtLocationDescriptor<MinidumpModuleCrashpadInfo>(
|
| + file_writer.string(), module_list->children[2]);
|
| + ASSERT_TRUE(module_3);
|
| +
|
| + EXPECT_EQ(MinidumpModuleCrashpadInfo::kVersion, module_3->version);
|
| + EXPECT_EQ(3u, module_3->minidump_module_list_index);
|
| +
|
| + const MinidumpRVAList* list_annotations_3 =
|
| + MinidumpWritableAtLocationDescriptor<MinidumpRVAList>(
|
| + file_writer.string(), module_3->list_annotations);
|
| + ASSERT_TRUE(list_annotations_3);
|
| +
|
| + ASSERT_EQ(annotations_vector_3.size(), list_annotations_3->count);
|
| + EXPECT_EQ(kEntry3A,
|
| + MinidumpUTF8StringAtRVAAsString(
|
| + file_writer.string(), list_annotations_3->children[0]));
|
| + EXPECT_EQ(kEntry3B,
|
| + MinidumpUTF8StringAtRVAAsString(
|
| + file_writer.string(), list_annotations_3->children[1]));
|
| +
|
| + const MinidumpSimpleStringDictionary* simple_annotations_3 =
|
| + MinidumpWritableAtLocationDescriptor<MinidumpSimpleStringDictionary>(
|
| + file_writer.string(), module_3->simple_annotations);
|
| + EXPECT_FALSE(simple_annotations_3);
|
| }
|
|
|
| } // namespace
|
|
|