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

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

Issue 361833004: autofill: be more open minded about filling in states in <option>s. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: base:: 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
« no previous file with comments | « components/autofill/core/browser/autofill_field.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "base/format_macros.h" 5 #include "base/format_macros.h"
6 #include "base/strings/string_util.h" 6 #include "base/strings/string_util.h"
7 #include "base/strings/stringprintf.h" 7 #include "base/strings/stringprintf.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "components/autofill/core/browser/autofill_field.h" 9 #include "components/autofill/core/browser/autofill_field.h"
10 #include "components/autofill/core/browser/autofill_type.h" 10 #include "components/autofill/core/browser/autofill_type.h"
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 }; 211 };
212 AutofillField field( 212 AutofillField field(
213 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)), 213 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
214 base::string16()); 214 base::string16());
215 field.set_heuristic_type(ADDRESS_HOME_STATE); 215 field.set_heuristic_type(ADDRESS_HOME_STATE);
216 216
217 AutofillField::FillFormField(field, ASCIIToUTF16("CA"), "en-US", &field); 217 AutofillField::FillFormField(field, ASCIIToUTF16("CA"), "en-US", &field);
218 EXPECT_EQ(ASCIIToUTF16("California"), field.value); 218 EXPECT_EQ(ASCIIToUTF16("California"), field.value);
219 } 219 }
220 220
221 TEST(AutofillFieldTest, FillSelectControlWithWithAbbreviateStateNames) { 221 TEST(AutofillFieldTest, FillSelectControlWithAbbreviateStateNames) {
222 const char* const kStates[] = { 222 const char* const kStates[] = {
223 "AL", "CA" 223 "AL", "CA"
224 }; 224 };
225 AutofillField field( 225 AutofillField field(
226 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)), 226 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
227 base::string16()); 227 base::string16());
228 field.set_heuristic_type(ADDRESS_HOME_STATE); 228 field.set_heuristic_type(ADDRESS_HOME_STATE);
229 229
230 AutofillField::FillFormField(field, ASCIIToUTF16("California"), "en-US", 230 AutofillField::FillFormField(field, ASCIIToUTF16("California"), "en-US",
231 &field); 231 &field);
232 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); 232 EXPECT_EQ(ASCIIToUTF16("CA"), field.value);
233 } 233 }
234 234
235 TEST(AutofillFieldTest, FillSelectControlWithInexactFullStateNames) {
236 {
237 const char* const kStates[] = {
238 "SC - South Carolina", "CA - California", "NC - North Carolina",
239 };
240 AutofillField field(
241 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
242 base::string16());
243 field.set_heuristic_type(ADDRESS_HOME_STATE);
244
245 AutofillField::FillFormField(field, ASCIIToUTF16("California"), "en-US",
246 &field);
247 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value);
248 }
249
250 // Don't accidentally match "Virginia" to "West Virginia".
251 {
252 const char* const kStates[] = {
253 "WV - West Virginia", "VA - Virginia", "NV - North Virginia",
254 };
255 AutofillField field(
256 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
257 base::string16());
258 field.set_heuristic_type(ADDRESS_HOME_STATE);
259
260 AutofillField::FillFormField(field, ASCIIToUTF16("Virginia"), "en-US",
261 &field);
262 EXPECT_EQ(ASCIIToUTF16("VA - Virginia"), field.value);
263 }
264
265 // Do accidentally match "Virginia" to "West Virginia". NB: Ideally, Chrome
266 // would fail this test. It's here to document behavior rather than enforce
267 // it.
268 {
269 const char* const kStates[] = {
270 "WV - West Virginia", "TX - Texas",
271 };
272 AutofillField field(
273 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
274 base::string16());
275 field.set_heuristic_type(ADDRESS_HOME_STATE);
276
277 AutofillField::FillFormField(field, ASCIIToUTF16("Virginia"), "en-US",
278 &field);
279 EXPECT_EQ(ASCIIToUTF16("WV - West Virginia"), field.value);
280 }
281
282 // Tests that substring matches work for full state names (a full token
283 // match isn't required). Also tests that matches work for states with
284 // whitespace in the middle.
285 {
286 const char* const kStates[] = {
287 "California.", "North Carolina.",
288 };
289 AutofillField field(
290 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
291 base::string16());
292 field.set_heuristic_type(ADDRESS_HOME_STATE);
293
294 AutofillField::FillFormField(field, ASCIIToUTF16("North Carolina"), "en-US",
295 &field);
296 EXPECT_EQ(ASCIIToUTF16("North Carolina."), field.value);
297 }
298 }
299
300 TEST(AutofillFieldTest, FillSelectControlWithInexactAbbreviations) {
301 {
302 const char* const kStates[] = {
303 "NC - North Carolina", "CA - California",
304 };
305 AutofillField field(
306 GenerateSelectFieldWithOptions(kStates, arraysize(kStates)),
307 base::string16());
308 field.set_heuristic_type(ADDRESS_HOME_STATE);
309
310 AutofillField::FillFormField(field, ASCIIToUTF16("CA"), "en-US",
311 &field);
312 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value);
313 }
314
315 {
316 const char* const kNotStates[] = {
317 "NCNCA", "SCNCA",
318 };
319 AutofillField field(
320 GenerateSelectFieldWithOptions(kNotStates, arraysize(kNotStates)),
321 base::string16());
322 field.set_heuristic_type(ADDRESS_HOME_STATE);
323
324 AutofillField::FillFormField(field, ASCIIToUTF16("NC"), "en-US",
325 &field);
326 EXPECT_EQ(base::string16(), field.value);
327 }
328 }
329
235 TEST(AutofillFieldTest, FillSelectControlWithNumericMonth) { 330 TEST(AutofillFieldTest, FillSelectControlWithNumericMonth) {
236 const char* const kMonthsNumeric[] = { 331 const char* const kMonthsNumeric[] = {
237 "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",
238 }; 333 };
239 AutofillField field( 334 AutofillField field(
240 GenerateSelectFieldWithOptions(kMonthsNumeric, arraysize(kMonthsNumeric)), 335 GenerateSelectFieldWithOptions(kMonthsNumeric, arraysize(kMonthsNumeric)),
241 base::string16()); 336 base::string16());
242 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 337 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
243 338
244 // Try with a leading zero. 339 // Try with a leading zero.
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 field.set_server_type(ADDRESS_HOME_STREET_ADDRESS); 466 field.set_server_type(ADDRESS_HOME_STREET_ADDRESS);
372 467
373 base::string16 value = ASCIIToUTF16("123 Fake St.\n" 468 base::string16 value = ASCIIToUTF16("123 Fake St.\n"
374 "Apt. 42"); 469 "Apt. 42");
375 AutofillField::FillFormField(field, value, "en-US", &field); 470 AutofillField::FillFormField(field, value, "en-US", &field);
376 EXPECT_EQ(ASCIIToUTF16("123 Fake St., Apt. 42"), field.value); 471 EXPECT_EQ(ASCIIToUTF16("123 Fake St., Apt. 42"), field.value);
377 } 472 }
378 473
379 } // namespace 474 } // namespace
380 } // namespace autofill 475 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/autofill_field.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698