1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h"
6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_vector.h"
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/utf_string_conversions.h"
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/autofill/autofill_field.h"
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/autofill/name_field.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h"
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "webkit/glue/form_field.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace {
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass NameFieldTest : public testing::Test {
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  NameFieldTest() {}
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected:
20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  ScopedVector<AutofillField> list_;
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<NameField> field_;
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  FieldTypeMap field_type_map_;
23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  std::vector<AutofillField*>::const_iterator iter_;
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(NameFieldTest);
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(NameFieldTest, FirstMiddleLast) {
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(
31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("First Name"),
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("First"),
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               string16(),
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("text"),
35201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
36201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ASCIIToUTF16("name1")));
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(
39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Middle Name"),
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("Middle"),
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               string16(),
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("text"),
43201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
44201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ASCIIToUTF16("name2")));
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(
47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Last Name"),
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("Last"),
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               string16(),
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("text"),
51201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
52201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ASCIIToUTF16("name3")));
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(NULL);
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  iter_ = list_.begin();
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  field_.reset(NameField::Parse(&iter_, false));
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(NAME_MIDDLE, field_type_map_[ASCIIToUTF16("name2")]);
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end());
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]);
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(NameFieldTest, FirstMiddleLast2) {
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(
72dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(string16(),
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("firstName"),
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               string16(),
75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("text"),
76201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
77201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ASCIIToUTF16("name1")));
79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(
80dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(string16(),
81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("middleName"),
82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               string16(),
83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("text"),
84201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
85201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ASCIIToUTF16("name2")));
87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(
88dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(string16(),
89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("lastName"),
90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               string16(),
91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("text"),
92201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
93201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ASCIIToUTF16("name3")));
95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(NULL);
96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  iter_ = list_.begin();
97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  field_.reset(NameField::Parse(&iter_, false));
98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(
101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(
104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(NAME_MIDDLE, field_type_map_[ASCIIToUTF16("name2")]);
106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(
107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end());
108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]);
109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
111c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(NameFieldTest, FirstLast) {
112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(
113dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(string16(),
114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("first_name"),
115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               string16(),
116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("text"),
117201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
118201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ASCIIToUTF16("name1")));
120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(
121dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(string16(),
122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("last_name"),
123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               string16(),
124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("text"),
125201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
126201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ASCIIToUTF16("name2")));
128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(NULL);
129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  iter_ = list_.begin();
130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  field_.reset(NameField::Parse(&iter_, false));
131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(
134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(
137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name2")]);
139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
141c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(NameFieldTest, FirstLast2) {
142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(
143dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Name"),
144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("first_name"),
145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               string16(),
146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("text"),
147201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
148201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ASCIIToUTF16("name1")));
150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(
151dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Name"),
152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("last_name"),
153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               string16(),
154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("text"),
155201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
156201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ASCIIToUTF16("name2")));
158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(NULL);
159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  iter_ = list_.begin();
160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  field_.reset(NameField::Parse(&iter_, false));
161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(
164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(
167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name2")]);
169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
171c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(NameFieldTest, FirstLastMiddleWithSpaces) {
172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(
173dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("First  Name"),
174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("first  name"),
175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               string16(),
176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("text"),
177201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
178201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ASCIIToUTF16("name1")));
180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(
181dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Middle  Name"),
182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("middle  name"),
183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               string16(),
184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("text"),
185201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
186201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ASCIIToUTF16("name2")));
188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(
189dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Last  Name"),
190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("last  name"),
191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               string16(),
192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                               ASCIIToUTF16("text"),
193201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
194201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                        ASCIIToUTF16("name3")));
196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  list_.push_back(NULL);
197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  iter_ = list_.begin();
198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  field_.reset(NameField::Parse(&iter_, false));
199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(
202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(
205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(NAME_MIDDLE, field_type_map_[ASCIIToUTF16("name2")]);
207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(
208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end());
209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]);
210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
2123345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickTEST_F(NameFieldTest, FirstLastEmpty) {
2133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(
214dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Name"),
2153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("first_name"),
2163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               string16(),
2173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("text"),
218201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
219201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
2203345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                        ASCIIToUTF16("name1")));
2213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(
222dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(string16(),
2233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("last_name"),
2243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               string16(),
2253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("text"),
226201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
227201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
2283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                        ASCIIToUTF16("name2")));
2293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(NULL);
2303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  iter_ = list_.begin();
2313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  field_.reset(NameField::Parse(&iter_, false));
2323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
2333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
2343345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
2353345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
2363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
2373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
2383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
2393345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name2")]);
2403345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
2413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
2423345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickTEST_F(NameFieldTest, FirstMiddleLastEmpty) {
2433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(
244dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Name"),
2453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("first_name"),
2463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               string16(),
2473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("text"),
248201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
249201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
2503345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                        ASCIIToUTF16("name1")));
2513345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(
252dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(string16(),
2533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("middle_name"),
2543345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               string16(),
2553345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("text"),
256201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
257201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
2583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                        ASCIIToUTF16("name2")));
2593345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(
260dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(string16(),
2613345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("last_name"),
2623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               string16(),
2633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("text"),
264201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
265201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
2663345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                        ASCIIToUTF16("name3")));
2673345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(NULL);
2683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  iter_ = list_.begin();
2693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  field_.reset(NameField::Parse(&iter_, false));
2703345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
2713345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
2723345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
2733345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
2743345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
2753345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
2763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
2773345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_MIDDLE_INITIAL, field_type_map_[ASCIIToUTF16("name2")]);
2783345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
2793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end());
2803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]);
2813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
2823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
2833345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickTEST_F(NameFieldTest, MiddleInitial) {
2843345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(
285dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("First Name"),
2863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("first_name"),
2873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               string16(),
2883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("text"),
289201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
290201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
2913345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                        ASCIIToUTF16("name1")));
2923345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(
293dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("MI"),
2943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("middle_name"),
2953345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               string16(),
2963345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("text"),
297201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
298201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
2993345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                        ASCIIToUTF16("name2")));
3003345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(
301dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Last Name"),
3023345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("last_name"),
3033345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               string16(),
3043345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("text"),
305201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
306201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
3073345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                        ASCIIToUTF16("name3")));
3083345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(NULL);
3093345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  iter_ = list_.begin();
3103345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  field_.reset(NameField::Parse(&iter_, false));
3113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
3123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
3133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
3143345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
3153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
3163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
3173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
3183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_MIDDLE_INITIAL, field_type_map_[ASCIIToUTF16("name2")]);
3193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
3203345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end());
3213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]);
3223345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
3233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
3243345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickTEST_F(NameFieldTest, MiddleInitialNoLastName) {
3253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(
326dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("First Name"),
3273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("first_name"),
3283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               string16(),
3293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("text"),
330201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
331201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
3323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                        ASCIIToUTF16("name1")));
3333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(
334dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(ASCIIToUTF16("MI"),
3353345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("middle_name"),
3363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               string16(),
3373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("text"),
338201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
339201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
3403345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                        ASCIIToUTF16("name2")));
3413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(NULL);
3423345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  iter_ = list_.begin();
3433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  field_.reset(NameField::Parse(&iter_, false));
3443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_EQ(static_cast<NameField*>(NULL), field_.get());
3453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
3463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
3473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// This case is from the dell.com checkout page.  The middle initial "mi" string
3483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// came at the end following other descriptive text.  http://crbug.com/45123.
3493345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickTEST_F(NameFieldTest, MiddleInitialAtEnd) {
3503345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(
351dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(string16(),
3523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("XXXnameXXXfirst"),
3533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               string16(),
3543345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("text"),
355201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
356201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
3573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                        ASCIIToUTF16("name1")));
3583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(
359dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(string16(),
3603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("XXXnameXXXmi"),
3613345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               string16(),
3623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("text"),
363201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
364201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
3653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                        ASCIIToUTF16("name2")));
3663345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(
367dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      new AutofillField(webkit_glue::FormField(string16(),
3683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("XXXnameXXXlast"),
3693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               string16(),
3703345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                               ASCIIToUTF16("text"),
371201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               0,
372201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                                               false),
3733345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                        ASCIIToUTF16("name3")));
3743345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(NULL);
3753345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  iter_ = list_.begin();
3763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  field_.reset(NameField::Parse(&iter_, false));
3773345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
3783345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
3793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
3803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
3813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
3823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
3833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
3843345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_MIDDLE_INITIAL, field_type_map_[ASCIIToUTF16("name2")]);
3853345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
3863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end());
3873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]);
3883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
3893345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
3903345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickTEST_F(NameFieldTest, ECMLNoName) {
391dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  list_.push_back(new AutofillField(
3923345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      webkit_glue::FormField(ASCIIToUTF16("Company"),
3933345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             ASCIIToUTF16("ecom_shipto_postal_company"),
3943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             string16(),
3953345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             ASCIIToUTF16("text"),
396201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                             0,
397201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                             false),
3983345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      ASCIIToUTF16("field1")));
3993345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(NULL);
4003345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  iter_ = list_.begin();
4013345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  field_.reset(NameField::Parse(&iter_, true));
4023345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_EQ(static_cast<NameField*>(NULL), field_.get());
4033345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
4043345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
4053345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickTEST_F(NameFieldTest, ECMLMiddleInitialNoLastName) {
406dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  list_.push_back(new AutofillField(
4073345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      webkit_glue::FormField(ASCIIToUTF16("First Name"),
4083345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             ASCIIToUTF16("ecom_shipto_postal_name_first"),
4093345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             string16(),
4103345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             ASCIIToUTF16("text"),
411201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                             0,
412201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                             false),
4133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      ASCIIToUTF16("name1")));
414dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  list_.push_back(new AutofillField(
4153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      webkit_glue::FormField(ASCIIToUTF16("Middle"),
4163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             ASCIIToUTF16("ecom_shipto_postal_name_middle"),
4173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             string16(),
4183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             ASCIIToUTF16("text"),
419201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                             0,
420201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                             false),
4213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      ASCIIToUTF16("name2")));
4223345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(NULL);
4233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  iter_ = list_.begin();
4243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  field_.reset(NameField::Parse(&iter_, true));
4253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_EQ(static_cast<NameField*>(NULL), field_.get());
4263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
4273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
4283345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickTEST_F(NameFieldTest, ECMLFirstMiddleLast) {
429dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  list_.push_back(new AutofillField(
4303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      webkit_glue::FormField(string16(),
4313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             ASCIIToUTF16("ecom_shipto_postal_name_first"),
4323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             string16(),
4333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             ASCIIToUTF16("text"),
434201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                             0,
435201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                             false),
4363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      ASCIIToUTF16("name1")));
437dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  list_.push_back(new AutofillField(
4383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      webkit_glue::FormField(string16(),
4393345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             ASCIIToUTF16("ecom_shipto_postal_name_middle"),
4403345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             string16(),
4413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             ASCIIToUTF16("text"),
442201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                             0,
443201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                             false),
4443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      ASCIIToUTF16("name2")));
445dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  list_.push_back(new AutofillField(
4463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      webkit_glue::FormField(string16(),
4473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             ASCIIToUTF16("ecom_shipto_postal_name_last"),
4483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             string16(),
4493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                             ASCIIToUTF16("text"),
450201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                             0,
451201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                             false),
4523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      ASCIIToUTF16("name3")));
4533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  list_.push_back(NULL);
4543345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  iter_ = list_.begin();
4553345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  field_.reset(NameField::Parse(&iter_, true));
4563345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_NE(static_cast<NameField*>(NULL), field_.get());
4573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(field_->GetFieldInfo(&field_type_map_));
4583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
4593345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end());
4603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]);
4613345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
4623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end());
4633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_MIDDLE, field_type_map_[ASCIIToUTF16("name2")]);
4643345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(
4653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end());
4663345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]);
4673345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
4683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
469c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace
470