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

Side by Side Diff: components/autofill/core/browser/address_field_unittest.cc

Issue 853523004: Autofill: Set requirements for number of recognized fields in an autofillable form (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix bug, adjust tests Created 5 years, 11 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 unified diff | Download patch
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698