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 <string>
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
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.h"
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/autofill_type.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using base::ASCIIToUTF16;
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace autofill {
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
17ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Test that country data can be properly returned as either a country code or a
18ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// localized country name.
19ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochTEST(AddressTest, GetCountry) {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Address address;
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Make sure that nothing breaks when the country code is missing.
243240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  base::string16 country =
253240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch      address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US");
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_EQ(base::string16(), country);
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
283240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  address.SetInfo(
293240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch      AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("US"), "en-US");
303240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US");
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("United States"), country);
32ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  country = address.GetInfo(
33ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      AutofillType(HTML_TYPE_COUNTRY_NAME, HTML_MODE_NONE), "en-US");
34ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ(ASCIIToUTF16("United States"), country);
35ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  country = address.GetInfo(
36ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      AutofillType(HTML_TYPE_COUNTRY_CODE, HTML_MODE_NONE), "en-US");
37ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ(ASCIIToUTF16("US"), country);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("CA"));
403240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US");
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("Canada"), country);
42ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  country = address.GetInfo(
43ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      AutofillType(HTML_TYPE_COUNTRY_NAME, HTML_MODE_NONE), "en-US");
44ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ(ASCIIToUTF16("Canada"), country);
45ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  country = address.GetInfo(
46ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      AutofillType(HTML_TYPE_COUNTRY_CODE, HTML_MODE_NONE), "en-US");
47ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ(ASCIIToUTF16("CA"), country);
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that we properly detect country codes appropriate for each country.
51ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochTEST(AddressTest, SetCountry) {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Address address;
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Test basic conversion.
563240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  address.SetInfo(
573240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch      AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("United States"),
583240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch      "en-US");
593240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  base::string16 country =
603240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch      address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US");
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("US"), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("United States"), country);
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Test basic synonym detection.
653240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  address.SetInfo(
663240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch      AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("USA"), "en-US");
673240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US");
68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("US"), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("United States"), country);
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Test case-insensitivity.
723240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  address.SetInfo(
733240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch      AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("canADA"), "en-US");
743240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US");
75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("CA"), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("Canada"), country);
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Test country code detection.
793240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  address.SetInfo(
803240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch      AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("JP"), "en-US");
813240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US");
82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("JP"), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("Japan"), country);
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Test that we ignore unknown countries.
863240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  address.SetInfo(
873240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch      AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("Unknown"), "en-US");
883240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US");
89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_EQ(base::string16(), country);
91ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
92ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Test setting the country based on an HTML field type.
93ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  AutofillType html_type_country_code =
94ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      AutofillType(HTML_TYPE_COUNTRY_CODE, HTML_MODE_NONE);
95ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  address.SetInfo(html_type_country_code, ASCIIToUTF16("US"), "en-US");
96ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US");
97ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ(ASCIIToUTF16("US"), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
98ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ(ASCIIToUTF16("United States"), country);
99ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
100ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Test case-insensitivity when setting the country based on an HTML field
101ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // type.
102ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  address.SetInfo(html_type_country_code, ASCIIToUTF16("cA"), "en-US");
103ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US");
104ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ(ASCIIToUTF16("CA"), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
105ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ(ASCIIToUTF16("Canada"), country);
106ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
107ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Test setting the country based on invalid data with an HTML field type.
108ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  address.SetInfo(html_type_country_code, ASCIIToUTF16("unknown"), "en-US");
109ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US");
110ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
111ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ(base::string16(), country);
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that we properly match typed values to stored country data.
115ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochTEST(AddressTest, IsCountry) {
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Address address;
117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US"));
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char* const kValidMatches[] = {
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "United States",
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "USA",
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "US",
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "United states",
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "us"
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (size_t i = 0; i < arraysize(kValidMatches); ++i) {
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SCOPED_TRACE(kValidMatches[i]);
1283240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch    ServerFieldTypeSet matching_types;
1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    address.GetMatchingTypes(ASCIIToUTF16(kValidMatches[i]), "US",
1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                             &matching_types);
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ASSERT_EQ(1U, matching_types.size());
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_EQ(ADDRESS_HOME_COUNTRY, *matching_types.begin());
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char* const kInvalidMatches[] = {
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "United",
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "Garbage"
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (size_t i = 0; i < arraysize(kInvalidMatches); ++i) {
1403240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch    ServerFieldTypeSet matching_types;
1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    address.GetMatchingTypes(ASCIIToUTF16(kInvalidMatches[i]), "US",
1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                             &matching_types);
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_EQ(0U, matching_types.size());
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Make sure that garbage values don't match when the country code is empty.
147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_COUNTRY, base::string16());
148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY));
1493240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  ServerFieldTypeSet matching_types;
1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  address.GetMatchingTypes(ASCIIToUTF16("Garbage"), "US", &matching_types);
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0U, matching_types.size());
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Verifies that Address::GetInfo() correctly combines address lines.
155ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochTEST(AddressTest, GetStreetAddress) {
1568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  const AutofillType type = AutofillType(ADDRESS_HOME_STREET_ADDRESS);
1578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
158ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Address has no address lines.
159ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  Address address;
160ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty());
161ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty());
162f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty());
163ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_EQ(base::string16(), address.GetInfo(type, "en-US"));
164ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
165ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Address has only line 1.
166ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave."));
167ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty());
168ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty());
169f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty());
1708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("123 Example Ave."), address.GetInfo(type, "en-US"));
171ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
172a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Address has only line 2.
173a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE1, base::string16());
174a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt 42."));
175a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty());
176a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty());
177f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty());
178a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("\nApt 42."), address.GetInfo(type, "en-US"));
179a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
180ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  // Address has lines 1 and 2.
181a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave."));
182ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42"));
183ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty());
184ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty());
185f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty());
1868bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n"
1878bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)                         "Apt. 42"),
1888bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)            address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
189f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n"
190f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                         "Apt. 42"),
191ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch            address.GetInfo(type, "en-US"));
192f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
193f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // A wild third line appears.
194f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE3, ASCIIToUTF16("Living room couch"));
195f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("Living room couch"),
196f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)            address.GetRawInfo(ADDRESS_HOME_LINE3));
197f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n"
198f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                         "Apt. 42\n"
199f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                         "Living room couch"),
200f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)            address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
201f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
202f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // The second line vanishes.
203f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE2, base::string16());
204f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty());
205f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty());
206f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty());
207f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n"
208f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                         "\n"
209f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                         "Living room couch"),
210f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)            address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
211ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}
212ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
213a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Verifies that overwriting an address with N lines with one that has fewer
214a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// than N lines does not result in an address with blank lines at the end.
215a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(AddressTest, GetStreetAddressAfterOverwritingLongAddressWithShorterOne) {
216a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Start with an address that has two lines.
217a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  Address address;
218a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave."));
219a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42"));
220a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
221a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Now clear out the second address line.
222a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE2, base::string16());
223a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("123 Example Ave."),
224a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
225a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
226a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Now clear out the first address line as well.
227a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE1, base::string16());
228a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
229a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
230a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
2318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Verifies that Address::SetRawInfo() is able to split address lines correctly.
2328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST(AddressTest, SetRawStreetAddress) {
2338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  const base::string16 empty_street_address;
2348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  const base::string16 short_street_address = ASCIIToUTF16("456 Nowhere Ln.");
2358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  const base::string16 long_street_address =
2368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      ASCIIToUTF16("123 Example Ave.\n"
2378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)                   "Apt. 42\n"
2388bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)                   "(The one with the blue door)");
2398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2408bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  Address address;
2418bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1));
2428bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2));
2438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2448bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, long_street_address);
2458bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("123 Example Ave."),
2468bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)            address.GetRawInfo(ADDRESS_HOME_LINE1));
2478bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("Apt. 42"), address.GetRawInfo(ADDRESS_HOME_LINE2));
248a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_EQ(long_street_address,
249a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)            address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
2508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2518bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // A short address should clear out unused address lines.
2528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, short_street_address);
2538bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("456 Nowhere Ln."),
2548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)            address.GetRawInfo(ADDRESS_HOME_LINE1));
2558bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2));
2568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // An empty address should clear out all address lines.
2588bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, long_street_address);
2598bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, empty_street_address);
2608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1));
2618bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2));
2628bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}
2638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Street addresses should be set properly.
265ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochTEST(AddressTest, SetStreetAddress) {
2668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  const base::string16 empty_street_address;
2678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  const base::string16 multi_line_street_address =
2688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      ASCIIToUTF16("789 Fancy Pkwy.\n"
269f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                   "Unit 3.14\n"
270f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                   "Box 9");
271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  const base::string16 single_line_street_address =
272116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      ASCIIToUTF16("123 Main, Apt 7");
2738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  const AutofillType type = AutofillType(ADDRESS_HOME_STREET_ADDRESS);
2748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
2758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Start with a non-empty address.
276ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  Address address;
277ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave."));
278ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42"));
279f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE3, ASCIIToUTF16("and a half"));
280ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty());
281ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty());
282f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty());
283ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
2848bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Attempting to set a multi-line address should succeed.
2858bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(address.SetInfo(type, multi_line_street_address, "en-US"));
2868bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("789 Fancy Pkwy."),
2878bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)            address.GetRawInfo(ADDRESS_HOME_LINE1));
2888bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("Unit 3.14"), address.GetRawInfo(ADDRESS_HOME_LINE2));
289f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(ASCIIToUTF16("Box 9"), address.GetRawInfo(ADDRESS_HOME_LINE3));
2908bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
291116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Setting a single line street address should clear out subsequent lines.
292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_TRUE(address.SetInfo(type, single_line_street_address, "en-US"));
293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_EQ(single_line_street_address, address.GetRawInfo(ADDRESS_HOME_LINE1));
294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2));
295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE3));
296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Attempting to set an empty address should also succeed, and clear out the
2988bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // previously stored data.
299116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_TRUE(address.SetInfo(type, multi_line_street_address, "en-US"));
3008bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty());
3018bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty());
302f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty());
3038bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_TRUE(address.SetInfo(type, empty_street_address, "en-US"));
3048bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1));
3058bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2));
306f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE3));
307ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}
308ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
309a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Verifies that Address::SetInfio() rejects setting data for
310a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// ADDRESS_HOME_STREET_ADDRESS if the data has any interior blank lines.
311a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(AddressTest, SetStreetAddressRejectsAddressesWithInteriorBlankLines) {
312a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Start with a non-empty address.
313a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  Address address;
314a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave."));
315a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42"));
316a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty());
317a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty());
318a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS).empty());
319a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
320a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Attempting to set an address with interior blank lines should fail, and
321a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // clear out the previously stored address.
322a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(address.SetInfo(AutofillType(ADDRESS_HOME_STREET_ADDRESS),
323a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                               ASCIIToUTF16("Address line 1\n"
324a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                            "\n"
325a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                            "Address line 3"),
326a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                               "en-US"));
327a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1));
328a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2));
329a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
330a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
331a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
332a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Verifies that Address::SetInfio() rejects setting data for
333a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// ADDRESS_HOME_STREET_ADDRESS if the data has any leading blank lines.
334a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(AddressTest, SetStreetAddressRejectsAddressesWithLeadingBlankLines) {
335a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Start with a non-empty address.
336a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  Address address;
337a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave."));
338a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42"));
339a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty());
340a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty());
341a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS).empty());
342a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
343a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Attempting to set an address with leading blank lines should fail, and
344a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // clear out the previously stored address.
345a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(address.SetInfo(AutofillType(ADDRESS_HOME_STREET_ADDRESS),
346a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                               ASCIIToUTF16("\n"
347a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                            "Address line 2"
348a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                            "Address line 3"),
349a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                               "en-US"));
350a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1));
351a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2));
352a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
353a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
354a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
355a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Verifies that Address::SetInfio() rejects setting data for
356a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// ADDRESS_HOME_STREET_ADDRESS if the data has any trailing blank lines.
357a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(AddressTest, SetStreetAddressRejectsAddressesWithTrailingBlankLines) {
358a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Start with a non-empty address.
359a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  Address address;
360a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave."));
361a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42"));
362a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty());
363a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty());
364a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS).empty());
365a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
366a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Attempting to set an address with leading blank lines should fail, and
367a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // clear out the previously stored address.
368a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_FALSE(address.SetInfo(AutofillType(ADDRESS_HOME_STREET_ADDRESS),
369a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                               ASCIIToUTF16("Address line 1"
370a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                            "Address line 2"
371a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                            "\n"),
372a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                               "en-US"));
373a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1));
374a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2));
375a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS));
376a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
377a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
378c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace autofill
379