Index: components/autofill/core/browser/phone_field_unittest.cc |
diff --git a/components/autofill/core/browser/phone_field_unittest.cc b/components/autofill/core/browser/phone_field_unittest.cc |
index f2e04fab6ec79c7f823ad6deb2acc1dcae0f3cfe..056206380134b3e7c5a7f4c44983a2dbeee1e6e7 100644 |
--- a/components/autofill/core/browser/phone_field_unittest.cc |
+++ b/components/autofill/core/browser/phone_field_unittest.cc |
@@ -15,21 +15,43 @@ using base::ASCIIToUTF16; |
namespace autofill { |
+namespace { |
+ |
+const char* const kFieldTypes[] = { |
+ "text", |
+ "tel", |
Lei Zhang
2015/03/26 02:09:15
FYI, I intend to add "number" in a follow up CL.
|
+}; |
+ |
+} // namespace |
+ |
class PhoneFieldTest : public testing::Test { |
public: |
PhoneFieldTest() {} |
protected: |
- ScopedVector<AutofillField> list_; |
- scoped_ptr<PhoneField> field_; |
- ServerFieldTypeMap field_type_map_; |
- |
// Downcast for tests. |
static scoped_ptr<PhoneField> Parse(AutofillScanner* scanner) { |
scoped_ptr<FormField> field = PhoneField::Parse(scanner); |
return make_scoped_ptr(static_cast<PhoneField*>(field.release())); |
} |
+ void Clear() { |
+ list_.clear(); |
+ field_.reset(); |
+ field_type_map_.clear(); |
+ } |
+ |
+ void CheckField(const std::string& name, |
+ ServerFieldType expected_type) const { |
+ auto it = field_type_map_.find(ASCIIToUTF16(name)); |
+ ASSERT_TRUE(it != field_type_map_.end()) << name; |
+ EXPECT_EQ(expected_type, it->second) << name; |
+ } |
+ |
+ ScopedVector<AutofillField> list_; |
+ scoped_ptr<PhoneField> field_; |
+ ServerFieldTypeMap field_type_map_; |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(PhoneFieldTest); |
}; |
@@ -49,43 +71,45 @@ TEST_F(PhoneFieldTest, NonParse) { |
TEST_F(PhoneFieldTest, ParseOneLinePhone) { |
FormFieldData field; |
- field.form_control_type = "text"; |
- field.label = ASCIIToUTF16("Phone"); |
- field.name = ASCIIToUTF16("phone"); |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); |
+ for (size_t i = 0; i < arraysize(kFieldTypes); ++i) { |
+ Clear(); |
- AutofillScanner scanner(list_.get()); |
- field_ = Parse(&scanner); |
- ASSERT_NE(nullptr, field_.get()); |
- ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_WHOLE_NUMBER, field_type_map_[ASCIIToUTF16("phone1")]); |
+ field.form_control_type = kFieldTypes[i]; |
+ field.label = ASCIIToUTF16("Phone"); |
+ field.name = ASCIIToUTF16("phone"); |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); |
+ |
+ AutofillScanner scanner(list_.get()); |
+ field_ = Parse(&scanner); |
+ ASSERT_NE(nullptr, field_.get()); |
+ ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
+ CheckField("phone1", PHONE_HOME_WHOLE_NUMBER); |
+ } |
} |
TEST_F(PhoneFieldTest, ParseTwoLinePhone) { |
FormFieldData field; |
- field.form_control_type = "text"; |
- field.label = ASCIIToUTF16("Area Code"); |
- field.name = ASCIIToUTF16("area code"); |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
+ for (size_t i = 0; i < arraysize(kFieldTypes); ++i) { |
+ Clear(); |
- field.label = ASCIIToUTF16("Phone"); |
- field.name = ASCIIToUTF16("phone"); |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); |
+ field.form_control_type = kFieldTypes[i]; |
+ field.label = ASCIIToUTF16("Area Code"); |
+ field.name = ASCIIToUTF16("area code"); |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
- AutofillScanner scanner(list_.get()); |
- field_ = Parse(&scanner); |
- ASSERT_NE(nullptr, field_.get()); |
- ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); |
+ field.label = ASCIIToUTF16("Phone"); |
+ field.name = ASCIIToUTF16("phone"); |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); |
+ |
+ AutofillScanner scanner(list_.get()); |
+ field_ = Parse(&scanner); |
+ ASSERT_NE(nullptr, field_.get()); |
+ ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
+ CheckField("areacode1", PHONE_HOME_CITY_CODE); |
+ CheckField("phone2", PHONE_HOME_NUMBER); |
+ } |
} |
TEST_F(PhoneFieldTest, ThreePartPhoneNumber) { |
@@ -95,43 +119,40 @@ TEST_F(PhoneFieldTest, ThreePartPhoneNumber) { |
// size: <prefix> is no bigger than 3 characters, and <suffix> is no bigger |
// than 4. |
FormFieldData field; |
- field.form_control_type = "text"; |
- field.label = ASCIIToUTF16("Phone:"); |
- field.name = ASCIIToUTF16("dayphone1"); |
- field.max_length = 0; |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
- |
- field.label = ASCIIToUTF16("-"); |
- field.name = ASCIIToUTF16("dayphone2"); |
- field.max_length = 3; |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
- |
- field.label = ASCIIToUTF16("-"); |
- field.name = ASCIIToUTF16("dayphone3"); |
- field.max_length = 4; |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); |
- |
- field.label = ASCIIToUTF16("ext.:"); |
- field.name = ASCIIToUTF16("dayphone4"); |
- field.max_length = 0; |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("ext4"))); |
- |
- AutofillScanner scanner(list_.get()); |
- field_ = Parse(&scanner); |
- ASSERT_NE(nullptr, field_.get()); |
- ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); |
- EXPECT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("ext4")) == field_type_map_.end()); |
+ for (size_t i = 0; i < arraysize(kFieldTypes); ++i) { |
+ Clear(); |
+ |
+ field.form_control_type = kFieldTypes[i]; |
+ field.label = ASCIIToUTF16("Phone:"); |
+ field.name = ASCIIToUTF16("dayphone1"); |
+ field.max_length = 0; |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
+ |
+ field.label = ASCIIToUTF16("-"); |
+ field.name = ASCIIToUTF16("dayphone2"); |
+ field.max_length = 3; |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
+ |
+ field.label = ASCIIToUTF16("-"); |
+ field.name = ASCIIToUTF16("dayphone3"); |
+ field.max_length = 4; |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); |
+ |
+ field.label = ASCIIToUTF16("ext.:"); |
+ field.name = ASCIIToUTF16("dayphone4"); |
+ field.max_length = 0; |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("ext4"))); |
+ |
+ AutofillScanner scanner(list_.get()); |
+ field_ = Parse(&scanner); |
+ ASSERT_NE(nullptr, field_.get()); |
+ ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
+ CheckField("areacode1", PHONE_HOME_CITY_CODE); |
+ CheckField("prefix2", PHONE_HOME_NUMBER); |
+ CheckField("suffix3", PHONE_HOME_NUMBER); |
+ EXPECT_FALSE(ContainsKey(field_type_map_, ASCIIToUTF16("ext4"))); |
+ } |
} |
// This scenario of explicitly labeled "prefix" and "suffix" phone numbers |
@@ -139,95 +160,91 @@ TEST_F(PhoneFieldTest, ThreePartPhoneNumber) { |
// https://www.wrapables.com/jsp/Signup.jsp. |
TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix) { |
FormFieldData field; |
- field.form_control_type = "text"; |
- |
- field.label = ASCIIToUTF16("Phone:"); |
- field.name = ASCIIToUTF16("area"); |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
- |
- field.label = base::string16(); |
- field.name = ASCIIToUTF16("prefix"); |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
- field.label = base::string16(); |
- field.name = ASCIIToUTF16("suffix"); |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); |
- |
- AutofillScanner scanner(list_.get()); |
- field_ = Parse(&scanner); |
- ASSERT_NE(nullptr, field_.get()); |
- ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); |
+ for (size_t i = 0; i < arraysize(kFieldTypes); ++i) { |
+ Clear(); |
+ |
+ field.form_control_type = kFieldTypes[i]; |
+ field.label = ASCIIToUTF16("Phone:"); |
+ field.name = ASCIIToUTF16("area"); |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
+ |
+ field.label = base::string16(); |
+ field.name = ASCIIToUTF16("prefix"); |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
+ |
+ field.label = base::string16(); |
+ field.name = ASCIIToUTF16("suffix"); |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); |
+ |
+ AutofillScanner scanner(list_.get()); |
+ field_ = Parse(&scanner); |
+ ASSERT_NE(nullptr, field_.get()); |
+ ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
+ CheckField("areacode1", PHONE_HOME_CITY_CODE); |
+ CheckField("prefix2", PHONE_HOME_NUMBER); |
+ CheckField("suffix3", PHONE_HOME_NUMBER); |
+ } |
} |
TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix2) { |
FormFieldData field; |
- field.form_control_type = "text"; |
- |
- field.label = ASCIIToUTF16("("); |
- field.name = ASCIIToUTF16("phone1"); |
- field.max_length = 3; |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); |
- |
- field.label = ASCIIToUTF16(")"); |
- field.name = ASCIIToUTF16("phone2"); |
- field.max_length = 3; |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); |
- field.label = base::string16(); |
- field.name = ASCIIToUTF16("phone3"); |
- field.max_length = 4; |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("phone3"))); |
- |
- AutofillScanner scanner(list_.get()); |
- field_ = Parse(&scanner); |
- ASSERT_NE(nullptr, field_.get()); |
- ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("phone1")]); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("phone3")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone3")]); |
+ for (size_t i = 0; i < arraysize(kFieldTypes); ++i) { |
+ Clear(); |
+ |
+ field.form_control_type = kFieldTypes[i]; |
+ field.label = ASCIIToUTF16("("); |
+ field.name = ASCIIToUTF16("phone1"); |
+ field.max_length = 3; |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); |
+ |
+ field.label = ASCIIToUTF16(")"); |
+ field.name = ASCIIToUTF16("phone2"); |
+ field.max_length = 3; |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); |
+ |
+ field.label = base::string16(); |
+ field.name = ASCIIToUTF16("phone3"); |
+ field.max_length = 4; |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("phone3"))); |
+ |
+ AutofillScanner scanner(list_.get()); |
+ field_ = Parse(&scanner); |
+ ASSERT_NE(nullptr, field_.get()); |
+ ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
+ CheckField("phone1", PHONE_HOME_CITY_CODE); |
+ CheckField("phone2", PHONE_HOME_NUMBER); |
+ CheckField("phone3", PHONE_HOME_NUMBER); |
+ } |
} |
TEST_F(PhoneFieldTest, CountryAndCityAndPhoneNumber) { |
// Phone in format <country code>:3 - <city and number>:10 |
// The |maxlength| is considered, otherwise it's too broad. |
FormFieldData field; |
- field.form_control_type = "text"; |
- |
- field.label = ASCIIToUTF16("Phone Number"); |
- field.name = ASCIIToUTF16("CountryCode"); |
- field.max_length = 3; |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("country"))); |
- |
- field.label = ASCIIToUTF16("Phone Number"); |
- field.name = ASCIIToUTF16("PhoneNumber"); |
- field.max_length = 10; |
- list_.push_back(new AutofillField(field, ASCIIToUTF16("phone"))); |
- AutofillScanner scanner(list_.get()); |
- field_ = Parse(&scanner); |
- ASSERT_NE(nullptr, field_.get()); |
- ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("country")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_COUNTRY_CODE, field_type_map_[ASCIIToUTF16("country")]); |
- ASSERT_TRUE( |
- field_type_map_.find(ASCIIToUTF16("phone")) != field_type_map_.end()); |
- EXPECT_EQ(PHONE_HOME_CITY_AND_NUMBER, field_type_map_[ASCIIToUTF16("phone")]); |
+ for (size_t i = 0; i < arraysize(kFieldTypes); ++i) { |
+ Clear(); |
+ |
+ field.form_control_type = kFieldTypes[i]; |
+ field.label = ASCIIToUTF16("Phone Number"); |
+ field.name = ASCIIToUTF16("CountryCode"); |
+ field.max_length = 3; |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("country"))); |
+ |
+ field.label = ASCIIToUTF16("Phone Number"); |
+ field.name = ASCIIToUTF16("PhoneNumber"); |
+ field.max_length = 10; |
+ list_.push_back(new AutofillField(field, ASCIIToUTF16("phone"))); |
+ |
+ AutofillScanner scanner(list_.get()); |
+ field_ = Parse(&scanner); |
+ ASSERT_NE(nullptr, field_.get()); |
+ ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
+ CheckField("country", PHONE_HOME_COUNTRY_CODE); |
+ CheckField("phone", PHONE_HOME_CITY_AND_NUMBER); |
+ } |
} |
} // namespace autofill |