Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/strings/string16.h" | 7 #include "base/strings/string16.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "components/autofill/core/browser/address.h" | 9 #include "components/autofill/core/browser/address.h" |
| 10 #include "components/autofill/core/browser/autofill_type.h" | 10 #include "components/autofill/core/browser/autofill_type.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 152 } | 152 } |
| 153 | 153 |
| 154 // Verifies that Address::GetInfo() correctly combines address lines. | 154 // Verifies that Address::GetInfo() correctly combines address lines. |
| 155 TEST(AddressTest, GetStreetAddress) { | 155 TEST(AddressTest, GetStreetAddress) { |
| 156 const AutofillType type = AutofillType(ADDRESS_HOME_STREET_ADDRESS); | 156 const AutofillType type = AutofillType(ADDRESS_HOME_STREET_ADDRESS); |
| 157 | 157 |
| 158 // Address has no address lines. | 158 // Address has no address lines. |
| 159 Address address; | 159 Address address; |
| 160 EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); | 160 EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); |
| 161 EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); | 161 EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); |
| 162 EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); | |
| 162 EXPECT_EQ(base::string16(), address.GetInfo(type, "en-US")); | 163 EXPECT_EQ(base::string16(), address.GetInfo(type, "en-US")); |
| 163 | 164 |
| 164 // Address has only line 1. | 165 // Address has only line 1. |
| 165 address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); | 166 address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); |
| 166 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); | 167 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); |
| 167 EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); | 168 EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); |
| 169 EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); | |
| 168 EXPECT_EQ(ASCIIToUTF16("123 Example Ave."), address.GetInfo(type, "en-US")); | 170 EXPECT_EQ(ASCIIToUTF16("123 Example Ave."), address.GetInfo(type, "en-US")); |
| 169 | 171 |
| 170 // Address has only line 2. | 172 // Address has only line 2. |
| 171 address.SetRawInfo(ADDRESS_HOME_LINE1, base::string16()); | 173 address.SetRawInfo(ADDRESS_HOME_LINE1, base::string16()); |
| 172 address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt 42.")); | 174 address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt 42.")); |
| 173 EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); | 175 EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); |
| 174 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); | 176 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); |
| 177 EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); | |
| 175 EXPECT_EQ(ASCIIToUTF16("\nApt 42."), address.GetInfo(type, "en-US")); | 178 EXPECT_EQ(ASCIIToUTF16("\nApt 42."), address.GetInfo(type, "en-US")); |
| 176 | 179 |
| 177 // Address has lines 1 and 2. | 180 // Address has lines 1 and 2. |
| 178 address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); | 181 address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); |
| 179 address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); | 182 address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); |
| 180 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); | 183 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); |
| 181 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); | 184 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); |
| 185 EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); | |
| 182 EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n" | 186 EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n" |
| 183 "Apt. 42"), | 187 "Apt. 42"), |
| 184 address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); | 188 address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); |
| 185 EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n" | 189 EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n" |
| 186 "Apt. 42"), | 190 "Apt. 42"), |
| 187 address.GetInfo(type, "en-US")); | 191 address.GetInfo(type, "en-US")); |
| 192 | |
| 193 // A wild third line appears. | |
| 194 address.SetRawInfo(ADDRESS_HOME_LINE3, ASCIIToUTF16("Living room couch")); | |
| 195 EXPECT_EQ(ASCIIToUTF16("Living room couch"), | |
| 196 address.GetRawInfo(ADDRESS_HOME_LINE3)); | |
| 197 EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n" | |
| 198 "Apt. 42\n" | |
| 199 "Living room couch"), | |
| 200 address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); | |
| 201 | |
| 202 // The second line vanishes. | |
| 203 address.SetRawInfo(ADDRESS_HOME_LINE2, base::string16()); | |
| 204 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); | |
| 205 EXPECT_TRUE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); | |
| 206 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); | |
| 207 EXPECT_EQ(ASCIIToUTF16("123 Example Ave.\n" | |
| 208 "\n" | |
| 209 "Living room couch"), | |
| 210 address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); | |
| 211 | |
|
Ilya Sherman
2014/06/12 22:37:54
nit: Spurious newline.
Evan Stade
2014/06/13 01:49:43
baleted
| |
| 188 } | 212 } |
| 189 | 213 |
| 190 // Verifies that overwriting an address with N lines with one that has fewer | 214 // Verifies that overwriting an address with N lines with one that has fewer |
| 191 // than N lines does not result in an address with blank lines at the end. | 215 // than N lines does not result in an address with blank lines at the end. |
| 192 TEST(AddressTest, GetStreetAddressAfterOverwritingLongAddressWithShorterOne) { | 216 TEST(AddressTest, GetStreetAddressAfterOverwritingLongAddressWithShorterOne) { |
| 193 // Start with an address that has two lines. | 217 // Start with an address that has two lines. |
| 194 Address address; | 218 Address address; |
| 195 address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); | 219 address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); |
| 196 address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); | 220 address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); |
| 197 | 221 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 241 // Verifies that Address::SetInfo() rejects setting data for | 265 // Verifies that Address::SetInfo() rejects setting data for |
| 242 // ADDRESS_HOME_STREET_ADDRESS without newlines, as there is no good general way | 266 // ADDRESS_HOME_STREET_ADDRESS without newlines, as there is no good general way |
| 243 // to parse that data into the consituent address lines. Addresses without | 267 // to parse that data into the consituent address lines. Addresses without |
| 244 // newlines should be set properly. | 268 // newlines should be set properly. |
| 245 TEST(AddressTest, SetStreetAddress) { | 269 TEST(AddressTest, SetStreetAddress) { |
| 246 const base::string16 empty_street_address; | 270 const base::string16 empty_street_address; |
| 247 const base::string16 one_line_street_address = | 271 const base::string16 one_line_street_address = |
| 248 ASCIIToUTF16("456 New St., Apt. 17"); | 272 ASCIIToUTF16("456 New St., Apt. 17"); |
| 249 const base::string16 multi_line_street_address = | 273 const base::string16 multi_line_street_address = |
| 250 ASCIIToUTF16("789 Fancy Pkwy.\n" | 274 ASCIIToUTF16("789 Fancy Pkwy.\n" |
| 251 "Unit 3.14"); | 275 "Unit 3.14\n" |
| 276 "Box 9"); | |
| 252 const AutofillType type = AutofillType(ADDRESS_HOME_STREET_ADDRESS); | 277 const AutofillType type = AutofillType(ADDRESS_HOME_STREET_ADDRESS); |
| 253 | 278 |
| 254 // Start with a non-empty address. | 279 // Start with a non-empty address. |
| 255 Address address; | 280 Address address; |
| 256 address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); | 281 address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); |
| 257 address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); | 282 address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); |
| 283 address.SetRawInfo(ADDRESS_HOME_LINE3, ASCIIToUTF16("and a half")); | |
| 258 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); | 284 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); |
| 259 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); | 285 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); |
| 286 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); | |
| 260 | 287 |
| 261 // Attempting to set a one-line address should fail, as the single line might | 288 // Attempting to set a one-line address should fail, as the single line might |
| 262 // actually represent multiple logical lines, combined into one due to the | 289 // actually represent multiple logical lines, combined into one due to the |
| 263 // user having to work around constraints imposed by the website. | 290 // user having to work around constraints imposed by the website. |
| 264 EXPECT_FALSE(address.SetInfo(type, one_line_street_address, "en-US")); | 291 EXPECT_FALSE(address.SetInfo(type, one_line_street_address, "en-US")); |
| 265 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1)); | 292 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1)); |
| 266 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); | 293 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); |
| 294 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE3)); | |
| 267 | 295 |
| 268 // Attempting to set a multi-line address should succeed. | 296 // Attempting to set a multi-line address should succeed. |
| 269 EXPECT_TRUE(address.SetInfo(type, multi_line_street_address, "en-US")); | 297 EXPECT_TRUE(address.SetInfo(type, multi_line_street_address, "en-US")); |
| 270 EXPECT_EQ(ASCIIToUTF16("789 Fancy Pkwy."), | 298 EXPECT_EQ(ASCIIToUTF16("789 Fancy Pkwy."), |
| 271 address.GetRawInfo(ADDRESS_HOME_LINE1)); | 299 address.GetRawInfo(ADDRESS_HOME_LINE1)); |
| 272 EXPECT_EQ(ASCIIToUTF16("Unit 3.14"), address.GetRawInfo(ADDRESS_HOME_LINE2)); | 300 EXPECT_EQ(ASCIIToUTF16("Unit 3.14"), address.GetRawInfo(ADDRESS_HOME_LINE2)); |
| 301 EXPECT_EQ(ASCIIToUTF16("Box 9"), address.GetRawInfo(ADDRESS_HOME_LINE3)); | |
| 273 | 302 |
| 274 // Attempting to set an empty address should also succeed, and clear out the | 303 // Attempting to set an empty address should also succeed, and clear out the |
| 275 // previously stored data. | 304 // previously stored data. |
| 276 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); | 305 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); |
| 277 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); | 306 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE2).empty()); |
| 307 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE3).empty()); | |
| 278 EXPECT_TRUE(address.SetInfo(type, empty_street_address, "en-US")); | 308 EXPECT_TRUE(address.SetInfo(type, empty_street_address, "en-US")); |
| 279 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1)); | 309 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1)); |
| 280 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); | 310 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); |
| 311 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE3)); | |
| 281 } | 312 } |
| 282 | 313 |
| 283 // Verifies that Address::SetInfio() rejects setting data for | 314 // Verifies that Address::SetInfio() rejects setting data for |
| 284 // ADDRESS_HOME_STREET_ADDRESS if the data has any interior blank lines. | 315 // ADDRESS_HOME_STREET_ADDRESS if the data has any interior blank lines. |
| 285 TEST(AddressTest, SetStreetAddressRejectsAddressesWithInteriorBlankLines) { | 316 TEST(AddressTest, SetStreetAddressRejectsAddressesWithInteriorBlankLines) { |
| 286 // Start with a non-empty address. | 317 // Start with a non-empty address. |
| 287 Address address; | 318 Address address; |
| 288 address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); | 319 address.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Example Ave.")); |
| 289 address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); | 320 address.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("Apt. 42")); |
| 290 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); | 321 EXPECT_FALSE(address.GetRawInfo(ADDRESS_HOME_LINE1).empty()); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 343 ASCIIToUTF16("Address line 1" | 374 ASCIIToUTF16("Address line 1" |
| 344 "Address line 2" | 375 "Address line 2" |
| 345 "\n"), | 376 "\n"), |
| 346 "en-US")); | 377 "en-US")); |
| 347 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1)); | 378 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1)); |
| 348 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); | 379 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE2)); |
| 349 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); | 380 EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); |
| 350 } | 381 } |
| 351 | 382 |
| 352 } // namespace autofill | 383 } // namespace autofill |
| OLD | NEW |