| OLD | NEW |
| 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/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
| 6 #include "base/memory/scoped_vector.h" | 6 #include "base/memory/scoped_vector.h" |
| 7 #include "base/strings/string16.h" | 7 #include "base/strings/string16.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "components/autofill/core/browser/address_field.h" | 9 #include "components/autofill/core/browser/address_field.h" |
| 10 #include "components/autofill/core/browser/autofill_field.h" | 10 #include "components/autofill/core/browser/autofill_field.h" |
| 11 #include "components/autofill/core/browser/autofill_scanner.h" | 11 #include "components/autofill/core/browser/autofill_scanner.h" |
| 12 #include "components/autofill/core/common/form_field_data.h" | 12 #include "components/autofill/core/common/form_field_data.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 14 |
| 15 using base::ASCIIToUTF16; | 15 using base::ASCIIToUTF16; |
| 16 | 16 |
| 17 namespace autofill { | 17 namespace autofill { |
| 18 | 18 |
| 19 class AddressFieldTest : public testing::Test { | 19 class AddressFieldTest : public testing::Test { |
| 20 public: | 20 public: |
| 21 AddressFieldTest() {} | 21 AddressFieldTest() {} |
| 22 | 22 |
| 23 protected: | 23 protected: |
| 24 ScopedVector<AutofillField> list_; | |
| 25 scoped_ptr<AddressField> field_; | |
| 26 ServerFieldTypeMap field_type_map_; | |
| 27 | |
| 28 // Downcast for tests. | 24 // Downcast for tests. |
| 29 static scoped_ptr<AddressField> Parse(AutofillScanner* scanner) { | 25 static scoped_ptr<AddressField> Parse(AutofillScanner* scanner) { |
| 30 scoped_ptr<FormField> field = AddressField::Parse(scanner); | 26 scoped_ptr<FormField> field = AddressField::Parse(scanner); |
| 31 return make_scoped_ptr(static_cast<AddressField*>(field.release())); | 27 return make_scoped_ptr(static_cast<AddressField*>(field.release())); |
| 32 } | 28 } |
| 33 | 29 |
| 30 void AddDummyCityField() { |
| 31 FormFieldData field; |
| 32 field.form_control_type = "text"; |
| 33 field.label = ASCIIToUTF16("City"); |
| 34 field.name = ASCIIToUTF16("city"); |
| 35 list_.push_back(new AutofillField(field, ASCIIToUTF16("city"))); |
| 36 } |
| 37 |
| 38 ScopedVector<AutofillField> list_; |
| 39 scoped_ptr<AddressField> field_; |
| 40 ServerFieldTypeMap field_type_map_; |
| 41 |
| 34 private: | 42 private: |
| 35 DISALLOW_COPY_AND_ASSIGN(AddressFieldTest); | 43 DISALLOW_COPY_AND_ASSIGN(AddressFieldTest); |
| 36 }; | 44 }; |
| 37 | 45 |
| 38 TEST_F(AddressFieldTest, Empty) { | 46 TEST_F(AddressFieldTest, Empty) { |
| 39 AutofillScanner scanner(list_.get()); | 47 AutofillScanner scanner(list_.get()); |
| 40 field_ = Parse(&scanner); | 48 field_ = Parse(&scanner); |
| 41 ASSERT_EQ(nullptr, field_.get()); | 49 ASSERT_EQ(nullptr, field_.get()); |
| 42 } | 50 } |
| 43 | 51 |
| 44 TEST_F(AddressFieldTest, NonParse) { | 52 TEST_F(AddressFieldTest, NonParse) { |
| 45 list_.push_back(new AutofillField); | 53 list_.push_back(new AutofillField); |
| 46 AutofillScanner scanner(list_.get()); | 54 AutofillScanner scanner(list_.get()); |
| 47 field_ = Parse(&scanner); | 55 field_ = Parse(&scanner); |
| 48 ASSERT_EQ(nullptr, field_.get()); | 56 ASSERT_EQ(nullptr, field_.get()); |
| 49 } | 57 } |
| 50 | 58 |
| 51 TEST_F(AddressFieldTest, ParseOneLineAddress) { | 59 TEST_F(AddressFieldTest, ParseOneLineAddress) { |
| 52 FormFieldData field; | 60 FormFieldData field; |
| 53 field.form_control_type = "text"; | 61 field.form_control_type = "text"; |
| 54 | 62 |
| 63 // Just an address by itself will not parse successfully. |
| 55 field.label = ASCIIToUTF16("Address"); | 64 field.label = ASCIIToUTF16("Address"); |
| 56 field.name = ASCIIToUTF16("address"); | 65 field.name = ASCIIToUTF16("address"); |
| 57 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); | 66 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); |
| 58 | 67 |
| 68 { |
| 69 AutofillScanner scanner(list_.get()); |
| 70 field_ = Parse(&scanner); |
| 71 ASSERT_EQ(nullptr, field_.get()); |
| 72 } |
| 73 |
| 74 AddDummyCityField(); |
| 59 AutofillScanner scanner(list_.get()); | 75 AutofillScanner scanner(list_.get()); |
| 60 field_ = Parse(&scanner); | 76 field_ = Parse(&scanner); |
| 61 ASSERT_NE(nullptr, field_.get()); | 77 ASSERT_NE(nullptr, field_.get()); |
| 78 |
| 62 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 79 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 63 ASSERT_TRUE( | 80 ASSERT_TRUE( |
| 64 field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); | 81 field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); |
| 65 EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); | 82 EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); |
| 66 } | 83 } |
| 67 | 84 |
| 68 TEST_F(AddressFieldTest, ParseTwoLineAddress) { | 85 TEST_F(AddressFieldTest, ParseTwoLineAddress) { |
| 69 FormFieldData field; | 86 FormFieldData field; |
| 70 field.form_control_type = "text"; | 87 field.form_control_type = "text"; |
| 71 | 88 |
| 72 field.label = ASCIIToUTF16("Address"); | 89 field.label = ASCIIToUTF16("Address"); |
| 73 field.name = ASCIIToUTF16("address"); | 90 field.name = ASCIIToUTF16("address"); |
| 74 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); | 91 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); |
| 75 | 92 |
| 76 field.label = base::string16(); | 93 field.label = base::string16(); |
| 77 field.name = ASCIIToUTF16("address2"); | 94 field.name = ASCIIToUTF16("address2"); |
| 78 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr2"))); | 95 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr2"))); |
| 79 | 96 |
| 97 AddDummyCityField(); |
| 80 AutofillScanner scanner(list_.get()); | 98 AutofillScanner scanner(list_.get()); |
| 81 field_ = Parse(&scanner); | 99 field_ = Parse(&scanner); |
| 82 ASSERT_NE(nullptr, field_.get()); | 100 ASSERT_NE(nullptr, field_.get()); |
| 83 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 101 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 84 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("addr1")) != | 102 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("addr1")) != |
| 85 field_type_map_.end()); | 103 field_type_map_.end()); |
| 86 EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); | 104 EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); |
| 87 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("addr2")) != | 105 ASSERT_TRUE(field_type_map_.find(ASCIIToUTF16("addr2")) != |
| 88 field_type_map_.end()); | 106 field_type_map_.end()); |
| 89 EXPECT_EQ(ADDRESS_HOME_LINE2, field_type_map_[ASCIIToUTF16("addr2")]); | 107 EXPECT_EQ(ADDRESS_HOME_LINE2, field_type_map_[ASCIIToUTF16("addr2")]); |
| 90 } | 108 } |
| 91 | 109 |
| 92 TEST_F(AddressFieldTest, ParseThreeLineAddress) { | 110 TEST_F(AddressFieldTest, ParseThreeLineAddress) { |
| 93 FormFieldData field; | 111 FormFieldData field; |
| 94 field.form_control_type = "text"; | 112 field.form_control_type = "text"; |
| 95 | 113 |
| 96 field.label = ASCIIToUTF16("Address Line1"); | 114 field.label = ASCIIToUTF16("Address Line1"); |
| 97 field.name = ASCIIToUTF16("Address1"); | 115 field.name = ASCIIToUTF16("Address1"); |
| 98 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); | 116 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); |
| 99 | 117 |
| 100 field.label = ASCIIToUTF16("Address Line2"); | 118 field.label = ASCIIToUTF16("Address Line2"); |
| 101 field.name = ASCIIToUTF16("Address2"); | 119 field.name = ASCIIToUTF16("Address2"); |
| 102 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr2"))); | 120 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr2"))); |
| 103 | 121 |
| 104 field.label = ASCIIToUTF16("Address Line3"); | 122 field.label = ASCIIToUTF16("Address Line3"); |
| 105 field.name = ASCIIToUTF16("Address3"); | 123 field.name = ASCIIToUTF16("Address3"); |
| 106 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr3"))); | 124 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr3"))); |
| 107 | 125 |
| 126 AddDummyCityField(); |
| 108 AutofillScanner scanner(list_.get()); | 127 AutofillScanner scanner(list_.get()); |
| 109 field_ = Parse(&scanner); | 128 field_ = Parse(&scanner); |
| 110 ASSERT_NE(nullptr, field_.get()); | 129 ASSERT_NE(nullptr, field_.get()); |
| 111 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 130 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 112 ASSERT_TRUE( | 131 ASSERT_TRUE( |
| 113 field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); | 132 field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); |
| 114 EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); | 133 EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); |
| 115 ASSERT_TRUE( | 134 ASSERT_TRUE( |
| 116 field_type_map_.find(ASCIIToUTF16("addr2")) != field_type_map_.end()); | 135 field_type_map_.find(ASCIIToUTF16("addr2")) != field_type_map_.end()); |
| 117 EXPECT_EQ(ADDRESS_HOME_LINE2, field_type_map_[ASCIIToUTF16("addr2")]); | 136 EXPECT_EQ(ADDRESS_HOME_LINE2, field_type_map_[ASCIIToUTF16("addr2")]); |
| 118 ASSERT_TRUE( | 137 ASSERT_TRUE( |
| 119 field_type_map_.find(ASCIIToUTF16("addr3")) != field_type_map_.end()); | 138 field_type_map_.find(ASCIIToUTF16("addr3")) != field_type_map_.end()); |
| 120 EXPECT_EQ(ADDRESS_HOME_LINE3, field_type_map_[ASCIIToUTF16("addr3")]); | 139 EXPECT_EQ(ADDRESS_HOME_LINE3, field_type_map_[ASCIIToUTF16("addr3")]); |
| 121 } | 140 } |
| 122 | 141 |
| 123 TEST_F(AddressFieldTest, ParseStreetAddressFromTextArea) { | 142 TEST_F(AddressFieldTest, ParseStreetAddressFromTextArea) { |
| 124 FormFieldData field; | 143 FormFieldData field; |
| 125 field.form_control_type = "textarea"; | 144 field.form_control_type = "textarea"; |
| 126 | 145 |
| 127 field.label = ASCIIToUTF16("Address"); | 146 field.label = ASCIIToUTF16("Address"); |
| 128 field.name = ASCIIToUTF16("address"); | 147 field.name = ASCIIToUTF16("address"); |
| 129 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr"))); | 148 list_.push_back(new AutofillField(field, ASCIIToUTF16("addr"))); |
| 130 | 149 |
| 150 AddDummyCityField(); |
| 131 AutofillScanner scanner(list_.get()); | 151 AutofillScanner scanner(list_.get()); |
| 132 field_ = Parse(&scanner); | 152 field_ = Parse(&scanner); |
| 133 ASSERT_NE(nullptr, field_.get()); | 153 ASSERT_NE(nullptr, field_.get()); |
| 134 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 154 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 135 ASSERT_TRUE( | 155 ASSERT_TRUE( |
| 136 field_type_map_.find(ASCIIToUTF16("addr")) != field_type_map_.end()); | 156 field_type_map_.find(ASCIIToUTF16("addr")) != field_type_map_.end()); |
| 137 EXPECT_EQ(ADDRESS_HOME_STREET_ADDRESS, field_type_map_[ASCIIToUTF16("addr")]); | 157 EXPECT_EQ(ADDRESS_HOME_STREET_ADDRESS, field_type_map_[ASCIIToUTF16("addr")]); |
| 138 } | 158 } |
| 139 | 159 |
| 140 TEST_F(AddressFieldTest, ParseCity) { | 160 TEST_F(AddressFieldTest, ParseCity) { |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 AutofillScanner scanner(list_.get()); | 260 AutofillScanner scanner(list_.get()); |
| 241 field_ = Parse(&scanner); | 261 field_ = Parse(&scanner); |
| 242 ASSERT_NE(nullptr, field_.get()); | 262 ASSERT_NE(nullptr, field_.get()); |
| 243 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 263 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
| 244 ASSERT_TRUE( | 264 ASSERT_TRUE( |
| 245 field_type_map_.find(ASCIIToUTF16("company1")) != field_type_map_.end()); | 265 field_type_map_.find(ASCIIToUTF16("company1")) != field_type_map_.end()); |
| 246 EXPECT_EQ(COMPANY_NAME, field_type_map_[ASCIIToUTF16("company1")]); | 266 EXPECT_EQ(COMPANY_NAME, field_type_map_[ASCIIToUTF16("company1")]); |
| 247 } | 267 } |
| 248 | 268 |
| 249 } // namespace autofill | 269 } // namespace autofill |
| OLD | NEW |