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 13 matching lines...) Expand all Loading... |
24 #include "base/scoped_generic.h" | 24 #include "base/scoped_generic.h" |
25 #include "base/strings/stringprintf.h" | 25 #include "base/strings/stringprintf.h" |
26 #include "gtest/gtest.h" | 26 #include "gtest/gtest.h" |
27 | 27 |
28 namespace crashpad { | 28 namespace crashpad { |
29 namespace test { | 29 namespace test { |
30 namespace { | 30 namespace { |
31 | 31 |
32 TEST(UUID, UUID) { | 32 TEST(UUID, UUID) { |
33 UUID uuid_zero; | 33 UUID uuid_zero; |
| 34 uuid_zero.InitializeToZero(); |
34 EXPECT_EQ(0u, uuid_zero.data_1); | 35 EXPECT_EQ(0u, uuid_zero.data_1); |
35 EXPECT_EQ(0u, uuid_zero.data_2); | 36 EXPECT_EQ(0u, uuid_zero.data_2); |
36 EXPECT_EQ(0u, uuid_zero.data_3); | 37 EXPECT_EQ(0u, uuid_zero.data_3); |
37 EXPECT_EQ(0u, uuid_zero.data_4[0]); | 38 EXPECT_EQ(0u, uuid_zero.data_4[0]); |
38 EXPECT_EQ(0u, uuid_zero.data_4[1]); | 39 EXPECT_EQ(0u, uuid_zero.data_4[1]); |
39 EXPECT_EQ(0u, uuid_zero.data_5[0]); | 40 EXPECT_EQ(0u, uuid_zero.data_5[0]); |
40 EXPECT_EQ(0u, uuid_zero.data_5[1]); | 41 EXPECT_EQ(0u, uuid_zero.data_5[1]); |
41 EXPECT_EQ(0u, uuid_zero.data_5[2]); | 42 EXPECT_EQ(0u, uuid_zero.data_5[2]); |
42 EXPECT_EQ(0u, uuid_zero.data_5[3]); | 43 EXPECT_EQ(0u, uuid_zero.data_5[3]); |
43 EXPECT_EQ(0u, uuid_zero.data_5[4]); | 44 EXPECT_EQ(0u, uuid_zero.data_5[4]); |
44 EXPECT_EQ(0u, uuid_zero.data_5[5]); | 45 EXPECT_EQ(0u, uuid_zero.data_5[5]); |
45 EXPECT_EQ("00000000-0000-0000-0000-000000000000", uuid_zero.ToString()); | 46 EXPECT_EQ("00000000-0000-0000-0000-000000000000", uuid_zero.ToString()); |
46 | 47 |
47 const uint8_t kBytes[16] = {0x00, | 48 const uint8_t kBytes[16] = {0x00, |
48 0x01, | 49 0x01, |
49 0x02, | 50 0x02, |
50 0x03, | 51 0x03, |
51 0x04, | 52 0x04, |
52 0x05, | 53 0x05, |
53 0x06, | 54 0x06, |
54 0x07, | 55 0x07, |
55 0x08, | 56 0x08, |
56 0x09, | 57 0x09, |
57 0x0a, | 58 0x0a, |
58 0x0b, | 59 0x0b, |
59 0x0c, | 60 0x0c, |
60 0x0d, | 61 0x0d, |
61 0x0e, | 62 0x0e, |
62 0x0f}; | 63 0x0f}; |
63 UUID uuid(kBytes); | 64 UUID uuid; |
| 65 uuid.InitializeFromBytes(kBytes); |
64 EXPECT_EQ(0x00010203u, uuid.data_1); | 66 EXPECT_EQ(0x00010203u, uuid.data_1); |
65 EXPECT_EQ(0x0405u, uuid.data_2); | 67 EXPECT_EQ(0x0405u, uuid.data_2); |
66 EXPECT_EQ(0x0607u, uuid.data_3); | 68 EXPECT_EQ(0x0607u, uuid.data_3); |
67 EXPECT_EQ(0x08u, uuid.data_4[0]); | 69 EXPECT_EQ(0x08u, uuid.data_4[0]); |
68 EXPECT_EQ(0x09u, uuid.data_4[1]); | 70 EXPECT_EQ(0x09u, uuid.data_4[1]); |
69 EXPECT_EQ(0x0au, uuid.data_5[0]); | 71 EXPECT_EQ(0x0au, uuid.data_5[0]); |
70 EXPECT_EQ(0x0bu, uuid.data_5[1]); | 72 EXPECT_EQ(0x0bu, uuid.data_5[1]); |
71 EXPECT_EQ(0x0cu, uuid.data_5[2]); | 73 EXPECT_EQ(0x0cu, uuid.data_5[2]); |
72 EXPECT_EQ(0x0du, uuid.data_5[3]); | 74 EXPECT_EQ(0x0du, uuid.data_5[3]); |
73 EXPECT_EQ(0x0eu, uuid.data_5[4]); | 75 EXPECT_EQ(0x0eu, uuid.data_5[4]); |
74 EXPECT_EQ(0x0fu, uuid.data_5[5]); | 76 EXPECT_EQ(0x0fu, uuid.data_5[5]); |
75 EXPECT_EQ("00010203-0405-0607-0809-0a0b0c0d0e0f", uuid.ToString()); | 77 EXPECT_EQ("00010203-0405-0607-0809-0a0b0c0d0e0f", uuid.ToString()); |
76 | 78 |
77 // Test both operator== and operator!=. | 79 // Test both operator== and operator!=. |
78 EXPECT_FALSE(uuid == uuid_zero); | 80 EXPECT_FALSE(uuid == uuid_zero); |
79 EXPECT_NE(uuid, uuid_zero); | 81 EXPECT_NE(uuid, uuid_zero); |
80 | 82 |
81 UUID uuid_2(kBytes); | 83 UUID uuid_2; |
| 84 uuid_2.InitializeFromBytes(kBytes); |
82 EXPECT_EQ(uuid, uuid_2); | 85 EXPECT_EQ(uuid, uuid_2); |
83 EXPECT_FALSE(uuid != uuid_2); | 86 EXPECT_FALSE(uuid != uuid_2); |
84 | 87 |
85 // Make sure that operator== and operator!= check the entire UUID. | 88 // Make sure that operator== and operator!= check the entire UUID. |
86 ++uuid.data_1; | 89 ++uuid.data_1; |
87 EXPECT_NE(uuid, uuid_2); | 90 EXPECT_NE(uuid, uuid_2); |
88 --uuid.data_1; | 91 --uuid.data_1; |
89 ++uuid.data_2; | 92 ++uuid.data_2; |
90 EXPECT_NE(uuid, uuid_2); | 93 EXPECT_NE(uuid, uuid_2); |
91 --uuid.data_2; | 94 --uuid.data_2; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 EXPECT_EQ(0x45u, uuid.data_4[0]); | 151 EXPECT_EQ(0x45u, uuid.data_4[0]); |
149 EXPECT_EQ(0x45u, uuid.data_4[1]); | 152 EXPECT_EQ(0x45u, uuid.data_4[1]); |
150 EXPECT_EQ(0x45u, uuid.data_5[0]); | 153 EXPECT_EQ(0x45u, uuid.data_5[0]); |
151 EXPECT_EQ(0x45u, uuid.data_5[1]); | 154 EXPECT_EQ(0x45u, uuid.data_5[1]); |
152 EXPECT_EQ(0x45u, uuid.data_5[2]); | 155 EXPECT_EQ(0x45u, uuid.data_5[2]); |
153 EXPECT_EQ(0x45u, uuid.data_5[3]); | 156 EXPECT_EQ(0x45u, uuid.data_5[3]); |
154 EXPECT_EQ(0x45u, uuid.data_5[4]); | 157 EXPECT_EQ(0x45u, uuid.data_5[4]); |
155 EXPECT_EQ(0x45u, uuid.data_5[5]); | 158 EXPECT_EQ(0x45u, uuid.data_5[5]); |
156 EXPECT_EQ("45454545-4545-4545-4545-454545454545", uuid.ToString()); | 159 EXPECT_EQ("45454545-4545-4545-4545-454545454545", uuid.ToString()); |
157 | 160 |
158 UUID initialized_generated(UUID::InitializeWithNewTag{}); | 161 UUID initialized_generated; |
| 162 initialized_generated.InitializeWithNew(); |
159 EXPECT_NE(initialized_generated, uuid_zero); | 163 EXPECT_NE(initialized_generated, uuid_zero); |
160 } | 164 } |
161 | 165 |
162 TEST(UUID, FromString) { | 166 TEST(UUID, FromString) { |
163 const struct TestCase { | 167 const struct TestCase { |
164 const char* uuid_string; | 168 const char* uuid_string; |
165 bool success; | 169 bool success; |
166 } kCases[] = { | 170 } kCases[] = { |
167 // Valid: | 171 // Valid: |
168 {"c6849cb5-fe14-4a79-8978-9ae6034c521d", true}, | 172 {"c6849cb5-fe14-4a79-8978-9ae6034c521d", true}, |
169 {"00000000-0000-0000-0000-000000000000", true}, | 173 {"00000000-0000-0000-0000-000000000000", true}, |
170 {"ffffffff-ffff-ffff-ffff-ffffffffffff", true}, | 174 {"ffffffff-ffff-ffff-ffff-ffffffffffff", true}, |
171 // Outside HEX range: | 175 // Outside HEX range: |
172 {"7318z10b-c453-4cef-9dc8-015655cb4bbc", false}, | 176 {"7318z10b-c453-4cef-9dc8-015655cb4bbc", false}, |
173 {"7318a10b-c453-4cef-9dz8-015655cb4bbc", false}, | 177 {"7318a10b-c453-4cef-9dz8-015655cb4bbc", false}, |
174 // Incomplete: | 178 // Incomplete: |
175 {"15655cb4-", false}, | 179 {"15655cb4-", false}, |
176 {"7318f10b-c453-4cef-9dc8-015655cb4bb", false}, | 180 {"7318f10b-c453-4cef-9dc8-015655cb4bb", false}, |
177 {"318f10b-c453-4cef-9dc8-015655cb4bb2", false}, | 181 {"318f10b-c453-4cef-9dc8-015655cb4bb2", false}, |
178 {"7318f10b-c453-4ef-9dc8-015655cb4bb2", false}, | 182 {"7318f10b-c453-4ef-9dc8-015655cb4bb2", false}, |
179 {"", false}, | 183 {"", false}, |
180 {"abcd", false}, | 184 {"abcd", false}, |
181 // Trailing data: | 185 // Trailing data: |
182 {"6d247a34-53d5-40ec-a90d-d8dea9e94cc01", false} | 186 {"6d247a34-53d5-40ec-a90d-d8dea9e94cc01", false} |
183 }; | 187 }; |
184 | 188 |
185 const std::string empty_uuid = UUID().ToString(); | 189 UUID uuid_zero; |
| 190 uuid_zero.InitializeToZero(); |
| 191 const std::string empty_uuid = uuid_zero.ToString(); |
186 | 192 |
187 for (size_t index = 0; index < arraysize(kCases); ++index) { | 193 for (size_t index = 0; index < arraysize(kCases); ++index) { |
188 const TestCase& test_case = kCases[index]; | 194 const TestCase& test_case = kCases[index]; |
189 SCOPED_TRACE(base::StringPrintf( | 195 SCOPED_TRACE(base::StringPrintf( |
190 "index %" PRIuS ": %s", index, test_case.uuid_string)); | 196 "index %" PRIuS ": %s", index, test_case.uuid_string)); |
191 | 197 |
192 UUID uuid; | 198 UUID uuid; |
| 199 uuid.InitializeToZero(); |
193 EXPECT_EQ(test_case.success, | 200 EXPECT_EQ(test_case.success, |
194 uuid.InitializeFromString(test_case.uuid_string)); | 201 uuid.InitializeFromString(test_case.uuid_string)); |
195 if (test_case.success) { | 202 if (test_case.success) { |
196 EXPECT_EQ(test_case.uuid_string, uuid.ToString()); | 203 EXPECT_EQ(test_case.uuid_string, uuid.ToString()); |
197 } else { | 204 } else { |
198 EXPECT_EQ(empty_uuid, uuid.ToString()); | 205 EXPECT_EQ(empty_uuid, uuid.ToString()); |
199 } | 206 } |
200 } | 207 } |
201 | 208 |
202 // Test for case insensitivty. | 209 // Test for case insensitivty. |
(...skipping 29 matching lines...) Expand all Loading... |
232 ScopedRpcString scoped_system_string(&system_string); | 239 ScopedRpcString scoped_system_string(&system_string); |
233 | 240 |
234 EXPECT_EQ(reinterpret_cast<wchar_t*>(system_string), uuid.ToString16()); | 241 EXPECT_EQ(reinterpret_cast<wchar_t*>(system_string), uuid.ToString16()); |
235 } | 242 } |
236 | 243 |
237 #endif // OS_WIN | 244 #endif // OS_WIN |
238 | 245 |
239 } // namespace | 246 } // namespace |
240 } // namespace test | 247 } // namespace test |
241 } // namespace crashpad | 248 } // namespace crashpad |
OLD | NEW |