Index: components/autofill/core/browser/autofill_field_unittest.cc |
diff --git a/components/autofill/core/browser/autofill_field_unittest.cc b/components/autofill/core/browser/autofill_field_unittest.cc |
index 136e6bd922bf98337a27db9f94d8bac31f834759..5ab6322db24b09df113da4597ac336dfea1e81ad 100644 |
--- a/components/autofill/core/browser/autofill_field_unittest.cc |
+++ b/components/autofill/core/browser/autofill_field_unittest.cc |
@@ -412,136 +412,71 @@ TEST_F(AutofillFieldTest, FillSelectControlByContents) { |
EXPECT_EQ(ASCIIToUTF16("2"), field.value); // Corresponds to "Miney". |
} |
-TEST_F(AutofillFieldTest, FillSelectControlWithFullCountryNames) { |
- std::vector<const char*> kCountries = {"Albania", "Canada"}; |
- AutofillField field; |
- test::CreateTestSelectField(kCountries, &field); |
- field.set_heuristic_type(ADDRESS_HOME_COUNTRY); |
- |
- AutofillField::FillFormField( |
- field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); |
- EXPECT_EQ(ASCIIToUTF16("Canada"), field.value); |
-} |
- |
-TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviatedCountryNames) { |
- std::vector<const char*> kCountries = {"AL", "CA"}; |
- AutofillField field; |
- test::CreateTestSelectField(kCountries, &field); |
- field.set_heuristic_type(ADDRESS_HOME_COUNTRY); |
- |
- AutofillField::FillFormField( |
- field, ASCIIToUTF16("Canada"), "en-US", "en-US", &field); |
- EXPECT_EQ(ASCIIToUTF16("CA"), field.value); |
-} |
- |
-TEST_F(AutofillFieldTest, FillSelectControlWithFullStateNames) { |
- std::vector<const char*> kStates = {"Alabama", "California"}; |
- AutofillField field; |
- test::CreateTestSelectField(kStates, &field); |
- field.set_heuristic_type(ADDRESS_HOME_STATE); |
- |
- AutofillField::FillFormField( |
- field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); |
- EXPECT_EQ(ASCIIToUTF16("California"), field.value); |
-} |
- |
-TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviateStateNames) { |
- std::vector<const char*> kStates = {"AL", "CA"}; |
- AutofillField field; |
- test::CreateTestSelectField(kStates, &field); |
- field.set_heuristic_type(ADDRESS_HOME_STATE); |
- |
- AutofillField::FillFormField( |
- field, ASCIIToUTF16("California"), "en-US", "en-US", &field); |
- EXPECT_EQ(ASCIIToUTF16("CA"), field.value); |
-} |
- |
-TEST_F(AutofillFieldTest, FillSelectControlWithInexactFullStateNames) { |
- { |
- std::vector<const char*> kStates = { |
- "SC - South Carolina", "CA - California", "NC - North Carolina", |
- }; |
- AutofillField field; |
- test::CreateTestSelectField(kStates, &field); |
- field.set_heuristic_type(ADDRESS_HOME_STATE); |
- |
- AutofillField::FillFormField( |
- field, ASCIIToUTF16("California"), "en-US", "en-US", &field); |
- EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value); |
- } |
- |
- // Don't accidentally match "Virginia" to "West Virginia". |
- { |
- std::vector<const char*> kStates = { |
- "WV - West Virginia", "VA - Virginia", "NV - North Virginia", |
- }; |
- AutofillField field; |
- test::CreateTestSelectField(kStates, &field); |
- field.set_heuristic_type(ADDRESS_HOME_STATE); |
- |
- AutofillField::FillFormField( |
- field, ASCIIToUTF16("Virginia"), "en-US", "en-US", &field); |
- EXPECT_EQ(ASCIIToUTF16("VA - Virginia"), field.value); |
- } |
- |
- // Do accidentally match "Virginia" to "West Virginia". NB: Ideally, Chrome |
- // would fail this test. It's here to document behavior rather than enforce |
- // it. |
- { |
- std::vector<const char*> kStates = { |
- "WV - West Virginia", "TX - Texas", |
- }; |
- AutofillField field; |
- test::CreateTestSelectField(kStates, &field); |
- field.set_heuristic_type(ADDRESS_HOME_STATE); |
+TEST_F(AutofillFieldTest, FillSelectWithStates) { |
+ typedef struct { |
+ std::vector<const char*> select_values; |
+ const char* input_value; |
+ const char* expected_value; |
+ } TestCase; |
- AutofillField::FillFormField( |
- field, ASCIIToUTF16("Virginia"), "en-US", "en-US", &field); |
- EXPECT_EQ(ASCIIToUTF16("WV - West Virginia"), field.value); |
- } |
+ TestCase test_cases[] = { |
+ // Filling the abbreviation. |
+ {{"Alabama", "California"}, "CA", "California"}, |
+ // Attempting to fill the full name in a select full of abbreviations. |
+ {{"AL", "CA"}, "California", "CA"}, |
+ // Different case and diacritics. |
+ {{"QUÉBEC", "ALBERTA"}, "Quebec", "QUÉBEC"}, |
+ // Inexact state names. |
+ {{"SC - South Carolina", "CA - California", "NC - North Carolina"}, |
+ "California", |
+ "CA - California"}, |
+ // Don't accidentally match "Virginia" to "West Virginia". |
+ {{"WV - West Virginia", "VA - Virginia", "NV - North Virginia"}, |
+ "Virginia", |
+ "VA - Virginia"}, |
+ // Do accidentally match "Virginia" to "West Virginia". NB: Ideally, |
sebsg
2016/06/30 09:48:16
Can you document what makes Virginia match or not
Mathieu
2016/06/30 12:21:06
Done.
|
+ // Chrome would fail this test. It's here to document behavior rather than |
+ // enforce it. |
+ {{"WV - West Virginia", "TX - Texas"}, "Virginia", "WV - West Virginia"}, |
+ // Tests that substring matches work for full state names (a full token |
+ // match isn't required). Also tests that matches work for states with |
+ // whitespace in the middle. |
+ {{"California.", "North Carolina."}, "North Carolina", "North Carolina."}, |
+ {{"NC - North Carolina", "CA - California"}, "CA", "CA - California"}, |
+ // These are not states. |
+ {{"NCNCA", "SCNCA"}, "NC", ""}}; |
- // Tests that substring matches work for full state names (a full token |
- // match isn't required). Also tests that matches work for states with |
- // whitespace in the middle. |
- { |
- std::vector<const char*> kStates = { |
- "California.", "North Carolina.", |
- }; |
+ for (TestCase test_case : test_cases) { |
AutofillField field; |
- test::CreateTestSelectField(kStates, &field); |
+ test::CreateTestSelectField(test_case.select_values, &field); |
field.set_heuristic_type(ADDRESS_HOME_STATE); |
- AutofillField::FillFormField( |
- field, ASCIIToUTF16("North Carolina"), "en-US", "en-US", &field); |
- EXPECT_EQ(ASCIIToUTF16("North Carolina."), field.value); |
+ AutofillField::FillFormField(field, UTF8ToUTF16(test_case.input_value), |
+ "en-US", "en-US", &field); |
+ EXPECT_EQ(UTF8ToUTF16(test_case.expected_value), field.value); |
} |
} |
-TEST_F(AutofillFieldTest, FillSelectControlWithInexactAbbreviations) { |
- { |
- std::vector<const char*> kStates = { |
- "NC - North Carolina", "CA - California", |
- }; |
- AutofillField field; |
- test::CreateTestSelectField(kStates, &field); |
- field.set_heuristic_type(ADDRESS_HOME_STATE); |
+TEST_F(AutofillFieldTest, FillSelectWithCountries) { |
+ typedef struct { |
+ std::vector<const char*> select_values; |
+ const char* input_value; |
+ const char* expected_value; |
+ } TestCase; |
- AutofillField::FillFormField( |
- field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); |
- EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value); |
- } |
+ TestCase test_cases[] = {// Full country names. |
+ {{"Albania", "Canada"}, "CA", "Canada"}, |
+ // Abbreviations. |
+ {{"AL", "CA"}, "Canada", "CA"}}; |
- { |
- std::vector<const char*> kNotStates = { |
- "NCNCA", "SCNCA", |
- }; |
+ for (TestCase test_case : test_cases) { |
AutofillField field; |
- test::CreateTestSelectField(kNotStates, &field); |
- field.set_heuristic_type(ADDRESS_HOME_STATE); |
+ test::CreateTestSelectField(test_case.select_values, &field); |
+ field.set_heuristic_type(ADDRESS_HOME_COUNTRY); |
- AutofillField::FillFormField( |
- field, ASCIIToUTF16("NC"), "en-US", "en-US", &field); |
- EXPECT_EQ(base::string16(), field.value); |
+ AutofillField::FillFormField(field, UTF8ToUTF16(test_case.input_value), |
+ "en-US", "en-US", &field); |
+ EXPECT_EQ(UTF8ToUTF16(test_case.expected_value), field.value); |
} |
} |