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 |