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

Side by Side Diff: components/autofill/browser/form_field_unittest.cc

Issue 17392006: In components/autofill, move browser/ to core/browser/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase to fix conflicts Created 7 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « components/autofill/browser/form_field.cc ('k') | components/autofill/browser/form_group.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/memory/scoped_vector.h"
6 #include "base/strings/string16.h"
7 #include "base/strings/utf_string_conversions.h"
8 #include "components/autofill/browser/autofill_field.h"
9 #include "components/autofill/browser/form_field.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace autofill {
13
14 TEST(FormFieldTest, Match) {
15 AutofillField field;
16
17 // Empty strings match.
18 EXPECT_TRUE(FormField::Match(&field, base::string16(),
19 FormField::MATCH_LABEL));
20
21 // Empty pattern matches non-empty string.
22 field.label = ASCIIToUTF16("a");
23 EXPECT_TRUE(FormField::Match(&field, base::string16(),
24 FormField::MATCH_LABEL));
25
26 // Strictly empty pattern matches empty string.
27 field.label = base::string16();
28 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("^$"),
29 FormField::MATCH_LABEL));
30
31 // Strictly empty pattern does not match non-empty string.
32 field.label = ASCIIToUTF16("a");
33 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("^$"),
34 FormField::MATCH_LABEL));
35
36 // Non-empty pattern doesn't match empty string.
37 field.label = base::string16();
38 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("a"),
39 FormField::MATCH_LABEL));
40
41 // Beginning of line.
42 field.label = ASCIIToUTF16("head_tail");
43 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("^head"),
44 FormField::MATCH_LABEL));
45 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("^tail"),
46 FormField::MATCH_LABEL));
47
48 // End of line.
49 field.label = ASCIIToUTF16("head_tail");
50 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("head$"),
51 FormField::MATCH_LABEL));
52 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("tail$"),
53 FormField::MATCH_LABEL));
54
55 // Exact.
56 field.label = ASCIIToUTF16("head_tail");
57 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("^head$"),
58 FormField::MATCH_LABEL));
59 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("^tail$"),
60 FormField::MATCH_LABEL));
61 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("^head_tail$"),
62 FormField::MATCH_LABEL));
63
64 // Escaped dots.
65 field.label = ASCIIToUTF16("m.i.");
66 // Note: This pattern is misleading as the "." characters are wild cards.
67 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("m.i."),
68 FormField::MATCH_LABEL));
69 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("m\\.i\\."),
70 FormField::MATCH_LABEL));
71 field.label = ASCIIToUTF16("mXiX");
72 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("m.i."),
73 FormField::MATCH_LABEL));
74 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("m\\.i\\."),
75 FormField::MATCH_LABEL));
76
77 // Repetition.
78 field.label = ASCIIToUTF16("headtail");
79 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head.*tail"),
80 FormField::MATCH_LABEL));
81 field.label = ASCIIToUTF16("headXtail");
82 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head.*tail"),
83 FormField::MATCH_LABEL));
84 field.label = ASCIIToUTF16("headXXXtail");
85 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head.*tail"),
86 FormField::MATCH_LABEL));
87 field.label = ASCIIToUTF16("headtail");
88 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("head.+tail"),
89 FormField::MATCH_LABEL));
90 field.label = ASCIIToUTF16("headXtail");
91 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head.+tail"),
92 FormField::MATCH_LABEL));
93 field.label = ASCIIToUTF16("headXXXtail");
94 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head.+tail"),
95 FormField::MATCH_LABEL));
96
97 // Alternation.
98 field.label = ASCIIToUTF16("head_tail");
99 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head|other"),
100 FormField::MATCH_LABEL));
101 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("tail|other"),
102 FormField::MATCH_LABEL));
103 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("bad|good"),
104 FormField::MATCH_LABEL));
105
106 // Case sensitivity.
107 field.label = ASCIIToUTF16("xxxHeAd_tAiLxxx");
108 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head_tail"),
109 FormField::MATCH_LABEL));
110
111 // Word boundaries.
112 field.label = ASCIIToUTF16("contains word:");
113 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("\\bword\\b"),
114 FormField::MATCH_LABEL));
115 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("\\bcon\\b"),
116 FormField::MATCH_LABEL));
117 // Make sure the circumflex in 'crepe' is not treated as a word boundary.
118 field.label = UTF8ToUTF16("cr" "\xC3\xAA" "pe");
119 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("\\bcr\\b"),
120 FormField::MATCH_LABEL));
121 }
122
123 // Test that we ignore checkable elements.
124 TEST(FormFieldTest, ParseFormFields) {
125 ScopedVector<AutofillField> fields;
126 FormFieldData field_data;
127 field_data.form_control_type = "text";
128
129 field_data.label = ASCIIToUTF16("Address line1");
130 fields.push_back(new AutofillField(field_data, field_data.label));
131
132 field_data.is_checkable = true;
133 field_data.label = ASCIIToUTF16("Is PO Box");
134 fields.push_back(new AutofillField(field_data, field_data.label));
135
136 // reset is_checkable to false.
137 field_data.is_checkable = false;
138 field_data.label = ASCIIToUTF16("Address line2");
139 fields.push_back(new AutofillField(field_data, field_data.label));
140
141 FieldTypeMap field_type_map;
142 FormField::ParseFormFields(fields.get(), &field_type_map);
143 // Checkable element shouldn't interfere with inference of Address line2.
144 EXPECT_EQ(2U, field_type_map.size());
145
146 EXPECT_EQ(ADDRESS_HOME_LINE1,
147 field_type_map.find(ASCIIToUTF16("Address line1"))->second);
148 EXPECT_EQ(ADDRESS_HOME_LINE2,
149 field_type_map.find(ASCIIToUTF16("Address line2"))->second);
150 }
151
152 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/browser/form_field.cc ('k') | components/autofill/browser/form_group.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698