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

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

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