name_field_unittest.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
13aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev// Copyright 2013 The Chromium Authors. All rights reserved. 23aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev// Use of this source code is governed by a BSD-style license that can be 33aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev// found in the LICENSE file. 43aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 53aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include "base/memory/scoped_ptr.h" 63aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include "base/memory/scoped_vector.h" 73aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include "base/strings/utf_string_conversions.h" 83aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include "components/autofill/core/browser/autofill_field.h" 93aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include "components/autofill/core/browser/autofill_scanner.h" 103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include "components/autofill/core/browser/name_field.h" 113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include "components/autofill/core/common/form_field_data.h" 123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include "testing/gtest/include/gtest/gtest.h" 133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevusing base::ASCIIToUTF16; 153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevnamespace autofill { 173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevclass NameFieldTest : public testing::Test { 193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev public: 203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev NameFieldTest() {} 213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev protected: 233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ScopedVector<AutofillField> list_; 243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev scoped_ptr<NameField> field_; 253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ServerFieldTypeMap field_type_map_; 263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev // Downcast for tests. 283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev static NameField* Parse(AutofillScanner* scanner) { 293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev return static_cast<NameField*>(NameField::Parse(scanner)); 303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev } 313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev private: 333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev DISALLOW_COPY_AND_ASSIGN(NameFieldTest); 343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}; 353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 363aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevTEST_F(NameFieldTest, FirstMiddleLast) { 373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev FormFieldData field; 383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.form_control_type = "text"; 393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("First Name"); 413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("First"); 423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); 433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("Middle Name"); 453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("Middle"); 463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name2"))); 473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("Last Name"); 493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("Last"); 503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name3"))); 513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev AutofillScanner scanner(list_.get()); 533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_.reset(Parse(&scanner)); 543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_NE(static_cast<NameField*>(NULL), field_.get()); 553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); 583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]); 593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end()); 613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_MIDDLE, field_type_map_[ASCIIToUTF16("name2")]); 623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end()); 643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]); 653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev} 663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 673aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevTEST_F(NameFieldTest, FirstMiddleLast2) { 683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev FormFieldData field; 693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.form_control_type = "text"; 703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = base::string16(); 723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("firstName"); 733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); 743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = base::string16(); 763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("middleName"); 773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name2"))); 783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = base::string16(); 803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("lastName"); 813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name3"))); 823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev AutofillScanner scanner(list_.get()); 843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_.reset(Parse(&scanner)); 853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_NE(static_cast<NameField*>(NULL), field_.get()); 863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); 893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]); 903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end()); 923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_MIDDLE, field_type_map_[ASCIIToUTF16("name2")]); 933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end()); 953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]); 963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev} 973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 983aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevTEST_F(NameFieldTest, FirstLast) { 993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev FormFieldData field; 1003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.form_control_type = "text"; 1013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = base::string16(); 1033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("first_name"); 1043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); 1053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = base::string16(); 1073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("last_name"); 1083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name2"))); 1093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev AutofillScanner scanner(list_.get()); 1113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_.reset(Parse(&scanner)); 1123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_NE(static_cast<NameField*>(NULL), field_.get()); 1133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 1143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 1153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); 1163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]); 1173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 1183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end()); 1193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name2")]); 1203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev} 1213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1223aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevTEST_F(NameFieldTest, FirstLast2) { 1233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev FormFieldData field; 1243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.form_control_type = "text"; 1253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("Name"); 1273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("first_name"); 1283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); 1293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("Name"); 1313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("last_name"); 1323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name2"))); 1333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev AutofillScanner scanner(list_.get()); 1353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_.reset(Parse(&scanner)); 1363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_NE(static_cast<NameField*>(NULL), field_.get()); 1373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 1383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 1393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); 1403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]); 1413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 1423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end()); 1433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name2")]); 1443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev} 1453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1463aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevTEST_F(NameFieldTest, FirstLastMiddleWithSpaces) { 1473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev FormFieldData field; 1483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.form_control_type = "text"; 1493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("First Name"); 1513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("first_name"); 1523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); 1533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("Middle Name"); 1553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("middle_name"); 1563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name2"))); 1573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("Last Name"); 1593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("last_name"); 1603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name3"))); 1613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev AutofillScanner scanner(list_.get()); 1633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_.reset(Parse(&scanner)); 1643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_NE(static_cast<NameField*>(NULL), field_.get()); 1653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 1663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 1673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); 1683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]); 1693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 1703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end()); 1713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_MIDDLE, field_type_map_[ASCIIToUTF16("name2")]); 1723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 1733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end()); 1743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]); 1753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev} 1763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1773aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevTEST_F(NameFieldTest, FirstLastEmpty) { 1783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev FormFieldData field; 1793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.form_control_type = "text"; 1803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("Name"); 1823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("first_name"); 1833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); 1843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = base::string16(); 1863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("last_name"); 1873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name2"))); 1883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev AutofillScanner scanner(list_.get()); 1903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_.reset(Parse(&scanner)); 1913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_NE(static_cast<NameField*>(NULL), field_.get()); 1923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 1933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 1943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); 1953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]); 1963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 1973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end()); 1983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name2")]); 1993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev} 2003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2013aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevTEST_F(NameFieldTest, FirstMiddleLastEmpty) { 2023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev FormFieldData field; 2033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.form_control_type = "text"; 2043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("Name"); 2063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("first_name"); 2073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); 2083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = base::string16(); 2103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("middle_name"); 2113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name2"))); 2123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = base::string16(); 2143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("last_name"); 2153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name3"))); 2163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev AutofillScanner scanner(list_.get()); 2183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_.reset(Parse(&scanner)); 2193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_NE(static_cast<NameField*>(NULL), field_.get()); 2203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 2213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 2223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); 2233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]); 2243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 2253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end()); 2263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_MIDDLE_INITIAL, field_type_map_[ASCIIToUTF16("name2")]); 2273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 2283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end()); 2293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]); 2303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev} 2313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2323aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevTEST_F(NameFieldTest, MiddleInitial) { 2333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev FormFieldData field; 2343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.form_control_type = "text"; 2353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("First Name"); 2373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("first_name"); 2383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); 2393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("MI"); 2413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("middle_name"); 2423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name2"))); 2433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("Last Name"); 2453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("last_name"); 2463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name3"))); 2473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev AutofillScanner scanner(list_.get()); 2493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_.reset(Parse(&scanner)); 2503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_NE(static_cast<NameField*>(NULL), field_.get()); 2513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 2523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 2533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); 2543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]); 2553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 2563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end()); 2573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_MIDDLE_INITIAL, field_type_map_[ASCIIToUTF16("name2")]); 2583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 2593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end()); 2603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]); 2613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev} 2623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2633aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevTEST_F(NameFieldTest, MiddleInitialNoLastName) { 2643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev FormFieldData field; 2653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.form_control_type = "text"; 2663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("First Name"); 2683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("first_name"); 2693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); 2703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = ASCIIToUTF16("MI"); 2723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("middle_name"); 2733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name2"))); 2743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev AutofillScanner scanner(list_.get()); 2763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_.reset(Parse(&scanner)); 2773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_EQ(static_cast<NameField*>(NULL), field_.get()); 2783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev} 2793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev// This case is from the dell.com checkout page. The middle initial "mi" string 2813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev// came at the end following other descriptive text. http://crbug.com/45123. 2823aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevTEST_F(NameFieldTest, MiddleInitialAtEnd) { 2833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev FormFieldData field; 2843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.form_control_type = "text"; 2853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = base::string16(); 2873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("XXXnameXXXfirst"); 2883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); 2893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = base::string16(); 2913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("XXXnameXXXmi"); 2923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name2"))); 2933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.label = base::string16(); 2953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field.name = ASCIIToUTF16("XXXnameXXXlast"); 2963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev list_.push_back(new AutofillField(field, ASCIIToUTF16("name3"))); 2973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 2983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev AutofillScanner scanner(list_.get()); 2993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_.reset(Parse(&scanner)); 3003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_NE(static_cast<NameField*>(NULL), field_.get()); 3013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 3023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 3033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name1")) != field_type_map_.end()); 3043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_FIRST, field_type_map_[ASCIIToUTF16("name1")]); 3053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 3063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name2")) != field_type_map_.end()); 3073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_MIDDLE_INITIAL, field_type_map_[ASCIIToUTF16("name2")]); 3083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ASSERT_TRUE( 3093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev field_type_map_.find(ASCIIToUTF16("name3")) != field_type_map_.end()); 3103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev EXPECT_EQ(NAME_LAST, field_type_map_[ASCIIToUTF16("name3")]); 3113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev} 3123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 3133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev} // namespace autofill 3143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev