name_field_unittest.cc revision c407dc5cd9bdc5668497f21b26b09d988ab439de
1// Copyright (c) 2010 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/scoped_ptr.h"
6#include "base/scoped_vector.h"
7#include "chrome/browser/autofill/autofill_field.h"
8#include "chrome/browser/autofill/name_field.h"
9#include "testing/gtest/include/gtest/gtest.h"
10#include "webkit/glue/form_field.h"
11
12namespace {
13
14class NameFieldTest : public testing::Test {
15 public:
16  NameFieldTest() {}
17
18 protected:
19  ScopedVector<AutoFillField> list_;
20  scoped_ptr<NameField> field_;
21  FieldTypeMap field_type_map_;
22  std::vector<AutoFillField*>::const_iterator iter_;
23
24 private:
25  DISALLOW_COPY_AND_ASSIGN(NameFieldTest);
26};
27
28TEST_F(NameFieldTest, FirstMiddleLast) {
29  list_.push_back(
30      new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("First Name"),
31                                               ASCIIToUTF16("First"),
32                                               string16(),
33                                               ASCIIToUTF16("text"),
34                                               0),
35                        ASCIIToUTF16("name1")));
36  list_.push_back(
37      new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Middle Name"),
38                                               ASCIIToUTF16("Middle"),
39                                               string16(),
40                                               ASCIIToUTF16("text"),
41                                               0),
42                        ASCIIToUTF16("name2")));
43  list_.push_back(
44      new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Last Name"),
45                                               ASCIIToUTF16("Last"),
46                                               string16(),
47                                               ASCIIToUTF16("text"),
48                                               0),
49                        ASCIIToUTF16("name3")));
50  list_.push_back(NULL);
51  iter_ = list_.begin();
52  field_.reset(NameField::Parse(&iter_, false));
53  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
54  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
55  ASSERT_TRUE(
56      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
57  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
58  ASSERT_TRUE(
59      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
60  EXPECT_EQ(NAME_MIDDLE, field_type_map_[ASCIIToUTF16("name2")]);
61  ASSERT_TRUE(
62      field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end());
63  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]);
64}
65
66TEST_F(NameFieldTest, FirstMiddleLast2) {
67  list_.push_back(
68      new AutoFillField(webkit_glue::FormField(string16(),
69                                               ASCIIToUTF16("firstName"),
70                                               string16(),
71                                               ASCIIToUTF16("text"),
72                                               0),
73                        ASCIIToUTF16("name1")));
74  list_.push_back(
75      new AutoFillField(webkit_glue::FormField(string16(),
76                                               ASCIIToUTF16("middleName"),
77                                               string16(),
78                                               ASCIIToUTF16("text"),
79                                               0),
80                        ASCIIToUTF16("name2")));
81  list_.push_back(
82      new AutoFillField(webkit_glue::FormField(string16(),
83                                               ASCIIToUTF16("lastName"),
84                                               string16(),
85                                               ASCIIToUTF16("text"),
86                                               0),
87                        ASCIIToUTF16("name3")));
88  list_.push_back(NULL);
89  iter_ = list_.begin();
90  field_.reset(NameField::Parse(&iter_, false));
91  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
92  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
93  ASSERT_TRUE(
94      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
95  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
96  ASSERT_TRUE(
97      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
98  EXPECT_EQ(NAME_MIDDLE, field_type_map_[ASCIIToUTF16("name2")]);
99  ASSERT_TRUE(
100      field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end());
101  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]);
102}
103
104TEST_F(NameFieldTest, FirstLast) {
105  list_.push_back(
106      new AutoFillField(webkit_glue::FormField(string16(),
107                                               ASCIIToUTF16("first_name"),
108                                               string16(),
109                                               ASCIIToUTF16("text"),
110                                               0),
111                        ASCIIToUTF16("name1")));
112  list_.push_back(
113      new AutoFillField(webkit_glue::FormField(string16(),
114                                               ASCIIToUTF16("last_name"),
115                                               string16(),
116                                               ASCIIToUTF16("text"),
117                                               0),
118                        ASCIIToUTF16("name2")));
119  list_.push_back(NULL);
120  iter_ = list_.begin();
121  field_.reset(NameField::Parse(&iter_, false));
122  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
123  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
124  ASSERT_TRUE(
125      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
126  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
127  ASSERT_TRUE(
128      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
129  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name2")]);
130}
131
132TEST_F(NameFieldTest, FirstLast2) {
133  list_.push_back(
134      new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Name"),
135                                               ASCIIToUTF16("first_name"),
136                                               string16(),
137                                               ASCIIToUTF16("text"),
138                                               0),
139                        ASCIIToUTF16("name1")));
140  list_.push_back(
141      new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Name"),
142                                               ASCIIToUTF16("last_name"),
143                                               string16(),
144                                               ASCIIToUTF16("text"),
145                                               0),
146                        ASCIIToUTF16("name2")));
147  list_.push_back(NULL);
148  iter_ = list_.begin();
149  field_.reset(NameField::Parse(&iter_, false));
150  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
151  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
152  ASSERT_TRUE(
153      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
154  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
155  ASSERT_TRUE(
156      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
157  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name2")]);
158}
159
160TEST_F(NameFieldTest, FirstLastMiddleWithSpaces) {
161  list_.push_back(
162      new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("First  Name"),
163                                               ASCIIToUTF16("first  name"),
164                                               string16(),
165                                               ASCIIToUTF16("text"),
166                                               0),
167                        ASCIIToUTF16("name1")));
168  list_.push_back(
169      new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Middle  Name"),
170                                               ASCIIToUTF16("middle  name"),
171                                               string16(),
172                                               ASCIIToUTF16("text"),
173                                               0),
174                        ASCIIToUTF16("name2")));
175  list_.push_back(
176      new AutoFillField(webkit_glue::FormField(ASCIIToUTF16("Last  Name"),
177                                               ASCIIToUTF16("last  name"),
178                                               string16(),
179                                               ASCIIToUTF16("text"),
180                                               0),
181                        ASCIIToUTF16("name3")));
182  list_.push_back(NULL);
183  iter_ = list_.begin();
184  field_.reset(NameField::Parse(&iter_, false));
185  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
186  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
187  ASSERT_TRUE(
188      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
189  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
190  ASSERT_TRUE(
191      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
192  EXPECT_EQ(NAME_MIDDLE, field_type_map_[ASCIIToUTF16("name2")]);
193  ASSERT_TRUE(
194      field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end());
195  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]);
196}
197
198}  // namespace
199