1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_vector.h" 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h" 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/address_field.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/autofill_field.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/autofill_scanner.h" 127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "components/autofill/core/common/form_field_data.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using base::ASCIIToUTF16; 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace autofill { 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AddressFieldTest : public testing::Test { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddressFieldTest() {} 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScopedVector<AutofillField> list_; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<AddressField> field_; 263240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch ServerFieldTypeMap field_type_map_; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Downcast for tests. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static AddressField* Parse(AutofillScanner* scanner) { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return static_cast<AddressField*>(AddressField::Parse(scanner)); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AddressFieldTest); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AddressFieldTest, Empty) { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillScanner scanner(list_.get()); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_.reset(Parse(&scanner)); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(static_cast<AddressField*>(NULL), field_.get()); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AddressFieldTest, NonParse) { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillScanner scanner(list_.get()); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_.reset(Parse(&scanner)); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(static_cast<AddressField*>(NULL), field_.get()); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AddressFieldTest, ParseOneLineAddress) { 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormFieldData field; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.form_control_type = "text"; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.label = ASCIIToUTF16("Address"); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("address"); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillScanner scanner(list_.get()); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_.reset(Parse(&scanner)); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AddressFieldTest, ParseTwoLineAddress) { 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormFieldData field; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.form_control_type = "text"; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.label = ASCIIToUTF16("Address"); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("address"); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) field.label = base::string16(); 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) field.name = base::string16(); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("addr2"))); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillScanner scanner(list_.get()); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_.reset(Parse(&scanner)); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("addr2")) != field_type_map_.end()); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_LINE2, field_type_map_[ASCIIToUTF16("addr2")]); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AddressFieldTest, ParseThreeLineAddress) { 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormFieldData field; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.form_control_type = "text"; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.label = ASCIIToUTF16("Address Line1"); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("Address1"); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.label = ASCIIToUTF16("Address Line2"); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("Address2"); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("addr2"))); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.label = ASCIIToUTF16("Address Line3"); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("Address3"); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("addr3"))); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillScanner scanner(list_.get()); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_.reset(Parse(&scanner)); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("addr2")) != field_type_map_.end()); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_LINE2, field_type_map_[ASCIIToUTF16("addr2")]); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("addr3")) == field_type_map_.end()); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(AddressFieldTest, ParseStreetAddressFromTextArea) { 1224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) FormFieldData field; 1234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) field.form_control_type = "textarea"; 1244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) field.label = ASCIIToUTF16("Address"); 1264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) field.name = ASCIIToUTF16("address"); 1274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("addr"))); 1284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) AutofillScanner scanner(list_.get()); 1304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) field_.reset(Parse(&scanner)); 1314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); 1324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 1334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE( 1344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) field_type_map_.find(ASCIIToUTF16("addr")) != field_type_map_.end()); 135f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_STREET_ADDRESS, field_type_map_[ASCIIToUTF16("addr")]); 1364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AddressFieldTest, ParseCity) { 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormFieldData field; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.form_control_type = "text"; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.label = ASCIIToUTF16("City"); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("city"); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("city1"))); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillScanner scanner(list_.get()); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_.reset(Parse(&scanner)); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("city1")) != field_type_map_.end()); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_CITY, field_type_map_[ASCIIToUTF16("city1")]); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AddressFieldTest, ParseState) { 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormFieldData field; 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.form_control_type = "text"; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.label = ASCIIToUTF16("State"); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("state"); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("state1"))); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillScanner scanner(list_.get()); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_.reset(Parse(&scanner)); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("state1")) != field_type_map_.end()); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_STATE, field_type_map_[ASCIIToUTF16("state1")]); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AddressFieldTest, ParseZip) { 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormFieldData field; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.form_control_type = "text"; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.label = ASCIIToUTF16("Zip"); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("zip"); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("zip1"))); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillScanner scanner(list_.get()); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_.reset(Parse(&scanner)); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("zip1")) != field_type_map_.end()); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_ZIP, field_type_map_[ASCIIToUTF16("zip1")]); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AddressFieldTest, ParseStateAndZipOneLabel) { 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormFieldData field; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.form_control_type = "text"; 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.label = ASCIIToUTF16("State/Province, Zip/Postal Code"); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("state"); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("state"))); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.label = ASCIIToUTF16("State/Province, Zip/Postal Code"); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("zip"); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("zip"))); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillScanner scanner(list_.get()); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_.reset(Parse(&scanner)); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("state")) != field_type_map_.end()); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_STATE, field_type_map_[ASCIIToUTF16("state")]); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("zip")) != field_type_map_.end()); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_ZIP, field_type_map_[ASCIIToUTF16("zip")]); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AddressFieldTest, ParseCountry) { 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormFieldData field; 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.form_control_type = "text"; 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.label = ASCIIToUTF16("Country"); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("country"); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("country1"))); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillScanner scanner(list_.get()); 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_.reset(Parse(&scanner)); 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("country1")) != field_type_map_.end()); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_COUNTRY, field_type_map_[ASCIIToUTF16("country1")]); 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AddressFieldTest, ParseTwoLineAddressMissingLabel) { 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormFieldData field; 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.form_control_type = "text"; 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.label = ASCIIToUTF16("Address"); 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("address"); 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("addr1"))); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) field.label = base::string16(); 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("bogus"); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("addr2"))); 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillScanner scanner(list_.get()); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_.reset(Parse(&scanner)); 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("addr1")) != field_type_map_.end()); 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_LINE1, field_type_map_[ASCIIToUTF16("addr1")]); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("addr2")) != field_type_map_.end()); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ADDRESS_HOME_LINE2, field_type_map_[ASCIIToUTF16("addr2")]); 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AddressFieldTest, ParseCompany) { 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FormFieldData field; 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.form_control_type = "text"; 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.label = ASCIIToUTF16("Company"); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field.name = ASCIIToUTF16("company"); 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) list_.push_back(new AutofillField(field, ASCIIToUTF16("company1"))); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutofillScanner scanner(list_.get()); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_.reset(Parse(&scanner)); 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NE(static_cast<AddressField*>(NULL), field_.get()); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE( 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) field_type_map_.find(ASCIIToUTF16("company1")) != field_type_map_.end()); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(COMPANY_NAME, field_type_map_[ASCIIToUTF16("company1")]); 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 270c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 271c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace autofill 272