OLD | NEW |
| (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/string16.h" | |
8 #include "base/utf_string_conversions.h" | |
9 #include "chrome/browser/autofill/address_field.h" | |
10 #include "chrome/browser/autofill/autofill_field.h" | |
11 #include "chrome/browser/autofill/autofill_scanner.h" | |
12 #include "components/autofill/common/form_field_data.h" | |
13 #include "testing/gtest/include/gtest/gtest.h" | |
14 | |
15 class AddressFieldTest : public testing::Test { | |
16 public: | |
17 AddressFieldTest() {} | |
18 | |
19 protected: | |
20 ScopedVector<const AutofillField> list_; | |
21 scoped_ptr<AddressField> field_; | |
22 FieldTypeMap field_type_map_; | |
23 | |
24 // Downcast for tests. | |
25 static AddressField* Parse(AutofillScanner* scanner) { | |
26 return static_cast<AddressField*>(AddressField::Parse(scanner)); | |
27 } | |
28 | |
29 private: | |
30 DISALLOW_COPY_AND_ASSIGN(AddressFieldTest); | |
31 }; | |
32 | |
33 TEST_F(AddressFieldTest, Empty) { | |
34 AutofillScanner scanner(list_.get()); | |
35 field_.reset(Parse(&scanner)); | |
36 ASSERT_EQ(static_cast<AddressField*>(NULL), field_.get()); | |
37 } | |
38 | |
39 TEST_F(AddressFieldTest, NonParse) { | |
40 list_.push_back(new AutofillField); | |
41 AutofillScanner scanner(list_.get()); | |
42 field_.reset(Parse(&scanner)); | |
43 ASSERT_EQ(static_cast<AddressField*>(NULL), field_.get()); | |
44 } | |
45 | |
46 TEST_F(AddressFieldTest, ParseOneLineAddress) { | |
47 FormFieldData field; | |
48 field.form_control_type = "text"; | |
49 | |
50 field.label = ASCIIToUTF16("Address"); | |
51 field.name = ASCIIToUTF16("address"); | |
52 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); | |
53 | |
54 AutofillScanner scanner(list_.get()); | |
55 field_.reset(Parse(&scanner)); | |
56 ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); | |
57 EXPECT_EQ(AddressField::kGenericAddress, field_->FindType()); | |
58 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | |
59 ASSERT_TRUE( | |
60 field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); | |
61 EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); | |
62 } | |
63 | |
64 TEST_F(AddressFieldTest, ParseOneLineAddressBilling) { | |
65 FormFieldData field; | |
66 field.form_control_type = "text"; | |
67 | |
68 field.label = ASCIIToUTF16("Address"); | |
69 field.name = ASCIIToUTF16("billingAddress"); | |
70 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); | |
71 | |
72 AutofillScanner scanner(list_.get()); | |
73 field_.reset(Parse(&scanner)); | |
74 ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); | |
75 EXPECT_EQ(AddressField::kBillingAddress, field_->FindType()); | |
76 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | |
77 ASSERT_TRUE( | |
78 field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); | |
79 EXPECT_EQ(ADDRESS_BILLING_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); | |
80 } | |
81 | |
82 TEST_F(AddressFieldTest, ParseOneLineAddressShipping) { | |
83 FormFieldData field; | |
84 field.form_control_type = "text"; | |
85 | |
86 field.label = ASCIIToUTF16("Address"); | |
87 field.name = ASCIIToUTF16("shippingAddress"); | |
88 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); | |
89 | |
90 AutofillScanner scanner(list_.get()); | |
91 field_.reset(Parse(&scanner)); | |
92 ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); | |
93 EXPECT_EQ(AddressField::kShippingAddress, field_->FindType()); | |
94 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | |
95 ASSERT_TRUE( | |
96 field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); | |
97 EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); | |
98 } | |
99 | |
100 TEST_F(AddressFieldTest, ParseTwoLineAddress) { | |
101 FormFieldData field; | |
102 field.form_control_type = "text"; | |
103 | |
104 field.label = ASCIIToUTF16("Address"); | |
105 field.name = ASCIIToUTF16("address"); | |
106 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); | |
107 | |
108 field.label = string16(); | |
109 field.name = string16(); | |
110 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr2"))); | |
111 | |
112 AutofillScanner scanner(list_.get()); | |
113 field_.reset(Parse(&scanner)); | |
114 ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); | |
115 EXPECT_EQ(AddressField::kGenericAddress, field_->FindType()); | |
116 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | |
117 ASSERT_TRUE( | |
118 field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); | |
119 EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); | |
120 ASSERT_TRUE( | |
121 field_type_map_.find(ASCIIToUTF16("addr2")) != field_type_map_.end()); | |
122 EXPECT_EQ(ADDRESS_HOME_LINE2, field_type_map_[ASCIIToUTF16("addr2")]); | |
123 } | |
124 | |
125 TEST_F(AddressFieldTest, ParseThreeLineAddress) { | |
126 FormFieldData field; | |
127 field.form_control_type = "text"; | |
128 | |
129 field.label = ASCIIToUTF16("Address Line1"); | |
130 field.name = ASCIIToUTF16("Address1"); | |
131 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); | |
132 | |
133 field.label = ASCIIToUTF16("Address Line2"); | |
134 field.name = ASCIIToUTF16("Address2"); | |
135 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr2"))); | |
136 | |
137 field.label = ASCIIToUTF16("Address Line3"); | |
138 field.name = ASCIIToUTF16("Address3"); | |
139 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr3"))); | |
140 | |
141 AutofillScanner scanner(list_.get()); | |
142 field_.reset(Parse(&scanner)); | |
143 ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); | |
144 EXPECT_EQ(AddressField::kGenericAddress, field_->FindType()); | |
145 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | |
146 ASSERT_TRUE( | |
147 field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); | |
148 EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); | |
149 ASSERT_TRUE( | |
150 field_type_map_.find(ASCIIToUTF16("addr2")) != field_type_map_.end()); | |
151 EXPECT_EQ(ADDRESS_HOME_LINE2, field_type_map_[ASCIIToUTF16("addr2")]); | |
152 ASSERT_TRUE( | |
153 field_type_map_.find(ASCIIToUTF16("addr3")) == field_type_map_.end()); | |
154 } | |
155 | |
156 TEST_F(AddressFieldTest, ParseCity) { | |
157 FormFieldData field; | |
158 field.form_control_type = "text"; | |
159 | |
160 field.label = ASCIIToUTF16("City"); | |
161 field.name = ASCIIToUTF16("city"); | |
162 list_.push_back(new AutofillField(field, ASCIIToUTF16("city1"))); | |
163 | |
164 AutofillScanner scanner(list_.get()); | |
165 field_.reset(Parse(&scanner)); | |
166 ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); | |
167 EXPECT_EQ(AddressField::kGenericAddress, field_->FindType()); | |
168 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | |
169 ASSERT_TRUE( | |
170 field_type_map_.find(ASCIIToUTF16("city1")) != field_type_map_.end()); | |
171 EXPECT_EQ(ADDRESS_HOME_CITY, field_type_map_[ASCIIToUTF16("city1")]); | |
172 } | |
173 | |
174 TEST_F(AddressFieldTest, ParseState) { | |
175 FormFieldData field; | |
176 field.form_control_type = "text"; | |
177 | |
178 field.label = ASCIIToUTF16("State"); | |
179 field.name = ASCIIToUTF16("state"); | |
180 list_.push_back(new AutofillField(field, ASCIIToUTF16("state1"))); | |
181 | |
182 AutofillScanner scanner(list_.get()); | |
183 field_.reset(Parse(&scanner)); | |
184 ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); | |
185 EXPECT_EQ(AddressField::kGenericAddress, field_->FindType()); | |
186 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | |
187 ASSERT_TRUE( | |
188 field_type_map_.find(ASCIIToUTF16("state1")) != field_type_map_.end()); | |
189 EXPECT_EQ(ADDRESS_HOME_STATE, field_type_map_[ASCIIToUTF16("state1")]); | |
190 } | |
191 | |
192 TEST_F(AddressFieldTest, ParseZip) { | |
193 FormFieldData field; | |
194 field.form_control_type = "text"; | |
195 | |
196 field.label = ASCIIToUTF16("Zip"); | |
197 field.name = ASCIIToUTF16("zip"); | |
198 list_.push_back(new AutofillField(field, ASCIIToUTF16("zip1"))); | |
199 | |
200 AutofillScanner scanner(list_.get()); | |
201 field_.reset(Parse(&scanner)); | |
202 ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); | |
203 EXPECT_EQ(AddressField::kGenericAddress, field_->FindType()); | |
204 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | |
205 ASSERT_TRUE( | |
206 field_type_map_.find(ASCIIToUTF16("zip1")) != field_type_map_.end()); | |
207 EXPECT_EQ(ADDRESS_HOME_ZIP, field_type_map_[ASCIIToUTF16("zip1")]); | |
208 } | |
209 | |
210 TEST_F(AddressFieldTest, ParseStateAndZipOneLabel) { | |
211 FormFieldData field; | |
212 field.form_control_type = "text"; | |
213 | |
214 field.label = ASCIIToUTF16("State/Province, Zip/Postal Code"); | |
215 field.name = ASCIIToUTF16("state"); | |
216 list_.push_back(new AutofillField(field, ASCIIToUTF16("state"))); | |
217 | |
218 field.label = ASCIIToUTF16("State/Province, Zip/Postal Code"); | |
219 field.name = ASCIIToUTF16("zip"); | |
220 list_.push_back(new AutofillField(field, ASCIIToUTF16("zip"))); | |
221 | |
222 AutofillScanner scanner(list_.get()); | |
223 field_.reset(Parse(&scanner)); | |
224 ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); | |
225 EXPECT_EQ(AddressField::kGenericAddress, field_->FindType()); | |
226 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | |
227 ASSERT_TRUE( | |
228 field_type_map_.find(ASCIIToUTF16("state")) != field_type_map_.end()); | |
229 EXPECT_EQ(ADDRESS_HOME_STATE, field_type_map_[ASCIIToUTF16("state")]); | |
230 ASSERT_TRUE( | |
231 field_type_map_.find(ASCIIToUTF16("zip")) != field_type_map_.end()); | |
232 EXPECT_EQ(ADDRESS_HOME_ZIP, field_type_map_[ASCIIToUTF16("zip")]); | |
233 } | |
234 | |
235 TEST_F(AddressFieldTest, ParseCountry) { | |
236 FormFieldData field; | |
237 field.form_control_type = "text"; | |
238 | |
239 field.label = ASCIIToUTF16("Country"); | |
240 field.name = ASCIIToUTF16("country"); | |
241 list_.push_back(new AutofillField(field, ASCIIToUTF16("country1"))); | |
242 | |
243 AutofillScanner scanner(list_.get()); | |
244 field_.reset(Parse(&scanner)); | |
245 ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); | |
246 EXPECT_EQ(AddressField::kGenericAddress, field_->FindType()); | |
247 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | |
248 ASSERT_TRUE( | |
249 field_type_map_.find(ASCIIToUTF16("country1")) != field_type_map_.end()); | |
250 EXPECT_EQ(ADDRESS_HOME_COUNTRY, field_type_map_[ASCIIToUTF16("country1")]); | |
251 } | |
252 | |
253 TEST_F(AddressFieldTest, ParseTwoLineAddressMissingLabel) { | |
254 FormFieldData field; | |
255 field.form_control_type = "text"; | |
256 | |
257 field.label = ASCIIToUTF16("Address"); | |
258 field.name = ASCIIToUTF16("address"); | |
259 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); | |
260 | |
261 field.label = string16(); | |
262 field.name = ASCIIToUTF16("bogus"); | |
263 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr2"))); | |
264 | |
265 AutofillScanner scanner(list_.get()); | |
266 field_.reset(Parse(&scanner)); | |
267 ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); | |
268 EXPECT_EQ(AddressField::kGenericAddress, field_->FindType()); | |
269 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | |
270 ASSERT_TRUE( | |
271 field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); | |
272 EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); | |
273 ASSERT_TRUE( | |
274 field_type_map_.find(ASCIIToUTF16("addr2")) != field_type_map_.end()); | |
275 EXPECT_EQ(ADDRESS_HOME_LINE2, field_type_map_[ASCIIToUTF16("addr2")]); | |
276 } | |
277 | |
278 TEST_F(AddressFieldTest, ParseCompany) { | |
279 FormFieldData field; | |
280 field.form_control_type = "text"; | |
281 | |
282 field.label = ASCIIToUTF16("Company"); | |
283 field.name = ASCIIToUTF16("company"); | |
284 list_.push_back(new AutofillField(field, ASCIIToUTF16("company1"))); | |
285 | |
286 AutofillScanner scanner(list_.get()); | |
287 field_.reset(Parse(&scanner)); | |
288 ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); | |
289 EXPECT_EQ(AddressField::kGenericAddress, field_->FindType()); | |
290 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | |
291 ASSERT_TRUE( | |
292 field_type_map_.find(ASCIIToUTF16("company1")) != field_type_map_.end()); | |
293 EXPECT_EQ(COMPANY_NAME, field_type_map_[ASCIIToUTF16("company1")]); | |
294 } | |
OLD | NEW |