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

Side by Side Diff: components/autofill/core/browser/autofill_field_unittest.cc

Issue 401103004: Revert of Use language-specific street address line separators (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "components/autofill/core/browser/autofill_field.h"
6
7 #include "base/format_macros.h" 5 #include "base/format_macros.h"
8 #include "base/strings/string_util.h" 6 #include "base/strings/string_util.h"
9 #include "base/strings/stringprintf.h" 7 #include "base/strings/stringprintf.h"
10 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "components/autofill/core/browser/autofill_field.h"
11 #include "components/autofill/core/browser/autofill_type.h" 10 #include "components/autofill/core/browser/autofill_type.h"
12 #include "components/autofill/core/browser/field_types.h" 11 #include "components/autofill/core/browser/field_types.h"
13 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
14 13
15 using base::ASCIIToUTF16; 14 using base::ASCIIToUTF16;
16 using base::UTF8ToUTF16;
17 15
18 namespace autofill { 16 namespace autofill {
19 namespace { 17 namespace {
20 18
21 // Returns a FormFieldData object corresponding to a <select> field populated 19 // Returns a FormFieldData object corresponding to a <select> field populated
22 // with the given |options|. 20 // with the given |options|.
23 FormFieldData GenerateSelectFieldWithOptions(const char* const* options, 21 FormFieldData GenerateSelectFieldWithOptions(const char* const* options,
24 size_t options_size) { 22 size_t options_size) {
25 std::vector<base::string16> options16(options_size); 23 std::vector<base::string16> options16(options_size);
26 for (size_t i = 0; i < options_size; ++i) { 24 for (size_t i = 0; i < options_size; ++i) {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 // Field has autocomplete="off" set. 117 // Field has autocomplete="off" set.
120 field.should_autocomplete = false; 118 field.should_autocomplete = false;
121 EXPECT_FALSE(field.IsFieldFillable()); 119 EXPECT_FALSE(field.IsFieldFillable());
122 } 120 }
123 121
124 TEST(AutofillFieldTest, FillPhoneNumber) { 122 TEST(AutofillFieldTest, FillPhoneNumber) {
125 AutofillField field; 123 AutofillField field;
126 field.SetHtmlType(HTML_TYPE_TEL_LOCAL_PREFIX, HtmlFieldMode()); 124 field.SetHtmlType(HTML_TYPE_TEL_LOCAL_PREFIX, HtmlFieldMode());
127 125
128 // Fill with a non-phone number; should fill normally. 126 // Fill with a non-phone number; should fill normally.
129 AutofillField::FillFormField( 127 AutofillField::FillFormField(field, ASCIIToUTF16("Oh hai"), "en-US", &field);
130 field, ASCIIToUTF16("Oh hai"), "en-US", "en-US", &field);
131 EXPECT_EQ(ASCIIToUTF16("Oh hai"), field.value); 128 EXPECT_EQ(ASCIIToUTF16("Oh hai"), field.value);
132 129
133 // Fill with a phone number; should fill just the prefix. 130 // Fill with a phone number; should fill just the prefix.
134 AutofillField::FillFormField( 131 AutofillField::FillFormField(field, ASCIIToUTF16("5551234"), "en-US", &field);
135 field, ASCIIToUTF16("5551234"), "en-US", "en-US", &field);
136 EXPECT_EQ(ASCIIToUTF16("555"), field.value); 132 EXPECT_EQ(ASCIIToUTF16("555"), field.value);
137 133
138 // Now reset the type, and set a max-length instead. 134 // Now reset the type, and set a max-length instead.
139 field.SetHtmlType(HTML_TYPE_UNKNOWN, HtmlFieldMode()); 135 field.SetHtmlType(HTML_TYPE_UNKNOWN, HtmlFieldMode());
140 field.set_heuristic_type(PHONE_HOME_NUMBER); 136 field.set_heuristic_type(PHONE_HOME_NUMBER);
141 field.max_length = 4; 137 field.max_length = 4;
142 138
143 // Fill with a phone-number; should fill just the suffix. 139 // Fill with a phone-number; should fill just the suffix.
144 AutofillField::FillFormField( 140 AutofillField::FillFormField(field, ASCIIToUTF16("5551234"), "en-US", &field);
145 field, ASCIIToUTF16("5551234"), "en-US", "en-US", &field);
146 EXPECT_EQ(ASCIIToUTF16("1234"), field.value); 141 EXPECT_EQ(ASCIIToUTF16("1234"), field.value);
147 } 142 }
148 143
149 TEST(AutofillFieldTest, FillSelectControlByValue) { 144 TEST(AutofillFieldTest, FillSelectControlByValue) {
150 const char* const kOptions[] = { 145 const char* const kOptions[] = {
151 "Eenie", "Meenie", "Miney", "Mo", 146 "Eenie", "Meenie", "Miney", "Mo",
152 }; 147 };
153 AutofillField field( 148 AutofillField field(
154 GenerateSelectFieldWithOptions(kOptions, arraysize(kOptions)), 149 GenerateSelectFieldWithOptions(kOptions, arraysize(kOptions)),
155 base::string16()); 150 base::string16());
156 151
157 // Set semantically empty contents for each option, so that only the values 152 // Set semantically empty contents for each option, so that only the values
158 // can be used for matching. 153 // can be used for matching.
159 for (size_t i = 0; i < field.option_contents.size(); ++i) { 154 for (size_t i = 0; i < field.option_contents.size(); ++i) {
160 field.option_contents[i] = ASCIIToUTF16(base::StringPrintf("%" PRIuS, i)); 155 field.option_contents[i] = ASCIIToUTF16(base::StringPrintf("%" PRIuS, i));
161 } 156 }
162 157
163 AutofillField::FillFormField( 158 AutofillField::FillFormField(field, ASCIIToUTF16("Meenie"), "en-US",
164 field, ASCIIToUTF16("Meenie"), "en-US", "en-US", &field); 159 &field);
165 EXPECT_EQ(ASCIIToUTF16("Meenie"), field.value); 160 EXPECT_EQ(ASCIIToUTF16("Meenie"), field.value);
166 } 161 }
167 162
168 TEST(AutofillFieldTest, FillSelectControlByContents) { 163 TEST(AutofillFieldTest, FillSelectControlByContents) {
169 const char* const kOptions[] = { 164 const char* const kOptions[] = {
170 "Eenie", "Meenie", "Miney", "Mo", 165 "Eenie", "Meenie", "Miney", "Mo",
171 }; 166 };
172 AutofillField field( 167 AutofillField field(
173 GenerateSelectFieldWithOptions(kOptions, arraysize(kOptions)), 168 GenerateSelectFieldWithOptions(kOptions, arraysize(kOptions)),
174 base::string16()); 169 base::string16());
175 170
176 // Set semantically empty values for each option, so that only the contents 171 // Set semantically empty values for each option, so that only the contents
177 // can be used for matching. 172 // can be used for matching.
178 for (size_t i = 0; i < field.option_values.size(); ++i) { 173 for (size_t i = 0; i < field.option_values.size(); ++i) {
179 field.option_values[i] = ASCIIToUTF16(base::StringPrintf("%" PRIuS, i)); 174 field.option_values[i] = ASCIIToUTF16(base::StringPrintf("%" PRIuS, i));
180 } 175 }
181 176
182 AutofillField::FillFormField( 177 AutofillField::FillFormField(field, ASCIIToUTF16("Miney"), "en-US",
183 field, ASCIIToUTF16("Miney"), "en-US", "en-US", &field); 178 &field);
184 EXPECT_EQ(ASCIIToUTF16("2"), field.value); // Corresponds to "Miney". 179 EXPECT_EQ(ASCIIToUTF16("2"), field.value); // Corresponds to "Miney".
185 } 180 }
186 181
187 TEST(AutofillFieldTest, FillSelectControlWithFullCountryNames) { 182 TEST(AutofillFieldTest, FillSelectControlWithFullCountryNames) {
188 const char* const kCountries[] = { 183 const char* const kCountries[] = {
189 "Albania", "Canada" 184 "Albania", "Canada"
190 }; 185 };
191 AutofillField field( 186 AutofillField field(
192 GenerateSelectFieldWithOptions(kCountries, arraysize(kCountries)), 187 GenerateSelectFieldWithOptions(kCountries, arraysize(kCountries)),
193 base::string16()); 188 base::string16());
194 field.set_heuristic_type(ADDRESS_HOME_COUNTRY); 189 field.set_heuristic_type(ADDRESS_HOME_COUNTRY);
195 190
196 AutofillField::FillFormField( 191 AutofillField::FillFormField(field, ASCIIToUTF16("CA"), "en-US", &field);
197 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field);
198 EXPECT_EQ(ASCIIToUTF16("Canada"), field.value); 192 EXPECT_EQ(ASCIIToUTF16("Canada"), field.value);
199 } 193 }
200 194
201 TEST(AutofillFieldTest, FillSelectControlWithAbbreviatedCountryNames) { 195 TEST(AutofillFieldTest, FillSelectControlWithAbbreviatedCountryNames) {
202 const char* const kCountries[] = { 196 const char* const kCountries[] = {
203 "AL", "CA" 197 "AL", "CA"
204 }; 198 };
205 AutofillField field( 199 AutofillField field(
206 GenerateSelectFieldWithOptions(kCountries, arraysize(kCountries)), 200 GenerateSelectFieldWithOptions(kCountries, arraysize(kCountries)),
207 base::string16()); 201 base::string16());
208 field.set_heuristic_type(ADDRESS_HOME_COUNTRY); 202 field.set_heuristic_type(ADDRESS_HOME_COUNTRY);
209 203
210 AutofillField::FillFormField( 204 AutofillField::FillFormField(field, ASCIIToUTF16("Canada"), "en-US", &field);
211 field, ASCIIToUTF16("Canada"), "en-US", "en-US", &field);
212 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); 205 EXPECT_EQ(ASCIIToUTF16("CA"), field.value);
213 } 206 }
214 207
215 TEST(AutofillFieldTest, FillSelectControlWithFullStateNames) { 208 TEST(AutofillFieldTest, FillSelectControlWithFullStateNames) {
216 const char* const kStates[] = { 209 const char* const kStates[] = {
217 "Alabama", "California" 210 "Alabama", "California"
218 }; 211 };
219 AutofillField field( 212 AutofillField field(
220 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)), 213 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
221 base::string16()); 214 base::string16());
222 field.set_heuristic_type(ADDRESS_HOME_STATE); 215 field.set_heuristic_type(ADDRESS_HOME_STATE);
223 216
224 AutofillField::FillFormField( 217 AutofillField::FillFormField(field, ASCIIToUTF16("CA"), "en-US", &field);
225 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field);
226 EXPECT_EQ(ASCIIToUTF16("California"), field.value); 218 EXPECT_EQ(ASCIIToUTF16("California"), field.value);
227 } 219 }
228 220
229 TEST(AutofillFieldTest, FillSelectControlWithAbbreviateStateNames) { 221 TEST(AutofillFieldTest, FillSelectControlWithAbbreviateStateNames) {
230 const char* const kStates[] = { 222 const char* const kStates[] = {
231 "AL", "CA" 223 "AL", "CA"
232 }; 224 };
233 AutofillField field( 225 AutofillField field(
234 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)), 226 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
235 base::string16()); 227 base::string16());
236 field.set_heuristic_type(ADDRESS_HOME_STATE); 228 field.set_heuristic_type(ADDRESS_HOME_STATE);
237 229
238 AutofillField::FillFormField( 230 AutofillField::FillFormField(field, ASCIIToUTF16("California"), "en-US",
239 field, ASCIIToUTF16("California"), "en-US", "en-US", &field); 231 &field);
240 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); 232 EXPECT_EQ(ASCIIToUTF16("CA"), field.value);
241 } 233 }
242 234
243 TEST(AutofillFieldTest, FillSelectControlWithInexactFullStateNames) { 235 TEST(AutofillFieldTest, FillSelectControlWithInexactFullStateNames) {
244 { 236 {
245 const char* const kStates[] = { 237 const char* const kStates[] = {
246 "SC - South Carolina", "CA - California", "NC - North Carolina", 238 "SC - South Carolina", "CA - California", "NC - North Carolina",
247 }; 239 };
248 AutofillField field( 240 AutofillField field(
249 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)), 241 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
250 base::string16()); 242 base::string16());
251 field.set_heuristic_type(ADDRESS_HOME_STATE); 243 field.set_heuristic_type(ADDRESS_HOME_STATE);
252 244
253 AutofillField::FillFormField( 245 AutofillField::FillFormField(field, ASCIIToUTF16("California"), "en-US",
254 field, ASCIIToUTF16("California"), "en-US", "en-US", &field); 246 &field);
255 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value); 247 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value);
256 } 248 }
257 249
258 // Don't accidentally match "Virginia" to "West Virginia". 250 // Don't accidentally match "Virginia" to "West Virginia".
259 { 251 {
260 const char* const kStates[] = { 252 const char* const kStates[] = {
261 "WV - West Virginia", "VA - Virginia", "NV - North Virginia", 253 "WV - West Virginia", "VA - Virginia", "NV - North Virginia",
262 }; 254 };
263 AutofillField field( 255 AutofillField field(
264 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)), 256 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
265 base::string16()); 257 base::string16());
266 field.set_heuristic_type(ADDRESS_HOME_STATE); 258 field.set_heuristic_type(ADDRESS_HOME_STATE);
267 259
268 AutofillField::FillFormField( 260 AutofillField::FillFormField(field, ASCIIToUTF16("Virginia"), "en-US",
269 field, ASCIIToUTF16("Virginia"), "en-US", "en-US", &field); 261 &field);
270 EXPECT_EQ(ASCIIToUTF16("VA - Virginia"), field.value); 262 EXPECT_EQ(ASCIIToUTF16("VA - Virginia"), field.value);
271 } 263 }
272 264
273 // Do accidentally match "Virginia" to "West Virginia". NB: Ideally, Chrome 265 // Do accidentally match "Virginia" to "West Virginia". NB: Ideally, Chrome
274 // would fail this test. It's here to document behavior rather than enforce 266 // would fail this test. It's here to document behavior rather than enforce
275 // it. 267 // it.
276 { 268 {
277 const char* const kStates[] = { 269 const char* const kStates[] = {
278 "WV - West Virginia", "TX - Texas", 270 "WV - West Virginia", "TX - Texas",
279 }; 271 };
280 AutofillField field( 272 AutofillField field(
281 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)), 273 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
282 base::string16()); 274 base::string16());
283 field.set_heuristic_type(ADDRESS_HOME_STATE); 275 field.set_heuristic_type(ADDRESS_HOME_STATE);
284 276
285 AutofillField::FillFormField( 277 AutofillField::FillFormField(field, ASCIIToUTF16("Virginia"), "en-US",
286 field, ASCIIToUTF16("Virginia"), "en-US", "en-US", &field); 278 &field);
287 EXPECT_EQ(ASCIIToUTF16("WV - West Virginia"), field.value); 279 EXPECT_EQ(ASCIIToUTF16("WV - West Virginia"), field.value);
288 } 280 }
289 281
290 // Tests that substring matches work for full state names (a full token 282 // Tests that substring matches work for full state names (a full token
291 // match isn't required). Also tests that matches work for states with 283 // match isn't required). Also tests that matches work for states with
292 // whitespace in the middle. 284 // whitespace in the middle.
293 { 285 {
294 const char* const kStates[] = { 286 const char* const kStates[] = {
295 "California.", "North Carolina.", 287 "California.", "North Carolina.",
296 }; 288 };
297 AutofillField field( 289 AutofillField field(
298 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)), 290 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
299 base::string16()); 291 base::string16());
300 field.set_heuristic_type(ADDRESS_HOME_STATE); 292 field.set_heuristic_type(ADDRESS_HOME_STATE);
301 293
302 AutofillField::FillFormField( 294 AutofillField::FillFormField(field, ASCIIToUTF16("North Carolina"), "en-US",
303 field, ASCIIToUTF16("North Carolina"), "en-US", "en-US", &field); 295 &field);
304 EXPECT_EQ(ASCIIToUTF16("North Carolina."), field.value); 296 EXPECT_EQ(ASCIIToUTF16("North Carolina."), field.value);
305 } 297 }
306 } 298 }
307 299
308 TEST(AutofillFieldTest, FillSelectControlWithInexactAbbreviations) { 300 TEST(AutofillFieldTest, FillSelectControlWithInexactAbbreviations) {
309 { 301 {
310 const char* const kStates[] = { 302 const char* const kStates[] = {
311 "NC - North Carolina", "CA - California", 303 "NC - North Carolina", "CA - California",
312 }; 304 };
313 AutofillField field( 305 AutofillField field(
314 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)), 306 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
315 base::string16()); 307 base::string16());
316 field.set_heuristic_type(ADDRESS_HOME_STATE); 308 field.set_heuristic_type(ADDRESS_HOME_STATE);
317 309
318 AutofillField::FillFormField( 310 AutofillField::FillFormField(field, ASCIIToUTF16("CA"), "en-US",
319 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); 311 &field);
320 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value); 312 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value);
321 } 313 }
322 314
323 { 315 {
324 const char* const kNotStates[] = { 316 const char* const kNotStates[] = {
325 "NCNCA", "SCNCA", 317 "NCNCA", "SCNCA",
326 }; 318 };
327 AutofillField field( 319 AutofillField field(
328 GenerateSelectFieldWithOptions(kNotStates, arraysize(kNotStates)), 320 GenerateSelectFieldWithOptions(kNotStates, arraysize(kNotStates)),
329 base::string16()); 321 base::string16());
330 field.set_heuristic_type(ADDRESS_HOME_STATE); 322 field.set_heuristic_type(ADDRESS_HOME_STATE);
331 323
332 AutofillField::FillFormField( 324 AutofillField::FillFormField(field, ASCIIToUTF16("NC"), "en-US",
333 field, ASCIIToUTF16("NC"), "en-US", "en-US", &field); 325 &field);
334 EXPECT_EQ(base::string16(), field.value); 326 EXPECT_EQ(base::string16(), field.value);
335 } 327 }
336 } 328 }
337 329
338 TEST(AutofillFieldTest, FillSelectControlWithNumericMonth) { 330 TEST(AutofillFieldTest, FillSelectControlWithNumericMonth) {
339 const char* const kMonthsNumeric[] = { 331 const char* const kMonthsNumeric[] = {
340 "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", 332 "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12",
341 }; 333 };
342 AutofillField field( 334 AutofillField field(
343 GenerateSelectFieldWithOptions(kMonthsNumeric, arraysize(kMonthsNumeric)), 335 GenerateSelectFieldWithOptions(kMonthsNumeric, arraysize(kMonthsNumeric)),
344 base::string16()); 336 base::string16());
345 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 337 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
346 338
347 // Try with a leading zero. 339 // Try with a leading zero.
348 AutofillField::FillFormField( 340 AutofillField::FillFormField(field, ASCIIToUTF16("03"), "en-US", &field);
349 field, ASCIIToUTF16("03"), "en-US", "en-US", &field);
350 EXPECT_EQ(ASCIIToUTF16("03"), field.value); 341 EXPECT_EQ(ASCIIToUTF16("03"), field.value);
351 342
352 // Try without a leading zero. 343 // Try without a leading zero.
353 AutofillField::FillFormField( 344 AutofillField::FillFormField(field, ASCIIToUTF16("4"), "en-US", &field);
354 field, ASCIIToUTF16("4"), "en-US", "en-US", &field);
355 EXPECT_EQ(ASCIIToUTF16("04"), field.value); 345 EXPECT_EQ(ASCIIToUTF16("04"), field.value);
356 346
357 // Try a two-digit month. 347 // Try a two-digit month.
358 AutofillField::FillFormField( 348 AutofillField::FillFormField(field, ASCIIToUTF16("11"), "en-US", &field);
359 field, ASCIIToUTF16("11"), "en-US", "en-US", &field);
360 EXPECT_EQ(ASCIIToUTF16("11"), field.value); 349 EXPECT_EQ(ASCIIToUTF16("11"), field.value);
361 } 350 }
362 351
363 TEST(AutofillFieldTest, FillSelectControlWithAbbreviatedMonthName) { 352 TEST(AutofillFieldTest, FillSelectControlWithAbbreviatedMonthName) {
364 const char* const kMonthsAbbreviated[] = { 353 const char* const kMonthsAbbreviated[] = {
365 "Jan", "Feb", "Mar", "Apr", "May", "Jun", 354 "Jan", "Feb", "Mar", "Apr", "May", "Jun",
366 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", 355 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
367 }; 356 };
368 AutofillField field( 357 AutofillField field(
369 GenerateSelectFieldWithOptions( 358 GenerateSelectFieldWithOptions(
370 kMonthsAbbreviated, arraysize(kMonthsAbbreviated)), 359 kMonthsAbbreviated, arraysize(kMonthsAbbreviated)),
371 base::string16()); 360 base::string16());
372 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 361 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
373 362
374 AutofillField::FillFormField( 363 AutofillField::FillFormField(field, ASCIIToUTF16("04"), "en-US", &field);
375 field, ASCIIToUTF16("04"), "en-US", "en-US", &field);
376 EXPECT_EQ(ASCIIToUTF16("Apr"), field.value); 364 EXPECT_EQ(ASCIIToUTF16("Apr"), field.value);
377 } 365 }
378 366
379 TEST(AutofillFieldTest, FillSelectControlWithFullMonthName) { 367 TEST(AutofillFieldTest, FillSelectControlWithFullMonthName) {
380 const char* const kMonthsFull[] = { 368 const char* const kMonthsFull[] = {
381 "January","February", "March", "April", "May", "June", 369 "January", "February", "March", "April", "May", "June",
382 "July", "August", "September", "October", "November", "December", 370 "July", "August", "September", "October", "November", "December",
383 }; 371 };
384 AutofillField field( 372 AutofillField field(
385 GenerateSelectFieldWithOptions(kMonthsFull, arraysize(kMonthsFull)), 373 GenerateSelectFieldWithOptions(kMonthsFull, arraysize(kMonthsFull)),
386 base::string16()); 374 base::string16());
387 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 375 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
388 376
389 AutofillField::FillFormField( 377 AutofillField::FillFormField(field, ASCIIToUTF16("04"), "en-US", &field);
390 field, ASCIIToUTF16("04"), "en-US", "en-US", &field);
391 EXPECT_EQ(ASCIIToUTF16("April"), field.value); 378 EXPECT_EQ(ASCIIToUTF16("April"), field.value);
392 } 379 }
393 380
394 TEST(AutofillFieldTest, FillSelectControlWithNumericMonthSansLeadingZero) { 381 TEST(AutofillFieldTest, FillSelectControlWithNumericMonthSansLeadingZero) {
395 const char* const kMonthsNumeric[] = { 382 const char* const kMonthsNumeric[] = {
396 "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", 383 "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
397 }; 384 };
398 AutofillField field( 385 AutofillField field(
399 GenerateSelectFieldWithOptions(kMonthsNumeric, arraysize(kMonthsNumeric)), 386 GenerateSelectFieldWithOptions(kMonthsNumeric, arraysize(kMonthsNumeric)),
400 base::string16()); 387 base::string16());
401 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 388 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
402 389
403 AutofillField::FillFormField( 390 AutofillField::FillFormField(field, ASCIIToUTF16("04"), "en-US", &field);
404 field, ASCIIToUTF16("04"), "en-US", "en-US", &field);
405 EXPECT_EQ(ASCIIToUTF16("4"), field.value); 391 EXPECT_EQ(ASCIIToUTF16("4"), field.value);
406 } 392 }
407 393
408 TEST(AutofillFieldTest, FillSelectControlWithTwoDigitCreditCardYear) { 394 TEST(AutofillFieldTest, FillSelectControlWithTwoDigitCreditCardYear) {
409 const char* const kYears[] = { 395 const char* const kYears[] = {
410 "12", "13", "14", "15", "16", "17", "18", "19" 396 "12", "13", "14", "15", "16", "17", "18", "19"
411 }; 397 };
412 AutofillField field(GenerateSelectFieldWithOptions(kYears, arraysize(kYears)), 398 AutofillField field(GenerateSelectFieldWithOptions(kYears, arraysize(kYears)),
413 base::string16()); 399 base::string16());
414 field.set_heuristic_type(CREDIT_CARD_EXP_2_DIGIT_YEAR); 400 field.set_heuristic_type(CREDIT_CARD_EXP_2_DIGIT_YEAR);
415 401
416 AutofillField::FillFormField( 402 AutofillField::FillFormField(field, ASCIIToUTF16("2017"), "en-US", &field);
417 field, ASCIIToUTF16("2017"), "en-US", "en-US", &field);
418 EXPECT_EQ(ASCIIToUTF16("17"), field.value); 403 EXPECT_EQ(ASCIIToUTF16("17"), field.value);
419 } 404 }
420 405
421 TEST(AutofillFieldTest, FillSelectControlWithCreditCardType) { 406 TEST(AutofillFieldTest, FillSelectControlWithCreditCardType) {
422 const char* const kCreditCardTypes[] = { 407 const char* const kCreditCardTypes[] = {
423 "Visa", "Master Card", "AmEx", "discover" 408 "Visa", "Master Card", "AmEx", "discover"
424 }; 409 };
425 AutofillField field( 410 AutofillField field(
426 GenerateSelectFieldWithOptions( 411 GenerateSelectFieldWithOptions(
427 kCreditCardTypes, arraysize(kCreditCardTypes)), 412 kCreditCardTypes, arraysize(kCreditCardTypes)),
428 base::string16()); 413 base::string16());
429 field.set_heuristic_type(CREDIT_CARD_TYPE); 414 field.set_heuristic_type(CREDIT_CARD_TYPE);
430 415
431 // Normal case: 416 // Normal case:
432 AutofillField::FillFormField( 417 AutofillField::FillFormField(field, ASCIIToUTF16("Visa"), "en-US", &field);
433 field, ASCIIToUTF16("Visa"), "en-US", "en-US", &field);
434 EXPECT_EQ(ASCIIToUTF16("Visa"), field.value); 418 EXPECT_EQ(ASCIIToUTF16("Visa"), field.value);
435 419
436 // Filling should be able to handle intervening whitespace: 420 // Filling should be able to handle intervening whitespace:
437 AutofillField::FillFormField( 421 AutofillField::FillFormField(field, ASCIIToUTF16("MasterCard"), "en-US",
438 field, ASCIIToUTF16("MasterCard"), "en-US", "en-US", &field); 422 &field);
439 EXPECT_EQ(ASCIIToUTF16("Master Card"), field.value); 423 EXPECT_EQ(ASCIIToUTF16("Master Card"), field.value);
440 424
441 // American Express is sometimes abbreviated as AmEx: 425 // American Express is sometimes abbreviated as AmEx:
442 AutofillField::FillFormField( 426 AutofillField::FillFormField(field, ASCIIToUTF16("American Express"), "en-US",
443 field, ASCIIToUTF16("American Express"), "en-US", "en-US", &field); 427 &field);
444 EXPECT_EQ(ASCIIToUTF16("AmEx"), field.value); 428 EXPECT_EQ(ASCIIToUTF16("AmEx"), field.value);
445 429
446 // Case insensitivity: 430 // Case insensitivity:
447 AutofillField::FillFormField( 431 AutofillField::FillFormField(field, ASCIIToUTF16("Discover"), "en-US",
448 field, ASCIIToUTF16("Discover"), "en-US", "en-US", &field); 432 &field);
449 EXPECT_EQ(ASCIIToUTF16("discover"), field.value); 433 EXPECT_EQ(ASCIIToUTF16("discover"), field.value);
450 } 434 }
451 435
452 TEST(AutofillFieldTest, FillMonthControl) { 436 TEST(AutofillFieldTest, FillMonthControl) {
453 AutofillField field; 437 AutofillField field;
454 field.form_control_type = "month"; 438 field.form_control_type = "month";
455 439
456 // Try a month with two digits. 440 // Try a month with two digits.
457 AutofillField::FillFormField( 441 AutofillField::FillFormField(field, ASCIIToUTF16("12/2017"), "en-US", &field);
458 field, ASCIIToUTF16("12/2017"), "en-US", "en-US", &field);
459 EXPECT_EQ(ASCIIToUTF16("2017-12"), field.value); 442 EXPECT_EQ(ASCIIToUTF16("2017-12"), field.value);
460 443
461 // Try a month with a leading zero. 444 // Try a month with a leading zero.
462 AutofillField::FillFormField( 445 AutofillField::FillFormField(field, ASCIIToUTF16("03/2019"), "en-US", &field);
463 field, ASCIIToUTF16("03/2019"), "en-US", "en-US", &field);
464 EXPECT_EQ(ASCIIToUTF16("2019-03"), field.value); 446 EXPECT_EQ(ASCIIToUTF16("2019-03"), field.value);
465 447
466 // Try a month without a leading zero. 448 // Try a month without a leading zero.
467 AutofillField::FillFormField( 449 AutofillField::FillFormField(field, ASCIIToUTF16("4/2018"), "en-US", &field);
468 field, ASCIIToUTF16("4/2018"), "en-US", "en-US", &field);
469 EXPECT_EQ(ASCIIToUTF16("2018-04"), field.value); 450 EXPECT_EQ(ASCIIToUTF16("2018-04"), field.value);
470 } 451 }
471 452
472 TEST(AutofillFieldTest, FillStreetAddressTextArea) { 453 TEST(AutofillFieldTest, FillStreetAddressTextArea) {
473 AutofillField field; 454 AutofillField field;
474 field.form_control_type = "textarea"; 455 field.form_control_type = "textarea";
475 456
476 base::string16 value = ASCIIToUTF16("123 Fake St.\n" 457 base::string16 value = ASCIIToUTF16("123 Fake St.\n"
477 "Apt. 42"); 458 "Apt. 42");
478 AutofillField::FillFormField(field, value, "en-US", "en-US", &field); 459 AutofillField::FillFormField(field, value, "en-US", &field);
479 EXPECT_EQ(value, field.value); 460 EXPECT_EQ(value, field.value);
480
481 base::string16 ja_value = UTF8ToUTF16("桜丘町26-1\n"
482 "セルリアンタワー6階");
483 AutofillField::FillFormField(field, ja_value, "ja-JP", "en-US", &field);
484 EXPECT_EQ(ja_value, field.value);
485 } 461 }
486 462
487 TEST(AutofillFieldTest, FillStreetAddressTextField) { 463 TEST(AutofillFieldTest, FillStreetAddressTextField) {
488 AutofillField field; 464 AutofillField field;
489 field.form_control_type = "text"; 465 field.form_control_type = "text";
490 field.set_server_type(ADDRESS_HOME_STREET_ADDRESS); 466 field.set_server_type(ADDRESS_HOME_STREET_ADDRESS);
491 467
492 base::string16 value = ASCIIToUTF16("123 Fake St.\n" 468 base::string16 value = ASCIIToUTF16("123 Fake St.\n"
493 "Apt. 42"); 469 "Apt. 42");
494 AutofillField::FillFormField(field, value, "en-US", "en-US", &field); 470 AutofillField::FillFormField(field, value, "en-US", &field);
495 EXPECT_EQ(ASCIIToUTF16("123 Fake St., Apt. 42"), field.value); 471 EXPECT_EQ(ASCIIToUTF16("123 Fake St., Apt. 42"), field.value);
496
497 AutofillField::FillFormField(field,
498 UTF8ToUTF16("桜丘町26-1\n"
499 "セルリアンタワー6階"),
500 "ja-JP",
501 "en-US",
502 &field);
503 EXPECT_EQ(UTF8ToUTF16("桜丘町26-1セルリアンタワー6階"), field.value);
504 } 472 }
505 473
506 } // namespace 474 } // namespace
507 } // namespace autofill 475 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/autofill_field.cc ('k') | components/autofill/core/browser/autofill_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698