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

Unified Diff: components/autofill/core/browser/autofill_field_unittest.cc

Issue 2744933004: [Autofill] Rewrite Autofill unitttests to use INSTANTIATE_TEST_CASE_P (Closed)
Patch Set: remove commented test case. Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
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 ef4c0473f9ac43f3eabd10ac05595d3af802b627..5731f376ace6dbe29a999cd1e5bc7b8ff3944ffe 100644
--- a/components/autofill/core/browser/autofill_field_unittest.cc
+++ b/components/autofill/core/browser/autofill_field_unittest.cc
@@ -283,181 +283,240 @@ TEST_F(AutofillFieldTest, FillFormField_AutocompleteOff_CreditCardField) {
EXPECT_EQ(ASCIIToUTF16("4111111111111111"), field.value);
}
+struct AutofillFieldTestCase {
+ HtmlFieldType field_type;
+ size_t field_max_length;
+ std::string value_to_fill;
+ std::string expected_value;
+};
+
+class AutofillFieldPhoneNumberTest
+ : public testing::TestWithParam<AutofillFieldTestCase> {
+ public:
+ AutofillFieldPhoneNumberTest() { CountryNames::SetLocaleString("en-US"); }
+};
+
// TODO(crbug.com/581514): Add support for filling only the prefix/suffix for
// phone numbers with 10 or 11 digits.
-TEST_F(AutofillFieldTest, FillPhoneNumber) {
- typedef struct {
- HtmlFieldType field_type;
- size_t field_max_length;
- std::string value_to_fill;
- std::string expected_value;
- } TestCase;
-
- TestCase test_cases[] = {
- // Filling a phone type field with text should fill the text as is.
- {HTML_TYPE_TEL, /* default value */ 0, "Oh hai", "Oh hai"},
- // Filling a prefix type field with a phone number of 7 digits should just
- // fill the prefix.
- {HTML_TYPE_TEL_LOCAL_PREFIX, /* default value */ 0, "5551234", "555"},
- // Filling a suffix type field with a phone number of 7 digits should just
- // fill the suffix.
- {HTML_TYPE_TEL_LOCAL_SUFFIX, /* default value */ 0, "5551234", "1234"},
- // Filling a phone type field with a max length of 3 with a phone number
- // of
- // 7 digits should fill only the prefix.
- {HTML_TYPE_TEL, 3, "5551234", "555"},
- // Filling a phone type field with a max length of 4 with a phone number
- // of
- // 7 digits should fill only the suffix.
- {HTML_TYPE_TEL, 4, "5551234", "1234"},
- // Filling a phone type field with a max length of 10 with a phone number
- // including the country code should fill the phone number without the
- // country code.
- {HTML_TYPE_TEL, 10, "15141254578", "5141254578"},
- // Filling a phone type field with a max length of 5 with a phone number
- // should fill with the last 5 digits of that phone number.
- {HTML_TYPE_TEL, 5, "5141254578", "54578"}};
-
- for (TestCase test_case : test_cases) {
- AutofillField field;
- field.SetHtmlType(test_case.field_type, HtmlFieldMode());
- field.max_length = test_case.field_max_length;
-
- AutofillField::FillFormField(field, ASCIIToUTF16(test_case.value_to_fill),
- "en-US", "en-US", &field);
- EXPECT_EQ(ASCIIToUTF16(test_case.expected_value), field.value);
- }
+TEST_P(AutofillFieldPhoneNumberTest, FillPhoneNumber) {
+ auto test_case = GetParam();
+ AutofillField field;
+ field.SetHtmlType(test_case.field_type, HtmlFieldMode());
+ field.max_length = test_case.field_max_length;
+
+ AutofillField::FillFormField(field, ASCIIToUTF16(test_case.value_to_fill),
+ "en-US", "en-US", &field);
+ EXPECT_EQ(ASCIIToUTF16(test_case.expected_value), field.value);
}
-TEST_F(AutofillFieldTest, FillExpirationYearInput) {
- typedef struct {
- HtmlFieldType field_type;
- size_t field_max_length;
- std::string value_to_fill;
- std::string expected_value;
- } TestCase;
-
- TestCase test_cases[] = {
- // A field predicted as a 2 digits expiration year should fill the last 2
- // digits of the expiration year if the field has an unspecified max
- // length (0) or if it's greater than 1.
- {HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR, /* default value */ 0, "2023",
- "23"},
- {HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR, 2, "2023", "23"},
- {HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR, 12, "2023", "23"},
- // A field predicted as a 2 digit expiration year should fill the last
- // digit of the expiration year if the field has a max length of 1.
- {HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR, 1, "2023", "3"},
- // A field predicted as a 4 digit expiration year should fill the 4
- // digits of the expiration year if the field has an unspecified max
- // length (0) or if it's greater than 3 .
- {HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR, /* default value */ 0, "2023",
- "2023"},
- {HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR, 4, "2023", "2023"},
- {HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR, 12, "2023", "2023"},
- // A field predicted as a 4 digits expiration year should fill the last 2
- // digits of the expiration year if the field has a max length of 2.
- {HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR, 2, "2023", "23"},
- // A field predicted as a 4 digits expiration year should fill the last
- // digit of the expiration year if the field has a max length of 1.
- {HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR, 1, "2023", "3"},
- };
+INSTANTIATE_TEST_CASE_P(
+ AutofillFieldTest,
+ AutofillFieldPhoneNumberTest,
+ testing::Values(
+ // Filling a phone type field with text should fill the text as is.
+ AutofillFieldTestCase{HTML_TYPE_TEL, /* default value */ 0, "Oh hai",
+ "Oh hai"},
+ // Filling a prefix type field with a phone number of 7 digits should
+ // just fill the prefix.
+ AutofillFieldTestCase{HTML_TYPE_TEL_LOCAL_PREFIX, /* default value */ 0,
+ "5551234", "555"},
+ // Filling a suffix type field with a phone number of 7 digits should
+ // just fill the suffix.
+ AutofillFieldTestCase{HTML_TYPE_TEL_LOCAL_SUFFIX, /* default value */ 0,
+ "5551234", "1234"},
+ // Filling a phone type field with a max length of 3 with a phone number
+ // of
+ // 7 digits should fill only the prefix.
+ AutofillFieldTestCase{HTML_TYPE_TEL, 3, "5551234", "555"},
+ // Filling a phone type field with a max length of 4 with a phone number
+ // of
+ // 7 digits should fill only the suffix.
+ AutofillFieldTestCase{HTML_TYPE_TEL, 4, "5551234", "1234"},
+ // Filling a phone type field with a max length of 10 with a phone
+ // number including the country code should fill the phone number
+ // without the country code.
+ AutofillFieldTestCase{HTML_TYPE_TEL, 10, "15141254578", "5141254578"},
+ // Filling a phone type field with a max length of 5 with a phone number
+ // should fill with the last 5 digits of that phone number.
+ AutofillFieldTestCase{HTML_TYPE_TEL, 5, "5141254578", "54578"}));
+
+class AutofillFieldExpirationYearTest
+ : public testing::TestWithParam<AutofillFieldTestCase> {
+ public:
+ AutofillFieldExpirationYearTest() { CountryNames::SetLocaleString("en-US"); }
+};
- for (TestCase test_case : test_cases) {
- AutofillField field;
- field.form_control_type = "text";
- field.SetHtmlType(test_case.field_type, HtmlFieldMode());
- field.max_length = test_case.field_max_length;
+TEST_P(AutofillFieldExpirationYearTest, FillExpirationYearInput) {
+ auto test_case = GetParam();
+ AutofillField field;
+ field.form_control_type = "text";
+ field.SetHtmlType(test_case.field_type, HtmlFieldMode());
+ field.max_length = test_case.field_max_length;
- AutofillField::FillFormField(field, ASCIIToUTF16(test_case.value_to_fill),
- "en-US", "en-US", &field);
- EXPECT_EQ(ASCIIToUTF16(test_case.expected_value), field.value);
- }
+ AutofillField::FillFormField(field, ASCIIToUTF16(test_case.value_to_fill),
+ "en-US", "en-US", &field);
+ EXPECT_EQ(ASCIIToUTF16(test_case.expected_value), field.value);
}
-TEST_F(AutofillFieldTest, FillExpirationDateInput) {
- typedef struct {
- HtmlFieldType field_type;
- size_t field_max_length;
- std::string value_to_fill;
- std::string expected_value;
- bool expected_response;
- } TestCase;
-
- TestCase test_cases[] = {
- // Test invalid inputs
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 0, "1/21", "", false},
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 0, "01-21", "", false},
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 0, "1/2021", "", false},
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 0, "01-2021", "", false},
- // Trim whitespace
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 0, "01/22 ", "01/22",
- true},
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 0, "01/2022 ", "01/2022",
- true},
- // A field predicted as a expiration date w/ 2 digit year should fill
- // with a format of MM/YY unless it has max-length of:
- // 4: Use format MMYY
- // 6: Use format MMYYYY
- // 7: Use format MM/YYYY
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, /* default value */ 0,
- "01/23", "01/23", true},
- // Unsupported max lengths of 1-3, fail
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 1, "01/23", "", false},
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 2, "02/23", "", false},
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 3, "03/23", "", false},
- // A max length of 4 indicates a format of MMYY.
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 4, "02/23", "0223", true},
- // A max length of 6 indicates a format of MMYYYY, the 21st century is
- // assumed.
- // Desired case of proper max length >= 5
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 5, "03/23", "03/23", true},
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 6, "04/23", "042023", true},
- // A max length of 7 indicates a format of MM/YYYY, the 21st century is
- // assumed.
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 7, "05/23", "05/2023",
- true},
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 12, "06/23", "06/23", true},
-
- // A field predicted as a expiration date w/ 4 digit year should fill
- // with a format of MM/YYYY unless it has max-length of:
- // 4: Use format MMYY
- // 5: Use format MM/YY
- // 6: Use format MMYYYY
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, /* default value */ 0,
- "01/2024", "01/2024", true},
- // Unsupported max lengths of 1-3, fail
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 1, "01/2024", "", false},
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 2, "02/2024", "", false},
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 3, "03/2024", "", false},
- // A max length of 4 indicates a format of MMYY.
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 4, "02/2024", "0224", true},
- // A max length of 5 indicates a format of MM/YY.
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 5, "03/2024", "03/24",
- true},
- // A max length of 6 indicates a format of MMYYYY.
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 6, "04/2024", "042024",
- true},
- // Desired case of proper max length >= 7
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 7, "05/2024", "05/2024",
- true},
- {HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 12, "06/2024", "06/2024",
- true},
- };
+INSTANTIATE_TEST_CASE_P(
+ AutofillFieldTest,
+ AutofillFieldExpirationYearTest,
+ testing::Values(
+ // A field predicted as a 2 digits expiration year should fill the last
+ // 2 digits of the expiration year if the field has an unspecified max
+ // length (0) or if it's greater than 1.
+ AutofillFieldTestCase{HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR,
+ /* default value */ 0, "2023", "23"},
+ AutofillFieldTestCase{HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR, 2, "2023",
+ "23"},
+ AutofillFieldTestCase{HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR, 12,
+ "2023", "23"},
+ // A field predicted as a 2 digit expiration year should fill the last
+ // digit of the expiration year if the field has a max length of 1.
+ AutofillFieldTestCase{HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR, 1, "2023",
+ "3"},
+ // A field predicted as a 4 digit expiration year should fill the 4
+ // digits of the expiration year if the field has an unspecified max
+ // length (0) or if it's greater than 3 .
+ AutofillFieldTestCase{HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR,
+ /* default value */ 0, "2023", "2023"},
+ AutofillFieldTestCase{HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR, 4, "2023",
+ "2023"},
+ AutofillFieldTestCase{HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR, 12,
+ "2023", "2023"},
+ // A field predicted as a 4 digits expiration year should fill the last
+ // 2 digits of the expiration year if the field has a max length of 2.
+ AutofillFieldTestCase{HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR, 2, "2023",
+ "23"},
+ // A field predicted as a 4 digits expiration year should fill the last
+ // digit of the expiration year if the field has a max length of 1.
+ AutofillFieldTestCase{HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR, 1, "2023",
+ "3"}));
+
+struct AutofillFieldExpirationDateTestCase {
+ HtmlFieldType field_type;
+ size_t field_max_length;
+ std::string value_to_fill;
+ std::string expected_value;
+ bool expected_response;
+};
- for (TestCase test_case : test_cases) {
- AutofillField field;
- field.form_control_type = "text";
- field.SetHtmlType(test_case.field_type, HtmlFieldMode());
- field.max_length = test_case.field_max_length;
+class AutofillFieldExpirationDateTest
+ : public testing::TestWithParam<AutofillFieldExpirationDateTestCase> {
+ public:
+ AutofillFieldExpirationDateTest() { CountryNames::SetLocaleString("en-US"); }
+};
+
+TEST_P(AutofillFieldExpirationDateTest, FillExpirationDateInput) {
+ auto test_case = GetParam();
+ AutofillField field;
+ field.form_control_type = "text";
+ field.SetHtmlType(test_case.field_type, HtmlFieldMode());
+ field.max_length = test_case.field_max_length;
- bool response = AutofillField::FillFormField(
+ bool response = AutofillField::FillFormField(
field, ASCIIToUTF16(test_case.value_to_fill), "en-US", "en-US", &field);
- EXPECT_EQ(ASCIIToUTF16(test_case.expected_value), field.value);
- EXPECT_EQ(response, test_case.expected_response);
- }
+ EXPECT_EQ(ASCIIToUTF16(test_case.expected_value), field.value);
+ EXPECT_EQ(response, test_case.expected_response);
}
+INSTANTIATE_TEST_CASE_P(
+ AutofillFieldTest,
+ AutofillFieldExpirationDateTest,
+ testing::Values(
+ // Test invalid inputs
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 0, "1/21", "", false},
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 0, "01-21", "", false},
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 0, "1/2021", "",
+ false},
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 0, "01-2021", "",
+ false},
+ // Trim whitespace
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 0, "01/22 ", "01/22",
+ true},
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 0, "01/2022 ",
+ "01/2022", true},
+ // A field predicted as a expiration date w/ 2 digit year should fill
+ // with a format of MM/YY unless it has max-length of:
+ // 4: Use format MMYY
+ // 6: Use format MMYYYY
+ // 7: Use format MM/YYYY
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, /* default value */ 0,
+ "01/23", "01/23", true},
+ // Unsupported max lengths of 1-3, fail
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 1, "01/23", "", false},
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 2, "02/23", "", false},
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 3, "03/23", "", false},
+ // A max length of 4 indicates a format of MMYY.
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 4, "02/23", "0223",
+ true},
+ // A max length of 6 indicates a format of MMYYYY, the 21st century is
+ // assumed.
+ // Desired case of proper max length >= 5
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 5, "03/23", "03/23",
+ true},
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 6, "04/23", "042023",
+ true},
+ // A max length of 7 indicates a format of MM/YYYY, the 21st century is
+ // assumed.
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 7, "05/23", "05/2023",
+ true},
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 12, "06/23", "06/23",
+ true},
+
+ // A field predicted as a expiration date w/ 4 digit year should fill
+ // with a format of MM/YYYY unless it has max-length of:
+ // 4: Use format MMYY
+ // 5: Use format MM/YY
+ // 6: Use format MMYYYY
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, /* default value */ 0,
+ "01/2024", "01/2024", true},
+ // Unsupported max lengths of 1-3, fail
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 1, "01/2024", "",
+ false},
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 2, "02/2024", "",
+ false},
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 3, "03/2024", "",
+ false},
+ // A max length of 4 indicates a format of MMYY.
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 4, "02/2024", "0224",
+ true},
+ // A max length of 5 indicates a format of MM/YY.
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 5, "03/2024", "03/24",
+ true},
+ // A max length of 6 indicates a format of MMYYYY.
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 6, "04/2024", "042024",
+ true},
+ // Desired case of proper max length >= 7
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 7, "05/2024",
+ "05/2024", true},
+ AutofillFieldExpirationDateTestCase{
+ HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 12, "06/2024",
+ "06/2024", true}));
+
TEST_F(AutofillFieldTest, FillSelectControlByValue) {
std::vector<const char*> kOptions = {
"Eenie", "Meenie", "Miney", "Mo",
@@ -493,131 +552,179 @@ TEST_F(AutofillFieldTest, FillSelectControlByContents) {
EXPECT_EQ(ASCIIToUTF16("2"), field.value); // Corresponds to "Miney".
}
-TEST_F(AutofillFieldTest, FillSelectWithStates) {
- typedef struct {
- std::vector<const char*> select_values;
- const char* input_value;
- const char* expected_value;
- } TestCase;
-
- 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".
- // TODO(crbug.com/624770): This test should not pass, but it does because
- // "Virginia" is a substring of "West Virginia".
- {{"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", ""}};
-
- for (TestCase test_case : test_cases) {
- AutofillField field;
- test::CreateTestSelectField(test_case.select_values, &field);
- field.set_heuristic_type(ADDRESS_HOME_STATE);
-
- AutofillField::FillFormField(field, UTF8ToUTF16(test_case.input_value),
- "en-US", "en-US", &field);
- EXPECT_EQ(UTF8ToUTF16(test_case.expected_value), field.value);
- }
-}
+struct FillSelectTestCase {
+ std::vector<const char*> select_values;
+ const char* input_value;
+ const char* expected_value;
+};
+
+class AutofillSelectWithStatesTest
+ : public testing::TestWithParam<FillSelectTestCase> {
+ public:
+ AutofillSelectWithStatesTest() { CountryNames::SetLocaleString("en-US"); }
+};
-TEST_F(AutofillFieldTest, FillSelectWithCountries) {
- typedef struct {
- std::vector<const char*> select_values;
- const char* input_value;
- const char* expected_value;
- } TestCase;
+TEST_P(AutofillSelectWithStatesTest, FillSelectWithStates) {
+ auto test_case = GetParam();
+ AutofillField field;
+ test::CreateTestSelectField(test_case.select_values, &field);
+ field.set_heuristic_type(ADDRESS_HOME_STATE);
- TestCase test_cases[] = {// Full country names.
- {{"Albania", "Canada"}, "CA", "Canada"},
- // Abbreviations.
- {{"AL", "CA"}, "Canada", "CA"}};
+ AutofillField::FillFormField(field, UTF8ToUTF16(test_case.input_value),
+ "en-US", "en-US", &field);
+ EXPECT_EQ(UTF8ToUTF16(test_case.expected_value), field.value);
+}
- for (TestCase test_case : test_cases) {
- AutofillField field;
- test::CreateTestSelectField(test_case.select_values, &field);
- field.set_heuristic_type(ADDRESS_HOME_COUNTRY);
+INSTANTIATE_TEST_CASE_P(
+ AutofillFieldTest,
+ AutofillSelectWithStatesTest,
+ testing::Values(
+ // Filling the abbreviation.
+ FillSelectTestCase{{"Alabama", "California"}, "CA", "California"},
+ // Attempting to fill the full name in a select full of abbreviations.
+ FillSelectTestCase{{"AL", "CA"}, "California", "CA"},
+ // Different case and diacritics.
+ FillSelectTestCase{{"QUÉBEC", "ALBERTA"}, "Quebec", "QUÉBEC"},
+ // Inexact state names.
+ FillSelectTestCase{
+ {"SC - South Carolina", "CA - California", "NC - North Carolina"},
+ "California",
+ "CA - California"},
+ // Don't accidentally match "Virginia" to "West Virginia".
+ FillSelectTestCase{
+ {"WV - West Virginia", "VA - Virginia", "NV - North Virginia"},
+ "Virginia",
+ "VA - Virginia"},
+ // Do accidentally match "Virginia" to "West Virginia".
+ // TODO(crbug.com/624770): This test should not pass, but it does
+ // because "Virginia" is a substring of "West Virginia".
+ FillSelectTestCase{{"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.
+ FillSelectTestCase{{"California.", "North Carolina."},
+ "North Carolina",
+ "North Carolina."},
+ FillSelectTestCase{{"NC - North Carolina", "CA - California"},
+ "CA",
+ "CA - California"},
+ // These are not states.
+ FillSelectTestCase{{"NCNCA", "SCNCA"}, "NC", ""}));
+
+class AutofillSelectWithCountriesTest
+ : public testing::TestWithParam<FillSelectTestCase> {
+ public:
+ AutofillSelectWithCountriesTest() { CountryNames::SetLocaleString("en-US"); }
+};
- AutofillField::FillFormField(field, UTF8ToUTF16(test_case.input_value),
- "en-US", "en-US", &field);
- EXPECT_EQ(UTF8ToUTF16(test_case.expected_value), field.value);
- }
+TEST_P(AutofillSelectWithCountriesTest, FillSelectWithCountries) {
+ auto test_case = GetParam();
+ AutofillField field;
+ test::CreateTestSelectField(test_case.select_values, &field);
+ field.set_heuristic_type(ADDRESS_HOME_COUNTRY);
+
+ 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, FillSelectControlWithExpirationMonth) {
- typedef struct {
- std::vector<const char*> select_values;
- std::vector<const char*> select_contents;
- } TestCase;
-
- TestCase test_cases[] = {
- // Values start at 1.
- {{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"},
- NotNumericMonthsContentsNoPlaceholder()},
- // Values start at 1 but single digits are whitespace padded!
- {{" 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8", " 9", "10", "11", "12"},
- NotNumericMonthsContentsNoPlaceholder()},
- // Values start at 0.
- {{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"},
- NotNumericMonthsContentsNoPlaceholder()},
- // Values start at 00.
- {{"00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11"},
- NotNumericMonthsContentsNoPlaceholder()},
- // The AngularJS framework adds a prefix to number types. Test that it is
- // removed.
- {{"number:1", "number:2", "number:3", "number:4", "number:5", "number:6",
- "number:7", "number:8", "number:9", "number:10", "number:11",
- "number:12"},
- NotNumericMonthsContentsNoPlaceholder()},
- // Values start at 0 and the first content is a placeholder.
- {{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"},
- NotNumericMonthsContentsWithPlaceholder()},
- // Values start at 1 and the first content is a placeholder.
- {{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"},
- NotNumericMonthsContentsWithPlaceholder()},
- // Values start at 01 and the first content is a placeholder.
- {{"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12",
- "13"},
- NotNumericMonthsContentsWithPlaceholder()},
- // Values start at 0 after a placeholder.
- {{"?", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"},
- NotNumericMonthsContentsWithPlaceholder()},
- // Values start at 1 after a placeholder.
- {{"?", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"},
- NotNumericMonthsContentsWithPlaceholder()},
- // Values start at 0 after a negative number.
- {{"-1", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"},
- NotNumericMonthsContentsWithPlaceholder()},
- // Values start at 1 after a negative number.
- {{"-1", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"},
- NotNumericMonthsContentsWithPlaceholder()}};
-
- for (TestCase test_case : test_cases) {
- ASSERT_EQ(test_case.select_values.size(), test_case.select_contents.size());
-
- TestFillingExpirationMonth(test_case.select_values,
- test_case.select_contents,
- test_case.select_values.size());
+INSTANTIATE_TEST_CASE_P(
+ AutofillFieldTest,
+ AutofillSelectWithCountriesTest,
+ testing::Values(
+ // Full country names.
+ FillSelectTestCase{{"Albania", "Canada"}, "CA", "Canada"},
+ // Abbreviations.
+ FillSelectTestCase{{"AL", "CA"}, "Canada", "CA"}));
+
+struct FillWithExpirationMonthTestCase {
+ std::vector<const char*> select_values;
+ std::vector<const char*> select_contents;
+};
+
+class AutofillSelectWithExpirationMonthTest
+ : public testing::TestWithParam<FillWithExpirationMonthTestCase> {
+ public:
+ AutofillSelectWithExpirationMonthTest() {
+ CountryNames::SetLocaleString("en-US");
}
+};
+
+TEST_P(AutofillSelectWithExpirationMonthTest,
+ FillSelectControlWithExpirationMonth) {
+ auto test_case = GetParam();
+ ASSERT_EQ(test_case.select_values.size(), test_case.select_contents.size());
+
+ TestFillingExpirationMonth(test_case.select_values, test_case.select_contents,
+ test_case.select_values.size());
}
+INSTANTIATE_TEST_CASE_P(
+ AutofillFieldTest,
+ AutofillSelectWithExpirationMonthTest,
+ testing::Values(
+ // Values start at 1.
+ FillWithExpirationMonthTestCase{
+ {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"},
+ NotNumericMonthsContentsNoPlaceholder()},
+ // Values start at 1 but single digits are whitespace padded!
+ FillWithExpirationMonthTestCase{
+ {" 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8", " 9", "10", "11",
+ "12"},
+ NotNumericMonthsContentsNoPlaceholder()},
+ // Values start at 0.
+ FillWithExpirationMonthTestCase{
+ {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"},
+ NotNumericMonthsContentsNoPlaceholder()},
+ // Values start at 00.
+ FillWithExpirationMonthTestCase{
+ {"00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
+ "11"},
+ NotNumericMonthsContentsNoPlaceholder()},
+ // The AngularJS framework adds a prefix to number types. Test that it
+ // is removed.
+ FillWithExpirationMonthTestCase{
+ {"number:1", "number:2", "number:3", "number:4", "number:5",
+ "number:6", "number:7", "number:8", "number:9", "number:10",
+ "number:11", "number:12"},
+ NotNumericMonthsContentsNoPlaceholder()},
+ // Values start at 0 and the first content is a placeholder.
+ FillWithExpirationMonthTestCase{
+ {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
+ "12"},
+ NotNumericMonthsContentsWithPlaceholder()},
+ // Values start at 1 and the first content is a placeholder.
+ FillWithExpirationMonthTestCase{
+ {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
+ "13"},
+ NotNumericMonthsContentsWithPlaceholder()},
+ // Values start at 01 and the first content is a placeholder.
+ FillWithExpirationMonthTestCase{
+ {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11",
+ "12", "13"},
+ NotNumericMonthsContentsWithPlaceholder()},
+ // Values start at 0 after a placeholder.
+ FillWithExpirationMonthTestCase{
+ {"?", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"},
+ NotNumericMonthsContentsWithPlaceholder()},
+ // Values start at 1 after a placeholder.
+ FillWithExpirationMonthTestCase{
+ {"?", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
+ "12"},
+ NotNumericMonthsContentsWithPlaceholder()},
+ // Values start at 0 after a negative number.
+ FillWithExpirationMonthTestCase{
+ {"-1", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
+ "11"},
+ NotNumericMonthsContentsWithPlaceholder()},
+ // Values start at 1 after a negative number.
+ FillWithExpirationMonthTestCase{
+ {"-1", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
+ "12"},
+ NotNumericMonthsContentsWithPlaceholder()}));
+
TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviatedMonthName) {
std::vector<const char*> kMonthsAbbreviated = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
@@ -920,50 +1027,64 @@ TEST_F(AutofillFieldTest, FindShortestSubstringMatchInSelect) {
// Tests that text state fields are filled correctly depending on their
// maxlength attribute value.
-TEST_F(AutofillFieldTest, FillStateText) {
- typedef struct {
- HtmlFieldType field_type;
- size_t field_max_length;
- std::string value_to_fill;
- std::string expected_value;
- bool should_fill;
- } TestCase;
-
- TestCase test_cases[] = {
- // Filling a state to a text field with the default maxlength value should
- // fill the state value as is.
- {HTML_TYPE_ADDRESS_LEVEL1, /* default value */ 0, "New York", "New York",
- true},
- {HTML_TYPE_ADDRESS_LEVEL1, /* default value */ 0, "NY", "NY", true},
- // Filling a state to a text field with a maxlength value equal to the
- // value's length should fill the state value as is.
- {HTML_TYPE_ADDRESS_LEVEL1, 8, "New York", "New York", true},
- // Filling a state to a text field with a maxlength value lower than the
- // value's length but higher than the value's abbreviation should fill the
- // state abbreviation.
- {HTML_TYPE_ADDRESS_LEVEL1, 2, "New York", "NY", true},
- {HTML_TYPE_ADDRESS_LEVEL1, 2, "NY", "NY", true},
- // Filling a state to a text field with a maxlength value lower than the
- // value's length and the value's abbreviation should not fill at all.
- {HTML_TYPE_ADDRESS_LEVEL1, 1, "New York", "", false},
- {HTML_TYPE_ADDRESS_LEVEL1, 1, "NY", "", false},
- // Filling a state to a text field with a maxlength value lower than the
- // value's length and that has no associated abbreviation should not fill
- // at all.
- {HTML_TYPE_ADDRESS_LEVEL1, 3, "Quebec", "", false}};
-
- for (const TestCase& test_case : test_cases) {
- AutofillField field;
- field.SetHtmlType(test_case.field_type, HtmlFieldMode());
- field.max_length = test_case.field_max_length;
-
- bool has_filled = AutofillField::FillFormField(
- field, ASCIIToUTF16(test_case.value_to_fill), "en-US", "en-US", &field);
-
- EXPECT_EQ(test_case.should_fill, has_filled);
- EXPECT_EQ(ASCIIToUTF16(test_case.expected_value), field.value);
- }
+struct FillStateTextTestCase {
+ HtmlFieldType field_type;
+ size_t field_max_length;
+ std::string value_to_fill;
+ std::string expected_value;
+ bool should_fill;
+};
+
+class AutofillStateTextTest
+ : public testing::TestWithParam<FillStateTextTestCase> {
+ public:
+ AutofillStateTextTest() { CountryNames::SetLocaleString("en-US"); }
+};
+
+TEST_P(AutofillStateTextTest, FillStateText) {
+ auto test_case = GetParam();
+ AutofillField field;
+ field.SetHtmlType(test_case.field_type, HtmlFieldMode());
+ field.max_length = test_case.field_max_length;
+
+ bool has_filled = AutofillField::FillFormField(
+ field, ASCIIToUTF16(test_case.value_to_fill), "en-US", "en-US", &field);
+
+ EXPECT_EQ(test_case.should_fill, has_filled);
+ EXPECT_EQ(ASCIIToUTF16(test_case.expected_value), field.value);
}
+INSTANTIATE_TEST_CASE_P(
+ AutofillFieldTest,
+ AutofillStateTextTest,
+ testing::Values(
+ // Filling a state to a text field with the default maxlength value
+ // should
+ // fill the state value as is.
+ FillStateTextTestCase{HTML_TYPE_ADDRESS_LEVEL1, /* default value */ 0,
+ "New York", "New York", true},
+ FillStateTextTestCase{HTML_TYPE_ADDRESS_LEVEL1, /* default value */ 0,
+ "NY", "NY", true},
+ // Filling a state to a text field with a maxlength value equal to the
+ // value's length should fill the state value as is.
+ FillStateTextTestCase{HTML_TYPE_ADDRESS_LEVEL1, 8, "New York",
+ "New York", true},
+ // Filling a state to a text field with a maxlength value lower than the
+ // value's length but higher than the value's abbreviation should fill
+ // the state abbreviation.
+ FillStateTextTestCase{HTML_TYPE_ADDRESS_LEVEL1, 2, "New York", "NY",
+ true},
+ FillStateTextTestCase{HTML_TYPE_ADDRESS_LEVEL1, 2, "NY", "NY", true},
+ // Filling a state to a text field with a maxlength value lower than the
+ // value's length and the value's abbreviation should not fill at all.
+ FillStateTextTestCase{HTML_TYPE_ADDRESS_LEVEL1, 1, "New York", "",
+ false},
+ FillStateTextTestCase{HTML_TYPE_ADDRESS_LEVEL1, 1, "NY", "", false},
+ // Filling a state to a text field with a maxlength value lower than the
+ // value's length and that has no associated abbreviation should not
+ // fill at all.
+ FillStateTextTestCase{HTML_TYPE_ADDRESS_LEVEL1, 3, "Quebec", "",
+ false}));
+
} // namespace
} // namespace autofill

Powered by Google App Engine
This is Rietveld 408576698