Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Side by Side Diff: minidump/minidump_simple_string_dictionary_writer_test.cc

Issue 664283002: Refactor minidump test utilities for MinidumpWritable, … (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « minidump/minidump_module_writer_test.cc ('k') | minidump/minidump_string_writer_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Crashpad Authors. All rights reserved. 1 // Copyright 2014 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 sizeof(MinidumpSimpleStringDictionaryEntry) + 57 sizeof(MinidumpSimpleStringDictionaryEntry) +
58 2 * sizeof(MinidumpUTF8String) + 1 + 3 + 1, // 3 for padding 58 2 * sizeof(MinidumpUTF8String) + 1 + 3 + 1, // 3 for padding
59 file_writer.string().size()); 59 file_writer.string().size());
60 60
61 const MinidumpSimpleStringDictionary* dictionary = 61 const MinidumpSimpleStringDictionary* dictionary =
62 MinidumpSimpleStringDictionaryCast(file_writer); 62 MinidumpSimpleStringDictionaryCast(file_writer);
63 EXPECT_EQ(1u, dictionary->count); 63 EXPECT_EQ(1u, dictionary->count);
64 EXPECT_EQ(12u, dictionary->entries[0].key); 64 EXPECT_EQ(12u, dictionary->entries[0].key);
65 EXPECT_EQ(20u, dictionary->entries[0].value); 65 EXPECT_EQ(20u, dictionary->entries[0].value);
66 EXPECT_EQ("", 66 EXPECT_EQ("",
67 MinidumpUTF8StringAtRVA(file_writer, dictionary->entries[0].key)); 67 MinidumpUTF8StringAtRVAAsString(file_writer.string(),
68 dictionary->entries[0].key));
68 EXPECT_EQ("", 69 EXPECT_EQ("",
69 MinidumpUTF8StringAtRVA(file_writer, dictionary->entries[0].value)); 70 MinidumpUTF8StringAtRVAAsString(file_writer.string(),
71 dictionary->entries[0].value));
70 } 72 }
71 73
72 TEST(MinidumpSimpleStringDictionaryWriter, OneKeyValue) { 74 TEST(MinidumpSimpleStringDictionaryWriter, OneKeyValue) {
73 StringFileWriter file_writer; 75 StringFileWriter file_writer;
74 76
75 char kKey[] = "key"; 77 char kKey[] = "key";
76 char kValue[] = "value"; 78 char kValue[] = "value";
77 79
78 MinidumpSimpleStringDictionaryWriter dictionary_writer; 80 MinidumpSimpleStringDictionaryWriter dictionary_writer;
79 MinidumpSimpleStringDictionaryEntryWriter entry_writer; 81 MinidumpSimpleStringDictionaryEntryWriter entry_writer;
80 entry_writer.SetKeyValue(kKey, kValue); 82 entry_writer.SetKeyValue(kKey, kValue);
81 dictionary_writer.AddEntry(&entry_writer); 83 dictionary_writer.AddEntry(&entry_writer);
82 84
83 EXPECT_TRUE(dictionary_writer.WriteEverything(&file_writer)); 85 EXPECT_TRUE(dictionary_writer.WriteEverything(&file_writer));
84 ASSERT_EQ(sizeof(MinidumpSimpleStringDictionary) + 86 ASSERT_EQ(sizeof(MinidumpSimpleStringDictionary) +
85 sizeof(MinidumpSimpleStringDictionaryEntry) + 87 sizeof(MinidumpSimpleStringDictionaryEntry) +
86 2 * sizeof(MinidumpUTF8String) + sizeof(kKey) + sizeof(kValue), 88 2 * sizeof(MinidumpUTF8String) + sizeof(kKey) + sizeof(kValue),
87 file_writer.string().size()); 89 file_writer.string().size());
88 90
89 const MinidumpSimpleStringDictionary* dictionary = 91 const MinidumpSimpleStringDictionary* dictionary =
90 MinidumpSimpleStringDictionaryCast(file_writer); 92 MinidumpSimpleStringDictionaryCast(file_writer);
91 EXPECT_EQ(1u, dictionary->count); 93 EXPECT_EQ(1u, dictionary->count);
92 EXPECT_EQ(12u, dictionary->entries[0].key); 94 EXPECT_EQ(12u, dictionary->entries[0].key);
93 EXPECT_EQ(20u, dictionary->entries[0].value); 95 EXPECT_EQ(20u, dictionary->entries[0].value);
94 EXPECT_EQ(kKey, 96 EXPECT_EQ(kKey,
95 MinidumpUTF8StringAtRVA(file_writer, dictionary->entries[0].key)); 97 MinidumpUTF8StringAtRVAAsString(file_writer.string(),
98 dictionary->entries[0].key));
96 EXPECT_EQ(kValue, 99 EXPECT_EQ(kValue,
97 MinidumpUTF8StringAtRVA(file_writer, dictionary->entries[0].value)); 100 MinidumpUTF8StringAtRVAAsString(file_writer.string(),
101 dictionary->entries[0].value));
98 } 102 }
99 103
100 TEST(MinidumpSimpleStringDictionaryWriter, ThreeKeysValues) { 104 TEST(MinidumpSimpleStringDictionaryWriter, ThreeKeysValues) {
101 StringFileWriter file_writer; 105 StringFileWriter file_writer;
102 106
103 char kKey0[] = "m0"; 107 char kKey0[] = "m0";
104 char kValue0[] = "value0"; 108 char kValue0[] = "value0";
105 char kKey1[] = "zzz1"; 109 char kKey1[] = "zzz1";
106 char kValue1[] = "v1"; 110 char kValue1[] = "v1";
107 char kKey2[] = "aa2"; 111 char kKey2[] = "aa2";
(...skipping 28 matching lines...) Expand all
136 EXPECT_EQ(68u, dictionary->entries[2].key); 140 EXPECT_EQ(68u, dictionary->entries[2].key);
137 EXPECT_EQ(80u, dictionary->entries[2].value); 141 EXPECT_EQ(80u, dictionary->entries[2].value);
138 142
139 // The entries don’t appear in the order they were added. The current 143 // The entries don’t appear in the order they were added. The current
140 // implementation uses a std::map and sorts keys, so the entires appear in 144 // implementation uses a std::map and sorts keys, so the entires appear in
141 // alphabetical order. However, this is an implementation detail, and it’s OK 145 // alphabetical order. However, this is an implementation detail, and it’s OK
142 // if the writer stops sorting in this order. Testing for a specific order is 146 // if the writer stops sorting in this order. Testing for a specific order is
143 // just the easiest way to write this test while the writer will output things 147 // just the easiest way to write this test while the writer will output things
144 // in a known order. 148 // in a known order.
145 EXPECT_EQ(kKey2, 149 EXPECT_EQ(kKey2,
146 MinidumpUTF8StringAtRVA(file_writer, dictionary->entries[0].key)); 150 MinidumpUTF8StringAtRVAAsString(file_writer.string(),
151 dictionary->entries[0].key));
147 EXPECT_EQ(kValue2, 152 EXPECT_EQ(kValue2,
148 MinidumpUTF8StringAtRVA(file_writer, dictionary->entries[0].value)); 153 MinidumpUTF8StringAtRVAAsString(file_writer.string(),
154 dictionary->entries[0].value));
149 EXPECT_EQ(kKey0, 155 EXPECT_EQ(kKey0,
150 MinidumpUTF8StringAtRVA(file_writer, dictionary->entries[1].key)); 156 MinidumpUTF8StringAtRVAAsString(file_writer.string(),
157 dictionary->entries[1].key));
151 EXPECT_EQ(kValue0, 158 EXPECT_EQ(kValue0,
152 MinidumpUTF8StringAtRVA(file_writer, dictionary->entries[1].value)); 159 MinidumpUTF8StringAtRVAAsString(file_writer.string(),
160 dictionary->entries[1].value));
153 EXPECT_EQ(kKey1, 161 EXPECT_EQ(kKey1,
154 MinidumpUTF8StringAtRVA(file_writer, dictionary->entries[2].key)); 162 MinidumpUTF8StringAtRVAAsString(file_writer.string(),
163 dictionary->entries[2].key));
155 EXPECT_EQ(kValue1, 164 EXPECT_EQ(kValue1,
156 MinidumpUTF8StringAtRVA(file_writer, dictionary->entries[2].value)); 165 MinidumpUTF8StringAtRVAAsString(file_writer.string(),
166 dictionary->entries[2].value));
157 } 167 }
158 168
159 TEST(MinidumpSimpleStringDictionaryWriter, DuplicateKeyValue) { 169 TEST(MinidumpSimpleStringDictionaryWriter, DuplicateKeyValue) {
160 StringFileWriter file_writer; 170 StringFileWriter file_writer;
161 171
162 char kKey[] = "key"; 172 char kKey[] = "key";
163 char kValue0[] = "fake_value"; 173 char kValue0[] = "fake_value";
164 char kValue1[] = "value"; 174 char kValue1[] = "value";
165 175
166 MinidumpSimpleStringDictionaryWriter dictionary_writer; 176 MinidumpSimpleStringDictionaryWriter dictionary_writer;
167 MinidumpSimpleStringDictionaryEntryWriter entry_writer_0; 177 MinidumpSimpleStringDictionaryEntryWriter entry_writer_0;
168 entry_writer_0.SetKeyValue(kKey, kValue0); 178 entry_writer_0.SetKeyValue(kKey, kValue0);
169 dictionary_writer.AddEntry(&entry_writer_0); 179 dictionary_writer.AddEntry(&entry_writer_0);
170 MinidumpSimpleStringDictionaryEntryWriter entry_writer_1; 180 MinidumpSimpleStringDictionaryEntryWriter entry_writer_1;
171 entry_writer_1.SetKeyValue(kKey, kValue1); 181 entry_writer_1.SetKeyValue(kKey, kValue1);
172 dictionary_writer.AddEntry(&entry_writer_1); 182 dictionary_writer.AddEntry(&entry_writer_1);
173 183
174 EXPECT_TRUE(dictionary_writer.WriteEverything(&file_writer)); 184 EXPECT_TRUE(dictionary_writer.WriteEverything(&file_writer));
175 ASSERT_EQ(sizeof(MinidumpSimpleStringDictionary) + 185 ASSERT_EQ(sizeof(MinidumpSimpleStringDictionary) +
176 sizeof(MinidumpSimpleStringDictionaryEntry) + 186 sizeof(MinidumpSimpleStringDictionaryEntry) +
177 2 * sizeof(MinidumpUTF8String) + sizeof(kKey) + sizeof(kValue1), 187 2 * sizeof(MinidumpUTF8String) + sizeof(kKey) + sizeof(kValue1),
178 file_writer.string().size()); 188 file_writer.string().size());
179 189
180 const MinidumpSimpleStringDictionary* dictionary = 190 const MinidumpSimpleStringDictionary* dictionary =
181 MinidumpSimpleStringDictionaryCast(file_writer); 191 MinidumpSimpleStringDictionaryCast(file_writer);
182 EXPECT_EQ(1u, dictionary->count); 192 EXPECT_EQ(1u, dictionary->count);
183 EXPECT_EQ(12u, dictionary->entries[0].key); 193 EXPECT_EQ(12u, dictionary->entries[0].key);
184 EXPECT_EQ(20u, dictionary->entries[0].value); 194 EXPECT_EQ(20u, dictionary->entries[0].value);
185 EXPECT_EQ(kKey, 195 EXPECT_EQ(kKey,
186 MinidumpUTF8StringAtRVA(file_writer, dictionary->entries[0].key)); 196 MinidumpUTF8StringAtRVAAsString(file_writer.string(),
197 dictionary->entries[0].key));
187 EXPECT_EQ(kValue1, 198 EXPECT_EQ(kValue1,
188 MinidumpUTF8StringAtRVA(file_writer, dictionary->entries[0].value)); 199 MinidumpUTF8StringAtRVAAsString(file_writer.string(),
200 dictionary->entries[0].value));
189 } 201 }
190 202
191 } // namespace 203 } // namespace
192 } // namespace test 204 } // namespace test
193 } // namespace crashpad 205 } // namespace crashpad
OLDNEW
« no previous file with comments | « minidump/minidump_module_writer_test.cc ('k') | minidump/minidump_string_writer_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698