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