OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |