• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "base/utf_string_conversions.h"
6 #include "chrome/browser/autofill/home_phone_number.h"
7 #include "chrome/browser/autofill/phone_number.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 
10 // Tests the phone number parser.
TEST(PhoneNumberTest,Parser)11 TEST(PhoneNumberTest, Parser) {
12   string16 number;
13   string16 city_code;
14   string16 country_code;
15 
16   // Test for empty string.  Should give back empty strings.
17   string16 phone0;
18   PhoneNumber::ParsePhoneNumber(phone0, &number, &city_code, &country_code);
19   EXPECT_EQ(string16(), number);
20   EXPECT_EQ(string16(), city_code);
21   EXPECT_EQ(string16(), country_code);
22 
23   // Test for string with less than 7 digits.  Should give back empty strings.
24   string16 phone1(ASCIIToUTF16("1234"));
25   PhoneNumber::ParsePhoneNumber(phone1, &number, &city_code, &country_code);
26   EXPECT_EQ(string16(), number);
27   EXPECT_EQ(string16(), city_code);
28   EXPECT_EQ(string16(), country_code);
29 
30   // Test for string with exactly 7 digits.  Should give back only phone number.
31   string16 phone2(ASCIIToUTF16("1234567"));
32   PhoneNumber::ParsePhoneNumber(phone2, &number, &city_code, &country_code);
33   EXPECT_EQ(ASCIIToUTF16("1234567"), number);
34   EXPECT_EQ(string16(), city_code);
35   EXPECT_EQ(string16(), country_code);
36 
37   // Test for string with exactly 7 digits and separators.  Should give back
38   // only phone number.
39   string16 phone_separator2(ASCIIToUTF16("123-4567"));
40   PhoneNumber::ParsePhoneNumber(phone_separator2,
41       &number, &city_code, &country_code);
42   EXPECT_EQ(ASCIIToUTF16("1234567"), number);
43   EXPECT_EQ(string16(), city_code);
44   EXPECT_EQ(string16(), country_code);
45 
46   // Test for string with greater than 7 digits but less than 10 digits.
47   // Should give back only phone number.
48   string16 phone3(ASCIIToUTF16("123456789"));
49   PhoneNumber::ParsePhoneNumber(phone3, &number, &city_code, &country_code);
50   EXPECT_EQ(ASCIIToUTF16("3456789"), number);
51   EXPECT_EQ(string16(), city_code);
52   EXPECT_EQ(string16(), country_code);
53 
54   // Test for string with greater than 7 digits but less than 10 digits and
55   // separators.
56   // Should give back only phone number.
57   string16 phone_separator3(ASCIIToUTF16("12.345-6789"));
58   PhoneNumber::ParsePhoneNumber(phone3, &number, &city_code, &country_code);
59   EXPECT_EQ(ASCIIToUTF16("3456789"), number);
60   EXPECT_EQ(string16(), city_code);
61   EXPECT_EQ(string16(), country_code);
62 
63   // Test for string with exactly 10 digits.
64   // Should give back phone number and city code.
65   string16 phone4(ASCIIToUTF16("1234567890"));
66   PhoneNumber::ParsePhoneNumber(phone4, &number, &city_code, &country_code);
67   EXPECT_EQ(ASCIIToUTF16("4567890"), number);
68   EXPECT_EQ(ASCIIToUTF16("123"), city_code);
69   EXPECT_EQ(string16(), country_code);
70 
71   // Test for string with exactly 10 digits and separators.
72   // Should give back phone number and city code.
73   string16 phone_separator4(ASCIIToUTF16("(123) 456-7890"));
74   PhoneNumber::ParsePhoneNumber(phone_separator4,
75       &number, &city_code, &country_code);
76   EXPECT_EQ(ASCIIToUTF16("4567890"), number);
77   EXPECT_EQ(ASCIIToUTF16("123"), city_code);
78   EXPECT_EQ(string16(), country_code);
79 
80   // Test for string with over 10 digits.
81   // Should give back phone number, city code, and country code.
82   string16 phone5(ASCIIToUTF16("011234567890"));
83   PhoneNumber::ParsePhoneNumber(phone5, &number, &city_code, &country_code);
84   EXPECT_EQ(ASCIIToUTF16("4567890"), number);
85   EXPECT_EQ(ASCIIToUTF16("123"), city_code);
86   EXPECT_EQ(ASCIIToUTF16("01"), country_code);
87 
88   // Test for string with over 10 digits with separator characters.
89   // Should give back phone number, city code, and country code.
90   string16 phone6(ASCIIToUTF16("(01) 123-456.7890"));
91   PhoneNumber::ParsePhoneNumber(phone6, &number, &city_code, &country_code);
92   EXPECT_EQ(ASCIIToUTF16("4567890"), number);
93   EXPECT_EQ(ASCIIToUTF16("123"), city_code);
94   EXPECT_EQ(ASCIIToUTF16("01"), country_code);
95 }
96 
TEST(PhoneNumberTest,Matcher)97 TEST(PhoneNumberTest, Matcher) {
98   // Set phone number so country_code == 12, city_code = 123, number = 1234567.
99   string16 phone(ASCIIToUTF16("121231234567"));
100   HomePhoneNumber phone_number;
101   phone_number.set_whole_number(phone);
102 
103   EXPECT_FALSE(phone_number.IsCountryCode(ASCIIToUTF16("")));
104   EXPECT_FALSE(phone_number.IsCountryCode(ASCIIToUTF16("1")));
105   EXPECT_TRUE(phone_number.IsCountryCode(ASCIIToUTF16("12")));
106   EXPECT_FALSE(phone_number.IsCountryCode(ASCIIToUTF16("123")));
107 
108   EXPECT_FALSE(phone_number.IsCityCode(ASCIIToUTF16("")));
109   EXPECT_FALSE(phone_number.IsCityCode(ASCIIToUTF16("1")));
110   EXPECT_FALSE(phone_number.IsCityCode(ASCIIToUTF16("12")));
111   EXPECT_TRUE(phone_number.IsCityCode(ASCIIToUTF16("123")));
112   EXPECT_FALSE(phone_number.IsCityCode(ASCIIToUTF16("1234")));
113 
114   EXPECT_FALSE(phone_number.IsNumber(ASCIIToUTF16("")));
115   EXPECT_FALSE(phone_number.IsNumber(ASCIIToUTF16("1")));
116   EXPECT_FALSE(phone_number.IsNumber(ASCIIToUTF16("12")));
117   EXPECT_TRUE(phone_number.IsNumber(ASCIIToUTF16("123")));
118   EXPECT_FALSE(phone_number.IsNumber(ASCIIToUTF16("1234")));
119   EXPECT_FALSE(phone_number.IsNumber(ASCIIToUTF16("12345")));
120   EXPECT_FALSE(phone_number.IsNumber(ASCIIToUTF16("123456")));
121   EXPECT_TRUE(phone_number.IsNumber(ASCIIToUTF16("1234567")));
122   EXPECT_FALSE(phone_number.IsNumber(ASCIIToUTF16("234567")));
123   EXPECT_FALSE(phone_number.IsNumber(ASCIIToUTF16("34567")));
124   EXPECT_TRUE(phone_number.IsNumber(ASCIIToUTF16("4567")));
125   EXPECT_FALSE(phone_number.IsNumber(ASCIIToUTF16("567")));
126   EXPECT_FALSE(phone_number.IsNumber(ASCIIToUTF16("67")));
127   EXPECT_FALSE(phone_number.IsNumber(ASCIIToUTF16("7")));
128 }
129