OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/message_loop.h" | 5 #include "base/message_loop.h" |
6 #include "base/string16.h" | 6 #include "base/string16.h" |
7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
8 #include "components/autofill/browser/phone_number_i18n.h" | 8 #include "components/autofill/browser/phone_number_i18n.h" |
9 #include "content/public/test/test_browser_thread.h" | 9 #include "content/public/test/test_browser_thread.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
11 #include "third_party/libphonenumber/src/phonenumber_api.h" | 11 #include "third_party/libphonenumber/src/phonenumber_api.h" |
12 | 12 |
13 using autofill_i18n::NormalizePhoneNumber; | 13 using autofill_i18n::NormalizePhoneNumber; |
14 using autofill_i18n::ParsePhoneNumber; | 14 using autofill_i18n::ParsePhoneNumber; |
15 using autofill_i18n::ConstructPhoneNumber; | 15 using autofill_i18n::ConstructPhoneNumber; |
16 using autofill_i18n::PhoneNumbersMatch; | 16 using autofill_i18n::PhoneNumbersMatch; |
17 using content::BrowserThread; | 17 using content::BrowserThread; |
18 | 18 |
19 TEST(PhoneNumberI18NTest, NormalizePhoneNumber) { | 19 TEST(PhoneNumberI18NTest, NormalizePhoneNumber) { |
20 // "Large" digits. | 20 // "Large" digits. |
21 string16 phone1(UTF8ToUTF16("\xEF\xBC\x91\xEF\xBC\x96\xEF\xBC\x95\xEF\xBC\x90" | 21 string16 phone1(UTF8ToUTF16("\xEF\xBC\x91\xEF\xBC\x96\xEF\xBC\x95\xEF\xBC\x90" |
22 "\xEF\xBC\x97\xEF\xBC\x94\xEF\xBC\x99\xEF\xBC\x98" | 22 "\xEF\xBC\x97\xEF\xBC\x94\xEF\xBC\x99\xEF\xBC\x98" |
23 "\xEF\xBC\x93\xEF\xBC\x92\xEF\xBC\x93")); | 23 "\xEF\xBC\x93\xEF\xBC\x92\xEF\xBC\x93")); |
24 EXPECT_EQ(NormalizePhoneNumber(phone1, "US"), ASCIIToUTF16("16507498323")); | 24 EXPECT_EQ(NormalizePhoneNumber(phone1, "US", "en-US"), |
| 25 ASCIIToUTF16("16507498323")); |
25 | 26 |
26 // Devanagari script digits. | 27 // Devanagari script digits. |
27 string16 phone2(UTF8ToUTF16("\xD9\xA1\xD9\xA6\xD9\xA5\xD9\xA0\xD9\xA8\xD9\xA3" | 28 string16 phone2(UTF8ToUTF16("\xD9\xA1\xD9\xA6\xD9\xA5\xD9\xA0\xD9\xA8\xD9\xA3" |
28 "\xD9\xA2\xD9\xA3\xD9\xA7\xD9\xA4\xD9\xA9")); | 29 "\xD9\xA2\xD9\xA3\xD9\xA7\xD9\xA4\xD9\xA9")); |
29 EXPECT_EQ(NormalizePhoneNumber(phone2, "US"), ASCIIToUTF16("16508323749")); | 30 EXPECT_EQ(NormalizePhoneNumber(phone2, "US", "en-US"), |
| 31 ASCIIToUTF16("16508323749")); |
30 | 32 |
31 string16 phone3(UTF8ToUTF16("16503334\xef\xbc\x92\x35\xd9\xa5")); | 33 string16 phone3(UTF8ToUTF16("16503334\xef\xbc\x92\x35\xd9\xa5")); |
32 EXPECT_EQ(NormalizePhoneNumber(phone3, "US"), ASCIIToUTF16("16503334255")); | 34 EXPECT_EQ(NormalizePhoneNumber(phone3, "US", "en-US"), |
| 35 ASCIIToUTF16("16503334255")); |
33 | 36 |
34 string16 phone4(UTF8ToUTF16("+1(650)2346789")); | 37 string16 phone4(UTF8ToUTF16("+1(650)2346789")); |
35 EXPECT_EQ(NormalizePhoneNumber(phone4, "US"), ASCIIToUTF16("16502346789")); | 38 EXPECT_EQ(NormalizePhoneNumber(phone4, "US", "en-US"), |
| 39 ASCIIToUTF16("16502346789")); |
36 | 40 |
37 string16 phone5(UTF8ToUTF16("6502346789")); | 41 string16 phone5(UTF8ToUTF16("6502346789")); |
38 EXPECT_EQ(NormalizePhoneNumber(phone5, "US"), ASCIIToUTF16("6502346789")); | 42 EXPECT_EQ(NormalizePhoneNumber(phone5, "US", "en-US"), |
| 43 ASCIIToUTF16("6502346789")); |
39 } | 44 } |
40 | 45 |
41 TEST(PhoneNumberI18NTest, ParsePhoneNumber) { | 46 TEST(PhoneNumberI18NTest, ParsePhoneNumber) { |
42 string16 number; | 47 string16 number; |
43 string16 city_code; | 48 string16 city_code; |
44 string16 country_code; | 49 string16 country_code; |
45 i18n::phonenumbers::PhoneNumber unused_i18n_number; | 50 i18n::phonenumbers::PhoneNumber unused_i18n_number; |
46 | 51 |
47 // Test for empty string. Should give back empty strings. | 52 // Test for empty string. Should give back empty strings. |
48 string16 phone0; | 53 string16 phone0; |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 EXPECT_EQ(ASCIIToUTF16("800"), city_code); | 271 EXPECT_EQ(ASCIIToUTF16("800"), city_code); |
267 EXPECT_EQ(ASCIIToUTF16("1"), country_code); | 272 EXPECT_EQ(ASCIIToUTF16("1"), country_code); |
268 } | 273 } |
269 | 274 |
270 TEST(PhoneNumberI18NTest, ConstructPhoneNumber) { | 275 TEST(PhoneNumberI18NTest, ConstructPhoneNumber) { |
271 string16 number; | 276 string16 number; |
272 EXPECT_TRUE(ConstructPhoneNumber(ASCIIToUTF16("1"), | 277 EXPECT_TRUE(ConstructPhoneNumber(ASCIIToUTF16("1"), |
273 ASCIIToUTF16("650"), | 278 ASCIIToUTF16("650"), |
274 ASCIIToUTF16("2345678"), | 279 ASCIIToUTF16("2345678"), |
275 "US", | 280 "US", |
| 281 "en-US", |
276 &number)); | 282 &number)); |
277 EXPECT_EQ(number, ASCIIToUTF16("+1 650-234-5678")); | 283 EXPECT_EQ(number, ASCIIToUTF16("+1 650-234-5678")); |
278 EXPECT_TRUE(ConstructPhoneNumber(string16(), | 284 EXPECT_TRUE(ConstructPhoneNumber(string16(), |
279 ASCIIToUTF16("650"), | 285 ASCIIToUTF16("650"), |
280 ASCIIToUTF16("2345678"), | 286 ASCIIToUTF16("2345678"), |
281 "US", | 287 "US", |
| 288 "en-US", |
282 &number)); | 289 &number)); |
283 EXPECT_EQ(number, ASCIIToUTF16("(650) 234-5678")); | 290 EXPECT_EQ(number, ASCIIToUTF16("(650) 234-5678")); |
284 EXPECT_TRUE(ConstructPhoneNumber(ASCIIToUTF16("1"), | 291 EXPECT_TRUE(ConstructPhoneNumber(ASCIIToUTF16("1"), |
285 string16(), | 292 string16(), |
286 ASCIIToUTF16("6502345678"), | 293 ASCIIToUTF16("6502345678"), |
287 "US", | 294 "US", |
| 295 "en-US", |
288 &number)); | 296 &number)); |
289 EXPECT_EQ(number, ASCIIToUTF16("+1 650-234-5678")); | 297 EXPECT_EQ(number, ASCIIToUTF16("+1 650-234-5678")); |
290 EXPECT_TRUE(ConstructPhoneNumber(string16(), | 298 EXPECT_TRUE(ConstructPhoneNumber(string16(), |
291 string16(), | 299 string16(), |
292 ASCIIToUTF16("6502345678"), | 300 ASCIIToUTF16("6502345678"), |
293 "US", | 301 "US", |
| 302 "en-US", |
294 &number)); | 303 &number)); |
295 EXPECT_EQ(number, ASCIIToUTF16("(650) 234-5678")); | 304 EXPECT_EQ(number, ASCIIToUTF16("(650) 234-5678")); |
296 | 305 |
297 EXPECT_FALSE(ConstructPhoneNumber(string16(), | 306 EXPECT_FALSE(ConstructPhoneNumber(string16(), |
298 ASCIIToUTF16("650"), | 307 ASCIIToUTF16("650"), |
299 ASCIIToUTF16("234567890"), | 308 ASCIIToUTF16("234567890"), |
300 "US", | 309 "US", |
| 310 "en-US", |
301 &number)); | 311 &number)); |
302 EXPECT_EQ(number, string16()); | 312 EXPECT_EQ(number, string16()); |
303 // Italian number | 313 // Italian number |
304 EXPECT_TRUE(ConstructPhoneNumber(ASCIIToUTF16("39"), | 314 EXPECT_TRUE(ConstructPhoneNumber(ASCIIToUTF16("39"), |
305 ASCIIToUTF16("347"), | 315 ASCIIToUTF16("347"), |
306 ASCIIToUTF16("2345678"), | 316 ASCIIToUTF16("2345678"), |
307 "IT", | 317 "IT", |
| 318 "en-US", |
308 &number)); | 319 &number)); |
309 EXPECT_EQ(number, ASCIIToUTF16("+39 347 234 5678")); | 320 EXPECT_EQ(number, ASCIIToUTF16("+39 347 234 5678")); |
310 EXPECT_TRUE(ConstructPhoneNumber(string16(), | 321 EXPECT_TRUE(ConstructPhoneNumber(string16(), |
311 ASCIIToUTF16("347"), | 322 ASCIIToUTF16("347"), |
312 ASCIIToUTF16("2345678"), | 323 ASCIIToUTF16("2345678"), |
313 "IT", | 324 "IT", |
| 325 "en-US", |
314 &number)); | 326 &number)); |
315 EXPECT_EQ(number, ASCIIToUTF16("347 234 5678")); | 327 EXPECT_EQ(number, ASCIIToUTF16("347 234 5678")); |
316 // German number. | 328 // German number. |
317 EXPECT_TRUE(ConstructPhoneNumber(ASCIIToUTF16("49"), | 329 EXPECT_TRUE(ConstructPhoneNumber(ASCIIToUTF16("49"), |
318 ASCIIToUTF16("024"), | 330 ASCIIToUTF16("024"), |
319 ASCIIToUTF16("2345678901"), | 331 ASCIIToUTF16("2345678901"), |
320 "DE", | 332 "DE", |
| 333 "en-US", |
321 &number)); | 334 &number)); |
322 EXPECT_EQ(number, ASCIIToUTF16("+49 2423/45678901")); | 335 EXPECT_EQ(number, ASCIIToUTF16("+49 2423/45678901")); |
323 EXPECT_TRUE(ConstructPhoneNumber(string16(), | 336 EXPECT_TRUE(ConstructPhoneNumber(string16(), |
324 ASCIIToUTF16("024"), | 337 ASCIIToUTF16("024"), |
325 ASCIIToUTF16("2345678901"), | 338 ASCIIToUTF16("2345678901"), |
326 "DE", | 339 "DE", |
| 340 "en-US", |
327 &number)); | 341 &number)); |
328 EXPECT_EQ(number, ASCIIToUTF16("02423/45678901")); | 342 EXPECT_EQ(number, ASCIIToUTF16("02423/45678901")); |
329 } | 343 } |
330 | 344 |
331 TEST(PhoneNumberI18NTest, PhoneNumbersMatch) { | 345 TEST(PhoneNumberI18NTest, PhoneNumbersMatch) { |
332 // Same numbers, defined country code. | 346 // Same numbers, defined country code. |
333 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("4158889999"), | 347 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("4158889999"), |
334 ASCIIToUTF16("4158889999"), | 348 ASCIIToUTF16("4158889999"), |
335 "US")); | 349 "US", |
| 350 "en-US")); |
336 // Same numbers, undefined country code. | 351 // Same numbers, undefined country code. |
337 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("4158889999"), | 352 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("4158889999"), |
338 ASCIIToUTF16("4158889999"), | 353 ASCIIToUTF16("4158889999"), |
339 "")); | 354 "", |
| 355 "en-US")); |
340 | 356 |
341 // Numbers differ by country code only. | 357 // Numbers differ by country code only. |
342 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("14158889999"), | 358 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("14158889999"), |
343 ASCIIToUTF16("4158889999"), | 359 ASCIIToUTF16("4158889999"), |
344 "US")); | 360 "US", |
| 361 "en-US")); |
345 | 362 |
346 // Same numbers, different formats. | 363 // Same numbers, different formats. |
347 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("4158889999"), | 364 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("4158889999"), |
348 ASCIIToUTF16("415-888-9999"), | 365 ASCIIToUTF16("415-888-9999"), |
349 "US")); | 366 "US", |
| 367 "en-US")); |
350 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("4158889999"), | 368 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("4158889999"), |
351 ASCIIToUTF16("(415)888-9999"), | 369 ASCIIToUTF16("(415)888-9999"), |
352 "US")); | 370 "US", |
| 371 "en-US")); |
353 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("4158889999"), | 372 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("4158889999"), |
354 ASCIIToUTF16("415 888 9999"), | 373 ASCIIToUTF16("415 888 9999"), |
355 "US")); | 374 "US", |
| 375 "en-US")); |
356 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("4158889999"), | 376 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("4158889999"), |
357 ASCIIToUTF16("415 TUV WXYZ"), | 377 ASCIIToUTF16("415 TUV WXYZ"), |
358 "US")); | 378 "US", |
| 379 "en-US")); |
359 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("1(415)888-99-99"), | 380 EXPECT_TRUE(PhoneNumbersMatch(ASCIIToUTF16("1(415)888-99-99"), |
360 ASCIIToUTF16("+14158889999"), | 381 ASCIIToUTF16("+14158889999"), |
361 "US")); | 382 "US", |
| 383 "en-US")); |
362 | 384 |
363 // Partial matches don't count. | 385 // Partial matches don't count. |
364 EXPECT_FALSE(PhoneNumbersMatch(ASCIIToUTF16("14158889999"), | 386 EXPECT_FALSE(PhoneNumbersMatch(ASCIIToUTF16("14158889999"), |
365 ASCIIToUTF16("8889999"), | 387 ASCIIToUTF16("8889999"), |
366 "US")); | 388 "US", |
| 389 "en-US")); |
367 | 390 |
368 // Different numbers don't match. | 391 // Different numbers don't match. |
369 EXPECT_FALSE(PhoneNumbersMatch(ASCIIToUTF16("14158889999"), | 392 EXPECT_FALSE(PhoneNumbersMatch(ASCIIToUTF16("14158889999"), |
370 ASCIIToUTF16("1415888"), | 393 ASCIIToUTF16("1415888"), |
371 "US")); | 394 "US", |
| 395 "en-US")); |
372 } | 396 } |
OLD | NEW |