| 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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 const MinidumpSimpleStringDictionary* dictionary = | 50 const MinidumpSimpleStringDictionary* dictionary = |
| 51 MinidumpSimpleStringDictionaryAtStart(file_writer.string(), 0); | 51 MinidumpSimpleStringDictionaryAtStart(file_writer.string(), 0); |
| 52 ASSERT_TRUE(dictionary); | 52 ASSERT_TRUE(dictionary); |
| 53 EXPECT_EQ(0u, dictionary->count); | 53 EXPECT_EQ(0u, dictionary->count); |
| 54 } | 54 } |
| 55 | 55 |
| 56 TEST(MinidumpSimpleStringDictionaryWriter, EmptyKeyValue) { | 56 TEST(MinidumpSimpleStringDictionaryWriter, EmptyKeyValue) { |
| 57 StringFileWriter file_writer; | 57 StringFileWriter file_writer; |
| 58 | 58 |
| 59 MinidumpSimpleStringDictionaryWriter dictionary_writer; | 59 MinidumpSimpleStringDictionaryWriter dictionary_writer; |
| 60 MinidumpSimpleStringDictionaryEntryWriter entry_writer; | 60 auto entry_writer = |
| 61 dictionary_writer.AddEntry(&entry_writer); | 61 make_scoped_ptr(new MinidumpSimpleStringDictionaryEntryWriter()); |
| 62 dictionary_writer.AddEntry(entry_writer.Pass()); |
| 62 | 63 |
| 63 EXPECT_TRUE(dictionary_writer.WriteEverything(&file_writer)); | 64 EXPECT_TRUE(dictionary_writer.WriteEverything(&file_writer)); |
| 64 ASSERT_EQ(sizeof(MinidumpSimpleStringDictionary) + | 65 ASSERT_EQ(sizeof(MinidumpSimpleStringDictionary) + |
| 65 sizeof(MinidumpSimpleStringDictionaryEntry) + | 66 sizeof(MinidumpSimpleStringDictionaryEntry) + |
| 66 2 * sizeof(MinidumpUTF8String) + 1 + 3 + 1, // 3 for padding | 67 2 * sizeof(MinidumpUTF8String) + 1 + 3 + 1, // 3 for padding |
| 67 file_writer.string().size()); | 68 file_writer.string().size()); |
| 68 | 69 |
| 69 const MinidumpSimpleStringDictionary* dictionary = | 70 const MinidumpSimpleStringDictionary* dictionary = |
| 70 MinidumpSimpleStringDictionaryAtStart(file_writer.string(), 1); | 71 MinidumpSimpleStringDictionaryAtStart(file_writer.string(), 1); |
| 71 ASSERT_TRUE(dictionary); | 72 ASSERT_TRUE(dictionary); |
| 72 EXPECT_EQ(1u, dictionary->count); | 73 EXPECT_EQ(1u, dictionary->count); |
| 73 EXPECT_EQ(12u, dictionary->entries[0].key); | 74 EXPECT_EQ(12u, dictionary->entries[0].key); |
| 74 EXPECT_EQ(20u, dictionary->entries[0].value); | 75 EXPECT_EQ(20u, dictionary->entries[0].value); |
| 75 EXPECT_EQ("", | 76 EXPECT_EQ("", |
| 76 MinidumpUTF8StringAtRVAAsString(file_writer.string(), | 77 MinidumpUTF8StringAtRVAAsString(file_writer.string(), |
| 77 dictionary->entries[0].key)); | 78 dictionary->entries[0].key)); |
| 78 EXPECT_EQ("", | 79 EXPECT_EQ("", |
| 79 MinidumpUTF8StringAtRVAAsString(file_writer.string(), | 80 MinidumpUTF8StringAtRVAAsString(file_writer.string(), |
| 80 dictionary->entries[0].value)); | 81 dictionary->entries[0].value)); |
| 81 } | 82 } |
| 82 | 83 |
| 83 TEST(MinidumpSimpleStringDictionaryWriter, OneKeyValue) { | 84 TEST(MinidumpSimpleStringDictionaryWriter, OneKeyValue) { |
| 84 StringFileWriter file_writer; | 85 StringFileWriter file_writer; |
| 85 | 86 |
| 86 char kKey[] = "key"; | 87 char kKey[] = "key"; |
| 87 char kValue[] = "value"; | 88 char kValue[] = "value"; |
| 88 | 89 |
| 89 MinidumpSimpleStringDictionaryWriter dictionary_writer; | 90 MinidumpSimpleStringDictionaryWriter dictionary_writer; |
| 90 MinidumpSimpleStringDictionaryEntryWriter entry_writer; | 91 auto entry_writer = |
| 91 entry_writer.SetKeyValue(kKey, kValue); | 92 make_scoped_ptr(new MinidumpSimpleStringDictionaryEntryWriter()); |
| 92 dictionary_writer.AddEntry(&entry_writer); | 93 entry_writer->SetKeyValue(kKey, kValue); |
| 94 dictionary_writer.AddEntry(entry_writer.Pass()); |
| 93 | 95 |
| 94 EXPECT_TRUE(dictionary_writer.WriteEverything(&file_writer)); | 96 EXPECT_TRUE(dictionary_writer.WriteEverything(&file_writer)); |
| 95 ASSERT_EQ(sizeof(MinidumpSimpleStringDictionary) + | 97 ASSERT_EQ(sizeof(MinidumpSimpleStringDictionary) + |
| 96 sizeof(MinidumpSimpleStringDictionaryEntry) + | 98 sizeof(MinidumpSimpleStringDictionaryEntry) + |
| 97 2 * sizeof(MinidumpUTF8String) + sizeof(kKey) + sizeof(kValue), | 99 2 * sizeof(MinidumpUTF8String) + sizeof(kKey) + sizeof(kValue), |
| 98 file_writer.string().size()); | 100 file_writer.string().size()); |
| 99 | 101 |
| 100 const MinidumpSimpleStringDictionary* dictionary = | 102 const MinidumpSimpleStringDictionary* dictionary = |
| 101 MinidumpSimpleStringDictionaryAtStart(file_writer.string(), 1); | 103 MinidumpSimpleStringDictionaryAtStart(file_writer.string(), 1); |
| 102 ASSERT_TRUE(dictionary); | 104 ASSERT_TRUE(dictionary); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 115 StringFileWriter file_writer; | 117 StringFileWriter file_writer; |
| 116 | 118 |
| 117 char kKey0[] = "m0"; | 119 char kKey0[] = "m0"; |
| 118 char kValue0[] = "value0"; | 120 char kValue0[] = "value0"; |
| 119 char kKey1[] = "zzz1"; | 121 char kKey1[] = "zzz1"; |
| 120 char kValue1[] = "v1"; | 122 char kValue1[] = "v1"; |
| 121 char kKey2[] = "aa2"; | 123 char kKey2[] = "aa2"; |
| 122 char kValue2[] = "val2"; | 124 char kValue2[] = "val2"; |
| 123 | 125 |
| 124 MinidumpSimpleStringDictionaryWriter dictionary_writer; | 126 MinidumpSimpleStringDictionaryWriter dictionary_writer; |
| 125 MinidumpSimpleStringDictionaryEntryWriter entry_writer_0; | 127 auto entry_writer_0 = |
| 126 entry_writer_0.SetKeyValue(kKey0, kValue0); | 128 make_scoped_ptr(new MinidumpSimpleStringDictionaryEntryWriter()); |
| 127 dictionary_writer.AddEntry(&entry_writer_0); | 129 entry_writer_0->SetKeyValue(kKey0, kValue0); |
| 128 MinidumpSimpleStringDictionaryEntryWriter entry_writer_1; | 130 dictionary_writer.AddEntry(entry_writer_0.Pass()); |
| 129 entry_writer_1.SetKeyValue(kKey1, kValue1); | 131 auto entry_writer_1 = |
| 130 dictionary_writer.AddEntry(&entry_writer_1); | 132 make_scoped_ptr(new MinidumpSimpleStringDictionaryEntryWriter()); |
| 131 MinidumpSimpleStringDictionaryEntryWriter entry_writer_2; | 133 entry_writer_1->SetKeyValue(kKey1, kValue1); |
| 132 entry_writer_2.SetKeyValue(kKey2, kValue2); | 134 dictionary_writer.AddEntry(entry_writer_1.Pass()); |
| 133 dictionary_writer.AddEntry(&entry_writer_2); | 135 auto entry_writer_2 = |
| 136 make_scoped_ptr(new MinidumpSimpleStringDictionaryEntryWriter()); |
| 137 entry_writer_2->SetKeyValue(kKey2, kValue2); |
| 138 dictionary_writer.AddEntry(entry_writer_2.Pass()); |
| 134 | 139 |
| 135 EXPECT_TRUE(dictionary_writer.WriteEverything(&file_writer)); | 140 EXPECT_TRUE(dictionary_writer.WriteEverything(&file_writer)); |
| 136 ASSERT_EQ(sizeof(MinidumpSimpleStringDictionary) + | 141 ASSERT_EQ(sizeof(MinidumpSimpleStringDictionary) + |
| 137 3 * sizeof(MinidumpSimpleStringDictionaryEntry) + | 142 3 * sizeof(MinidumpSimpleStringDictionaryEntry) + |
| 138 6 * sizeof(MinidumpUTF8String) + sizeof(kKey2) + | 143 6 * sizeof(MinidumpUTF8String) + sizeof(kKey2) + |
| 139 sizeof(kValue2) + 3 + sizeof(kKey0) + 1 + sizeof(kValue0) + 1 + | 144 sizeof(kValue2) + 3 + sizeof(kKey0) + 1 + sizeof(kValue0) + 1 + |
| 140 sizeof(kKey1) + 3 + sizeof(kValue1), | 145 sizeof(kKey1) + 3 + sizeof(kValue1), |
| 141 file_writer.string().size()); | 146 file_writer.string().size()); |
| 142 | 147 |
| 143 const MinidumpSimpleStringDictionary* dictionary = | 148 const MinidumpSimpleStringDictionary* dictionary = |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 178 } | 183 } |
| 179 | 184 |
| 180 TEST(MinidumpSimpleStringDictionaryWriter, DuplicateKeyValue) { | 185 TEST(MinidumpSimpleStringDictionaryWriter, DuplicateKeyValue) { |
| 181 StringFileWriter file_writer; | 186 StringFileWriter file_writer; |
| 182 | 187 |
| 183 char kKey[] = "key"; | 188 char kKey[] = "key"; |
| 184 char kValue0[] = "fake_value"; | 189 char kValue0[] = "fake_value"; |
| 185 char kValue1[] = "value"; | 190 char kValue1[] = "value"; |
| 186 | 191 |
| 187 MinidumpSimpleStringDictionaryWriter dictionary_writer; | 192 MinidumpSimpleStringDictionaryWriter dictionary_writer; |
| 188 MinidumpSimpleStringDictionaryEntryWriter entry_writer_0; | 193 auto entry_writer_0 = |
| 189 entry_writer_0.SetKeyValue(kKey, kValue0); | 194 make_scoped_ptr(new MinidumpSimpleStringDictionaryEntryWriter()); |
| 190 dictionary_writer.AddEntry(&entry_writer_0); | 195 entry_writer_0->SetKeyValue(kKey, kValue0); |
| 191 MinidumpSimpleStringDictionaryEntryWriter entry_writer_1; | 196 dictionary_writer.AddEntry(entry_writer_0.Pass()); |
| 192 entry_writer_1.SetKeyValue(kKey, kValue1); | 197 auto entry_writer_1 = |
| 193 dictionary_writer.AddEntry(&entry_writer_1); | 198 make_scoped_ptr(new MinidumpSimpleStringDictionaryEntryWriter()); |
| 199 entry_writer_1->SetKeyValue(kKey, kValue1); |
| 200 dictionary_writer.AddEntry(entry_writer_1.Pass()); |
| 194 | 201 |
| 195 EXPECT_TRUE(dictionary_writer.WriteEverything(&file_writer)); | 202 EXPECT_TRUE(dictionary_writer.WriteEverything(&file_writer)); |
| 196 ASSERT_EQ(sizeof(MinidumpSimpleStringDictionary) + | 203 ASSERT_EQ(sizeof(MinidumpSimpleStringDictionary) + |
| 197 sizeof(MinidumpSimpleStringDictionaryEntry) + | 204 sizeof(MinidumpSimpleStringDictionaryEntry) + |
| 198 2 * sizeof(MinidumpUTF8String) + sizeof(kKey) + sizeof(kValue1), | 205 2 * sizeof(MinidumpUTF8String) + sizeof(kKey) + sizeof(kValue1), |
| 199 file_writer.string().size()); | 206 file_writer.string().size()); |
| 200 | 207 |
| 201 const MinidumpSimpleStringDictionary* dictionary = | 208 const MinidumpSimpleStringDictionary* dictionary = |
| 202 MinidumpSimpleStringDictionaryAtStart(file_writer.string(), 1); | 209 MinidumpSimpleStringDictionaryAtStart(file_writer.string(), 1); |
| 203 ASSERT_TRUE(dictionary); | 210 ASSERT_TRUE(dictionary); |
| 204 EXPECT_EQ(1u, dictionary->count); | 211 EXPECT_EQ(1u, dictionary->count); |
| 205 EXPECT_EQ(12u, dictionary->entries[0].key); | 212 EXPECT_EQ(12u, dictionary->entries[0].key); |
| 206 EXPECT_EQ(20u, dictionary->entries[0].value); | 213 EXPECT_EQ(20u, dictionary->entries[0].value); |
| 207 EXPECT_EQ(kKey, | 214 EXPECT_EQ(kKey, |
| 208 MinidumpUTF8StringAtRVAAsString(file_writer.string(), | 215 MinidumpUTF8StringAtRVAAsString(file_writer.string(), |
| 209 dictionary->entries[0].key)); | 216 dictionary->entries[0].key)); |
| 210 EXPECT_EQ(kValue1, | 217 EXPECT_EQ(kValue1, |
| 211 MinidumpUTF8StringAtRVAAsString(file_writer.string(), | 218 MinidumpUTF8StringAtRVAAsString(file_writer.string(), |
| 212 dictionary->entries[0].value)); | 219 dictionary->entries[0].value)); |
| 213 } | 220 } |
| 214 | 221 |
| 215 } // namespace | 222 } // namespace |
| 216 } // namespace test | 223 } // namespace test |
| 217 } // namespace crashpad | 224 } // namespace crashpad |
| OLD | NEW |