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