Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Side by Side Diff: chrome/browser/autofill/phone_field_unittest.cc

Issue 12434004: Move remaining Autofill code to //components/autofill. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix long lines Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/autofill/phone_field.cc ('k') | chrome/browser/autofill/phone_number.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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/memory/scoped_ptr.h"
6 #include "base/memory/scoped_vector.h"
7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/autofill/autofill_field.h"
9 #include "chrome/browser/autofill/autofill_scanner.h"
10 #include "chrome/browser/autofill/phone_field.h"
11 #include "components/autofill/common/form_field_data.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 class PhoneFieldTest : public testing::Test {
15 public:
16 PhoneFieldTest() {}
17
18 protected:
19 ScopedVector<const AutofillField> list_;
20 scoped_ptr<PhoneField> field_;
21 FieldTypeMap field_type_map_;
22
23 // Downcast for tests.
24 static PhoneField* Parse(AutofillScanner* scanner) {
25 return static_cast<PhoneField*>(PhoneField::Parse(scanner));
26 }
27
28 private:
29 DISALLOW_COPY_AND_ASSIGN(PhoneFieldTest);
30 };
31
32 TEST_F(PhoneFieldTest, Empty) {
33 AutofillScanner scanner(list_.get());
34 field_.reset(Parse(&scanner));
35 ASSERT_EQ(static_cast<PhoneField*>(NULL), field_.get());
36 }
37
38 TEST_F(PhoneFieldTest, NonParse) {
39 list_.push_back(new AutofillField);
40 AutofillScanner scanner(list_.get());
41 field_.reset(Parse(&scanner));
42 ASSERT_EQ(static_cast<PhoneField*>(NULL), field_.get());
43 }
44
45 TEST_F(PhoneFieldTest, ParseOneLinePhone) {
46 FormFieldData field;
47 field.form_control_type = "text";
48
49 field.label = ASCIIToUTF16("Phone");
50 field.name = ASCIIToUTF16("phone");
51 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1")));
52
53 AutofillScanner scanner(list_.get());
54 field_.reset(Parse(&scanner));
55 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get());
56 ASSERT_TRUE(field_->ClassifyField(&field_type_map_));
57 ASSERT_TRUE(
58 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end());
59 EXPECT_EQ(PHONE_HOME_WHOLE_NUMBER, field_type_map_[ASCIIToUTF16("phone1")]);
60 }
61
62 TEST_F(PhoneFieldTest, ParseTwoLinePhone) {
63 FormFieldData field;
64 field.form_control_type = "text";
65
66 field.label = ASCIIToUTF16("Area Code");
67 field.name = ASCIIToUTF16("area code");
68 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1")));
69
70 field.label = ASCIIToUTF16("Phone");
71 field.name = ASCIIToUTF16("phone");
72 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2")));
73
74 AutofillScanner scanner(list_.get());
75 field_.reset(Parse(&scanner));
76 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get());
77 ASSERT_TRUE(field_->ClassifyField(&field_type_map_));
78 ASSERT_TRUE(
79 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end());
80 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]);
81 ASSERT_TRUE(
82 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end());
83 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]);
84 }
85
86 TEST_F(PhoneFieldTest, ThreePartPhoneNumber) {
87 // Phone in format <field> - <field> - <field> could be either
88 // <area code> - <prefix> - <suffix>, or
89 // <country code> - <area code> - <phone>. The only distinguishing feature is
90 // size: <prefix> is no bigger than 3 characters, and <suffix> is no bigger
91 // than 4.
92 FormFieldData field;
93 field.form_control_type = "text";
94
95 field.label = ASCIIToUTF16("Phone:");
96 field.name = ASCIIToUTF16("dayphone1");
97 field.max_length = 0;
98 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1")));
99
100 field.label = ASCIIToUTF16("-");
101 field.name = ASCIIToUTF16("dayphone2");
102 field.max_length = 3;
103 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2")));
104
105 field.label = ASCIIToUTF16("-");
106 field.name = ASCIIToUTF16("dayphone3");
107 field.max_length = 4;
108 list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3")));
109
110 field.label = ASCIIToUTF16("ext.:");
111 field.name = ASCIIToUTF16("dayphone4");
112 field.max_length = 0;
113 list_.push_back(new AutofillField(field, ASCIIToUTF16("ext4")));
114
115 AutofillScanner scanner(list_.get());
116 field_.reset(Parse(&scanner));
117 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get());
118 ASSERT_TRUE(field_->ClassifyField(&field_type_map_));
119 ASSERT_TRUE(
120 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end());
121 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]);
122 ASSERT_TRUE(
123 field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end());
124 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]);
125 ASSERT_TRUE(
126 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end());
127 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]);
128 EXPECT_TRUE(
129 field_type_map_.find(ASCIIToUTF16("ext4")) == field_type_map_.end());
130 }
131
132 // This scenario of explicitly labeled "prefix" and "suffix" phone numbers
133 // encountered in http://crbug.com/40694 with page
134 // https://www.wrapables.com/jsp/Signup.jsp.
135 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix) {
136 FormFieldData field;
137 field.form_control_type = "text";
138
139 field.label = ASCIIToUTF16("Phone:");
140 field.name = ASCIIToUTF16("area");
141 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1")));
142
143 field.label = string16();
144 field.name = ASCIIToUTF16("prefix");
145 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2")));
146
147 field.label = string16();
148 field.name = ASCIIToUTF16("suffix");
149 list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3")));
150
151 AutofillScanner scanner(list_.get());
152 field_.reset(Parse(&scanner));
153 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get());
154 ASSERT_TRUE(field_->ClassifyField(&field_type_map_));
155 ASSERT_TRUE(
156 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end());
157 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]);
158 ASSERT_TRUE(
159 field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end());
160 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]);
161 ASSERT_TRUE(
162 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end());
163 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]);
164 }
165
166 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix2) {
167 FormFieldData field;
168 field.form_control_type = "text";
169
170 field.label = ASCIIToUTF16("(");
171 field.name = ASCIIToUTF16("phone1");
172 field.max_length = 3;
173 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1")));
174
175 field.label = ASCIIToUTF16(")");
176 field.name = ASCIIToUTF16("phone2");
177 field.max_length = 3;
178 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2")));
179
180 field.label = string16();
181 field.name = ASCIIToUTF16("phone3");
182 field.max_length = 4;
183 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone3")));
184
185 AutofillScanner scanner(list_.get());
186 field_.reset(Parse(&scanner));
187 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get());
188 ASSERT_TRUE(field_->ClassifyField(&field_type_map_));
189 ASSERT_TRUE(
190 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end());
191 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("phone1")]);
192 ASSERT_TRUE(
193 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end());
194 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]);
195 ASSERT_TRUE(
196 field_type_map_.find(ASCIIToUTF16("phone3")) != field_type_map_.end());
197 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone3")]);
198 }
199
200 TEST_F(PhoneFieldTest, CountryAndCityAndPhoneNumber) {
201 // Phone in format <country code>:3 - <city and number>:10
202 // The |maxlength| is considered, otherwise it's too broad.
203 FormFieldData field;
204 field.form_control_type = "text";
205
206 field.label = ASCIIToUTF16("Phone Number");
207 field.name = ASCIIToUTF16("CountryCode");
208 field.max_length = 3;
209 list_.push_back(new AutofillField(field, ASCIIToUTF16("country")));
210
211 field.label = ASCIIToUTF16("Phone Number");
212 field.name = ASCIIToUTF16("PhoneNumber");
213 field.max_length = 10;
214 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone")));
215
216 AutofillScanner scanner(list_.get());
217 field_.reset(Parse(&scanner));
218 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get());
219 ASSERT_TRUE(field_->ClassifyField(&field_type_map_));
220 ASSERT_TRUE(
221 field_type_map_.find(ASCIIToUTF16("country")) != field_type_map_.end());
222 EXPECT_EQ(PHONE_HOME_COUNTRY_CODE, field_type_map_[ASCIIToUTF16("country")]);
223 ASSERT_TRUE(
224 field_type_map_.find(ASCIIToUTF16("phone")) != field_type_map_.end());
225 EXPECT_EQ(PHONE_HOME_CITY_AND_NUMBER, field_type_map_[ASCIIToUTF16("phone")]);
226 }
OLDNEW
« no previous file with comments | « chrome/browser/autofill/phone_field.cc ('k') | chrome/browser/autofill/phone_number.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698