| OLD | NEW |
| 1 // Copyright (C) 2014 Google Inc. | 1 // Copyright (C) 2014 Google Inc. |
| 2 // | 2 // |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
| 5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
| 6 // | 6 // |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 // | 8 // |
| 9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 virtual ~AddressValidatorTest() {} | 51 virtual ~AddressValidatorTest() {} |
| 52 | 52 |
| 53 protected: | 53 protected: |
| 54 scoped_ptr<AddressValidator> validator_; | 54 scoped_ptr<AddressValidator> validator_; |
| 55 | 55 |
| 56 private: | 56 private: |
| 57 // LoadRulesDelegate implementation. | 57 // LoadRulesDelegate implementation. |
| 58 virtual void OnAddressValidationRulesLoaded(const std::string& country_code, | 58 virtual void OnAddressValidationRulesLoaded(const std::string& country_code, |
| 59 bool success) { | 59 bool success) { |
| 60 AddressData address_data; | 60 AddressData address_data; |
| 61 address_data.country_code = country_code; | 61 address_data.region_code = country_code; |
| 62 AddressValidator::Status status = | 62 AddressValidator::Status status = |
| 63 validator_->ValidateAddress(address_data, AddressProblemFilter(), NULL); | 63 validator_->ValidateAddress(address_data, AddressProblemFilter(), NULL); |
| 64 EXPECT_EQ(success, status == AddressValidator::SUCCESS); | 64 EXPECT_EQ(success, status == AddressValidator::SUCCESS); |
| 65 } | 65 } |
| 66 }; | 66 }; |
| 67 | 67 |
| 68 TEST_F(AddressValidatorTest, RegionHasRules) { | 68 TEST_F(AddressValidatorTest, RegionHasRules) { |
| 69 const std::vector<std::string>& region_codes = | 69 const std::vector<std::string>& region_codes = |
| 70 RegionDataConstants::GetRegionCodes(); | 70 RegionDataConstants::GetRegionCodes(); |
| 71 AddressData address; | 71 AddressData address; |
| 72 for (size_t i = 0; i < region_codes.size(); ++i) { | 72 for (size_t i = 0; i < region_codes.size(); ++i) { |
| 73 SCOPED_TRACE("For region: " + region_codes[i]); | 73 SCOPED_TRACE("For region: " + region_codes[i]); |
| 74 validator_->LoadRules(region_codes[i]); | 74 validator_->LoadRules(region_codes[i]); |
| 75 address.country_code = region_codes[i]; | 75 address.region_code = region_codes[i]; |
| 76 EXPECT_EQ( | 76 EXPECT_EQ( |
| 77 AddressValidator::SUCCESS, | 77 AddressValidator::SUCCESS, |
| 78 validator_->ValidateAddress(address, AddressProblemFilter(), NULL)); | 78 validator_->ValidateAddress(address, AddressProblemFilter(), NULL)); |
| 79 } | 79 } |
| 80 } | 80 } |
| 81 | 81 |
| 82 TEST_F(AddressValidatorTest, EmptyAddressNoFatalFailure) { | 82 TEST_F(AddressValidatorTest, EmptyAddressNoFatalFailure) { |
| 83 AddressData address; | 83 AddressData address; |
| 84 address.country_code = "US"; | 84 address.region_code = "US"; |
| 85 | 85 |
| 86 AddressProblems problems; | 86 AddressProblems problems; |
| 87 EXPECT_EQ( | 87 EXPECT_EQ( |
| 88 AddressValidator::SUCCESS, | 88 AddressValidator::SUCCESS, |
| 89 validator_->ValidateAddress(address, AddressProblemFilter(), &problems)); | 89 validator_->ValidateAddress(address, AddressProblemFilter(), &problems)); |
| 90 } | 90 } |
| 91 | 91 |
| 92 TEST_F(AddressValidatorTest, USZipCode) { | 92 TEST_F(AddressValidatorTest, USZipCode) { |
| 93 AddressData address; | 93 AddressData address; |
| 94 address.address_lines.push_back("340 Main St."); | 94 address.address_line.push_back("340 Main St."); |
| 95 address.locality = "Venice"; | 95 address.locality = "Venice"; |
| 96 address.administrative_area = "CA"; | 96 address.administrative_area = "CA"; |
| 97 address.country_code = "US"; | 97 address.region_code = "US"; |
| 98 | 98 |
| 99 // Valid Californian zip code. | 99 // Valid Californian zip code. |
| 100 address.postal_code = "90291"; | 100 address.postal_code = "90291"; |
| 101 AddressProblems problems; | 101 AddressProblems problems; |
| 102 EXPECT_EQ( | 102 EXPECT_EQ( |
| 103 AddressValidator::SUCCESS, | 103 AddressValidator::SUCCESS, |
| 104 validator_->ValidateAddress(address, AddressProblemFilter(), &problems)); | 104 validator_->ValidateAddress(address, AddressProblemFilter(), &problems)); |
| 105 EXPECT_TRUE(problems.empty()); | 105 EXPECT_TRUE(problems.empty()); |
| 106 | 106 |
| 107 problems.clear(); | 107 problems.clear(); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 validator_->ValidateAddress(address, AddressProblemFilter(), &problems)); | 155 validator_->ValidateAddress(address, AddressProblemFilter(), &problems)); |
| 156 EXPECT_EQ(1U, problems.size()); | 156 EXPECT_EQ(1U, problems.size()); |
| 157 EXPECT_EQ(problems[0].field, POSTAL_CODE); | 157 EXPECT_EQ(problems[0].field, POSTAL_CODE); |
| 158 EXPECT_EQ(problems[0].type, AddressProblem::UNRECOGNIZED_FORMAT); | 158 EXPECT_EQ(problems[0].type, AddressProblem::UNRECOGNIZED_FORMAT); |
| 159 } | 159 } |
| 160 | 160 |
| 161 TEST_F(AddressValidatorTest, BasicValidation) { | 161 TEST_F(AddressValidatorTest, BasicValidation) { |
| 162 // US rules should always be available, even though this load call fails. | 162 // US rules should always be available, even though this load call fails. |
| 163 validator_->LoadRules("US"); | 163 validator_->LoadRules("US"); |
| 164 AddressData address; | 164 AddressData address; |
| 165 address.country_code = "US"; | 165 address.region_code = "US"; |
| 166 address.language_code = "en"; | 166 address.language_code = "en"; |
| 167 address.administrative_area = "TX"; | 167 address.administrative_area = "TX"; |
| 168 address.locality = "Paris"; | 168 address.locality = "Paris"; |
| 169 address.postal_code = "75461"; | 169 address.postal_code = "75461"; |
| 170 address.address_lines.push_back("123 Main St"); | 170 address.address_line.push_back("123 Main St"); |
| 171 AddressProblems problems; | 171 AddressProblems problems; |
| 172 EXPECT_EQ( | 172 EXPECT_EQ( |
| 173 AddressValidator::SUCCESS, | 173 AddressValidator::SUCCESS, |
| 174 validator_->ValidateAddress(address, AddressProblemFilter(), &problems)); | 174 validator_->ValidateAddress(address, AddressProblemFilter(), &problems)); |
| 175 EXPECT_TRUE(problems.empty()); | 175 EXPECT_TRUE(problems.empty()); |
| 176 | 176 |
| 177 // The display name works as well as the key. | 177 // The display name works as well as the key. |
| 178 address.administrative_area = "Texas"; | 178 address.administrative_area = "Texas"; |
| 179 problems.clear(); | 179 problems.clear(); |
| 180 EXPECT_EQ( | 180 EXPECT_EQ( |
| (...skipping 23 matching lines...) Expand all Loading... |
| 204 EXPECT_EQ( | 204 EXPECT_EQ( |
| 205 AddressValidator::SUCCESS, | 205 AddressValidator::SUCCESS, |
| 206 validator_->ValidateAddress(address, AddressProblemFilter(), &problems)); | 206 validator_->ValidateAddress(address, AddressProblemFilter(), &problems)); |
| 207 EXPECT_TRUE(problems.empty()); | 207 EXPECT_TRUE(problems.empty()); |
| 208 } | 208 } |
| 209 | 209 |
| 210 TEST_F(AddressValidatorTest, BasicValidationFailure) { | 210 TEST_F(AddressValidatorTest, BasicValidationFailure) { |
| 211 // US rules should always be available, even though this load call fails. | 211 // US rules should always be available, even though this load call fails. |
| 212 validator_->LoadRules("US"); | 212 validator_->LoadRules("US"); |
| 213 AddressData address; | 213 AddressData address; |
| 214 address.country_code = "US"; | 214 address.region_code = "US"; |
| 215 address.language_code = "en"; | 215 address.language_code = "en"; |
| 216 address.administrative_area = "XT"; | 216 address.administrative_area = "XT"; |
| 217 address.locality = "Paris"; | 217 address.locality = "Paris"; |
| 218 address.postal_code = "75461"; | 218 address.postal_code = "75461"; |
| 219 address.address_lines.push_back("123 Main St"); | 219 address.address_line.push_back("123 Main St"); |
| 220 AddressProblems problems; | 220 AddressProblems problems; |
| 221 EXPECT_EQ( | 221 EXPECT_EQ( |
| 222 AddressValidator::SUCCESS, | 222 AddressValidator::SUCCESS, |
| 223 validator_->ValidateAddress(address, AddressProblemFilter(), &problems)); | 223 validator_->ValidateAddress(address, AddressProblemFilter(), &problems)); |
| 224 | 224 |
| 225 ASSERT_EQ(1U, problems.size()); | 225 ASSERT_EQ(1U, problems.size()); |
| 226 EXPECT_EQ(AddressProblem::UNKNOWN_VALUE, problems[0].type); | 226 EXPECT_EQ(AddressProblem::UNKNOWN_VALUE, problems[0].type); |
| 227 EXPECT_EQ(ADMIN_AREA, problems[0].field); | 227 EXPECT_EQ(ADMIN_AREA, problems[0].field); |
| 228 } | 228 } |
| 229 | 229 |
| 230 TEST_F(AddressValidatorTest, NoNullSuggestionsCrash) { | 230 TEST_F(AddressValidatorTest, NoNullSuggestionsCrash) { |
| 231 AddressData address; | 231 AddressData address; |
| 232 address.country_code = "US"; | 232 address.region_code = "US"; |
| 233 EXPECT_EQ(AddressValidator::SUCCESS, | 233 EXPECT_EQ(AddressValidator::SUCCESS, |
| 234 validator_->GetSuggestions(address, COUNTRY, 1, NULL)); | 234 validator_->GetSuggestions(address, COUNTRY, 1, NULL)); |
| 235 } | 235 } |
| 236 | 236 |
| 237 TEST_F(AddressValidatorTest, SuggestAdminAreaForPostalCode) { | 237 TEST_F(AddressValidatorTest, SuggestAdminAreaForPostalCode) { |
| 238 AddressData address; | 238 AddressData address; |
| 239 address.country_code = "US"; | 239 address.region_code = "US"; |
| 240 address.postal_code = "90291"; | 240 address.postal_code = "90291"; |
| 241 | 241 |
| 242 std::vector<AddressData> suggestions; | 242 std::vector<AddressData> suggestions; |
| 243 EXPECT_EQ(AddressValidator::SUCCESS, | 243 EXPECT_EQ(AddressValidator::SUCCESS, |
| 244 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); | 244 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| 245 ASSERT_EQ(1U, suggestions.size()); | 245 ASSERT_EQ(1U, suggestions.size()); |
| 246 EXPECT_EQ("CA", suggestions[0].administrative_area); | 246 EXPECT_EQ("CA", suggestions[0].administrative_area); |
| 247 EXPECT_EQ("90291", suggestions[0].postal_code); | 247 EXPECT_EQ("90291", suggestions[0].postal_code); |
| 248 } | 248 } |
| 249 | 249 |
| 250 TEST_F(AddressValidatorTest, SuggestLocalityForPostalCodeWithAdminArea) { | 250 TEST_F(AddressValidatorTest, SuggestLocalityForPostalCodeWithAdminArea) { |
| 251 validator_->LoadRules("TW"); | 251 validator_->LoadRules("TW"); |
| 252 AddressData address; | 252 AddressData address; |
| 253 address.country_code = "TW"; | 253 address.region_code = "TW"; |
| 254 address.postal_code = "515"; | 254 address.postal_code = "515"; |
| 255 address.administrative_area = "Changhua"; | 255 address.administrative_area = "Changhua"; |
| 256 | 256 |
| 257 std::vector<AddressData> suggestions; | 257 std::vector<AddressData> suggestions; |
| 258 EXPECT_EQ(AddressValidator::SUCCESS, | 258 EXPECT_EQ(AddressValidator::SUCCESS, |
| 259 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); | 259 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| 260 ASSERT_EQ(1U, suggestions.size()); | 260 ASSERT_EQ(1U, suggestions.size()); |
| 261 EXPECT_EQ("Dacun Township", suggestions[0].locality); | 261 EXPECT_EQ("Dacun Township", suggestions[0].locality); |
| 262 EXPECT_EQ("Changhua County", suggestions[0].administrative_area); | 262 EXPECT_EQ("Changhua County", suggestions[0].administrative_area); |
| 263 EXPECT_EQ("515", suggestions[0].postal_code); | 263 EXPECT_EQ("515", suggestions[0].postal_code); |
| 264 } | 264 } |
| 265 | 265 |
| 266 TEST_F(AddressValidatorTest, SuggestAdminAreaForPostalCodeWithLocality) { | 266 TEST_F(AddressValidatorTest, SuggestAdminAreaForPostalCodeWithLocality) { |
| 267 validator_->LoadRules("TW"); | 267 validator_->LoadRules("TW"); |
| 268 AddressData address; | 268 AddressData address; |
| 269 address.country_code = "TW"; | 269 address.region_code = "TW"; |
| 270 address.postal_code = "515"; | 270 address.postal_code = "515"; |
| 271 address.locality = "Dacun"; | 271 address.locality = "Dacun"; |
| 272 | 272 |
| 273 std::vector<AddressData> suggestions; | 273 std::vector<AddressData> suggestions; |
| 274 EXPECT_EQ(AddressValidator::SUCCESS, | 274 EXPECT_EQ(AddressValidator::SUCCESS, |
| 275 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); | 275 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| 276 ASSERT_EQ(1U, suggestions.size()); | 276 ASSERT_EQ(1U, suggestions.size()); |
| 277 EXPECT_EQ("Dacun Township", suggestions[0].locality); | 277 EXPECT_EQ("Dacun Township", suggestions[0].locality); |
| 278 EXPECT_EQ("Changhua County", suggestions[0].administrative_area); | 278 EXPECT_EQ("Changhua County", suggestions[0].administrative_area); |
| 279 EXPECT_EQ("515", suggestions[0].postal_code); | 279 EXPECT_EQ("515", suggestions[0].postal_code); |
| 280 } | 280 } |
| 281 | 281 |
| 282 TEST_F(AddressValidatorTest, NoSuggestForPostalCodeWithWrongAdminArea) { | 282 TEST_F(AddressValidatorTest, NoSuggestForPostalCodeWithWrongAdminArea) { |
| 283 AddressData address; | 283 AddressData address; |
| 284 address.country_code = "US"; | 284 address.region_code = "US"; |
| 285 address.postal_code = "90066"; | 285 address.postal_code = "90066"; |
| 286 address.postal_code = "TX"; | 286 address.postal_code = "TX"; |
| 287 | 287 |
| 288 std::vector<AddressData> suggestions; | 288 std::vector<AddressData> suggestions; |
| 289 EXPECT_EQ(AddressValidator::SUCCESS, | 289 EXPECT_EQ(AddressValidator::SUCCESS, |
| 290 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); | 290 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| 291 EXPECT_TRUE(suggestions.empty()); | 291 EXPECT_TRUE(suggestions.empty()); |
| 292 } | 292 } |
| 293 | 293 |
| 294 TEST_F(AddressValidatorTest, SuggestForLocality) { | 294 TEST_F(AddressValidatorTest, SuggestForLocality) { |
| 295 validator_->LoadRules("CN"); | 295 validator_->LoadRules("CN"); |
| 296 AddressData address; | 296 AddressData address; |
| 297 address.country_code = "CN"; | 297 address.region_code = "CN"; |
| 298 address.locality = "Anqin"; | 298 address.locality = "Anqin"; |
| 299 | 299 |
| 300 std::vector<AddressData> suggestions; | 300 std::vector<AddressData> suggestions; |
| 301 EXPECT_EQ(AddressValidator::SUCCESS, | 301 EXPECT_EQ(AddressValidator::SUCCESS, |
| 302 validator_->GetSuggestions(address, LOCALITY, 10, &suggestions)); | 302 validator_->GetSuggestions(address, LOCALITY, 10, &suggestions)); |
| 303 ASSERT_EQ(1U, suggestions.size()); | 303 ASSERT_EQ(1U, suggestions.size()); |
| 304 EXPECT_EQ("Anqing Shi", suggestions[0].locality); | 304 EXPECT_EQ("Anqing Shi", suggestions[0].locality); |
| 305 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); | 305 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); |
| 306 } | 306 } |
| 307 | 307 |
| 308 TEST_F(AddressValidatorTest, SuggestForLocalityAndAdminArea) { | 308 TEST_F(AddressValidatorTest, SuggestForLocalityAndAdminArea) { |
| 309 validator_->LoadRules("CN"); | 309 validator_->LoadRules("CN"); |
| 310 AddressData address; | 310 AddressData address; |
| 311 address.country_code = "CN"; | 311 address.region_code = "CN"; |
| 312 address.locality = "Anqing"; | 312 address.locality = "Anqing"; |
| 313 address.administrative_area = "Anhui"; | 313 address.administrative_area = "Anhui"; |
| 314 | 314 |
| 315 std::vector<AddressData> suggestions; | 315 std::vector<AddressData> suggestions; |
| 316 EXPECT_EQ(AddressValidator::SUCCESS, | 316 EXPECT_EQ(AddressValidator::SUCCESS, |
| 317 validator_->GetSuggestions(address, LOCALITY, 10, &suggestions)); | 317 validator_->GetSuggestions(address, LOCALITY, 10, &suggestions)); |
| 318 ASSERT_EQ(1U, suggestions.size()); | 318 ASSERT_EQ(1U, suggestions.size()); |
| 319 EXPECT_TRUE(suggestions[0].dependent_locality.empty()); | 319 EXPECT_TRUE(suggestions[0].dependent_locality.empty()); |
| 320 EXPECT_EQ("Anqing Shi", suggestions[0].locality); | 320 EXPECT_EQ("Anqing Shi", suggestions[0].locality); |
| 321 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); | 321 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); |
| 322 } | 322 } |
| 323 | 323 |
| 324 TEST_F(AddressValidatorTest, SuggestForAdminAreaAndLocality) { | 324 TEST_F(AddressValidatorTest, SuggestForAdminAreaAndLocality) { |
| 325 validator_->LoadRules("CN"); | 325 validator_->LoadRules("CN"); |
| 326 AddressData address; | 326 AddressData address; |
| 327 address.country_code = "CN"; | 327 address.region_code = "CN"; |
| 328 address.locality = "Anqing"; | 328 address.locality = "Anqing"; |
| 329 address.administrative_area = "Anhui"; | 329 address.administrative_area = "Anhui"; |
| 330 | 330 |
| 331 std::vector<AddressData> suggestions; | 331 std::vector<AddressData> suggestions; |
| 332 EXPECT_EQ(AddressValidator::SUCCESS, | 332 EXPECT_EQ(AddressValidator::SUCCESS, |
| 333 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); | 333 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); |
| 334 ASSERT_EQ(1U, suggestions.size()); | 334 ASSERT_EQ(1U, suggestions.size()); |
| 335 EXPECT_TRUE(suggestions[0].dependent_locality.empty()); | 335 EXPECT_TRUE(suggestions[0].dependent_locality.empty()); |
| 336 EXPECT_TRUE(suggestions[0].locality.empty()); | 336 EXPECT_TRUE(suggestions[0].locality.empty()); |
| 337 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); | 337 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); |
| 338 } | 338 } |
| 339 | 339 |
| 340 TEST_F(AddressValidatorTest, SuggestForDependentLocality) { | 340 TEST_F(AddressValidatorTest, SuggestForDependentLocality) { |
| 341 validator_->LoadRules("CN"); | 341 validator_->LoadRules("CN"); |
| 342 AddressData address; | 342 AddressData address; |
| 343 address.country_code = "CN"; | 343 address.region_code = "CN"; |
| 344 address.dependent_locality = "Zongyang"; | 344 address.dependent_locality = "Zongyang"; |
| 345 | 345 |
| 346 std::vector<AddressData> suggestions; | 346 std::vector<AddressData> suggestions; |
| 347 EXPECT_EQ(AddressValidator::SUCCESS, | 347 EXPECT_EQ(AddressValidator::SUCCESS, |
| 348 validator_->GetSuggestions( | 348 validator_->GetSuggestions( |
| 349 address, DEPENDENT_LOCALITY, 10, &suggestions)); | 349 address, DEPENDENT_LOCALITY, 10, &suggestions)); |
| 350 ASSERT_EQ(1U, suggestions.size()); | 350 ASSERT_EQ(1U, suggestions.size()); |
| 351 EXPECT_EQ("Zongyang Xian", suggestions[0].dependent_locality); | 351 EXPECT_EQ("Zongyang Xian", suggestions[0].dependent_locality); |
| 352 EXPECT_EQ("Anqing Shi", suggestions[0].locality); | 352 EXPECT_EQ("Anqing Shi", suggestions[0].locality); |
| 353 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); | 353 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); |
| 354 } | 354 } |
| 355 | 355 |
| 356 TEST_F(AddressValidatorTest, | 356 TEST_F(AddressValidatorTest, |
| 357 NoSuggestForDependentLocalityWithWrongAdminArea) { | 357 NoSuggestForDependentLocalityWithWrongAdminArea) { |
| 358 validator_->LoadRules("CN"); | 358 validator_->LoadRules("CN"); |
| 359 AddressData address; | 359 AddressData address; |
| 360 address.country_code = "CN"; | 360 address.region_code = "CN"; |
| 361 address.dependent_locality = "Zongyang"; | 361 address.dependent_locality = "Zongyang"; |
| 362 address.administrative_area = "Sichuan Sheng"; | 362 address.administrative_area = "Sichuan Sheng"; |
| 363 | 363 |
| 364 std::vector<AddressData> suggestions; | 364 std::vector<AddressData> suggestions; |
| 365 EXPECT_EQ(AddressValidator::SUCCESS, | 365 EXPECT_EQ(AddressValidator::SUCCESS, |
| 366 validator_->GetSuggestions( | 366 validator_->GetSuggestions( |
| 367 address, DEPENDENT_LOCALITY, 10, &suggestions)); | 367 address, DEPENDENT_LOCALITY, 10, &suggestions)); |
| 368 EXPECT_TRUE(suggestions.empty()); | 368 EXPECT_TRUE(suggestions.empty()); |
| 369 } | 369 } |
| 370 | 370 |
| 371 TEST_F(AddressValidatorTest, EmptySuggestionsOverLimit) { | 371 TEST_F(AddressValidatorTest, EmptySuggestionsOverLimit) { |
| 372 AddressData address; | 372 AddressData address; |
| 373 address.country_code = "US"; | 373 address.region_code = "US"; |
| 374 address.administrative_area = "A"; | 374 address.administrative_area = "A"; |
| 375 | 375 |
| 376 std::vector<AddressData> suggestions; | 376 std::vector<AddressData> suggestions; |
| 377 EXPECT_EQ(AddressValidator::SUCCESS, | 377 EXPECT_EQ(AddressValidator::SUCCESS, |
| 378 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions)); | 378 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions)); |
| 379 EXPECT_TRUE(suggestions.empty()); | 379 EXPECT_TRUE(suggestions.empty()); |
| 380 } | 380 } |
| 381 | 381 |
| 382 TEST_F(AddressValidatorTest, PreferShortSuggestions) { | 382 TEST_F(AddressValidatorTest, PreferShortSuggestions) { |
| 383 AddressData address; | 383 AddressData address; |
| 384 address.country_code = "US"; | 384 address.region_code = "US"; |
| 385 address.administrative_area = "CA"; | 385 address.administrative_area = "CA"; |
| 386 | 386 |
| 387 std::vector<AddressData> suggestions; | 387 std::vector<AddressData> suggestions; |
| 388 EXPECT_EQ(AddressValidator::SUCCESS, | 388 EXPECT_EQ(AddressValidator::SUCCESS, |
| 389 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); | 389 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); |
| 390 ASSERT_EQ(1U, suggestions.size()); | 390 ASSERT_EQ(1U, suggestions.size()); |
| 391 EXPECT_EQ("CA", suggestions[0].administrative_area); | 391 EXPECT_EQ("CA", suggestions[0].administrative_area); |
| 392 } | 392 } |
| 393 | 393 |
| 394 TEST_F(AddressValidatorTest, SuggestTheSingleMatchForFullMatchName) { | 394 TEST_F(AddressValidatorTest, SuggestTheSingleMatchForFullMatchName) { |
| 395 AddressData address; | 395 AddressData address; |
| 396 address.country_code = "US"; | 396 address.region_code = "US"; |
| 397 address.administrative_area = "Texas"; | 397 address.administrative_area = "Texas"; |
| 398 | 398 |
| 399 std::vector<AddressData> suggestions; | 399 std::vector<AddressData> suggestions; |
| 400 EXPECT_EQ(AddressValidator::SUCCESS, | 400 EXPECT_EQ(AddressValidator::SUCCESS, |
| 401 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); | 401 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); |
| 402 ASSERT_EQ(1U, suggestions.size()); | 402 ASSERT_EQ(1U, suggestions.size()); |
| 403 EXPECT_EQ("Texas", suggestions[0].administrative_area); | 403 EXPECT_EQ("Texas", suggestions[0].administrative_area); |
| 404 } | 404 } |
| 405 | 405 |
| 406 TEST_F(AddressValidatorTest, SuggestAdminArea) { | 406 TEST_F(AddressValidatorTest, SuggestAdminArea) { |
| 407 AddressData address; | 407 AddressData address; |
| 408 address.country_code = "US"; | 408 address.region_code = "US"; |
| 409 address.administrative_area = "Cali"; | 409 address.administrative_area = "Cali"; |
| 410 | 410 |
| 411 std::vector<AddressData> suggestions; | 411 std::vector<AddressData> suggestions; |
| 412 EXPECT_EQ(AddressValidator::SUCCESS, | 412 EXPECT_EQ(AddressValidator::SUCCESS, |
| 413 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); | 413 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); |
| 414 ASSERT_EQ(1U, suggestions.size()); | 414 ASSERT_EQ(1U, suggestions.size()); |
| 415 EXPECT_EQ("California", suggestions[0].administrative_area); | 415 EXPECT_EQ("California", suggestions[0].administrative_area); |
| 416 } | 416 } |
| 417 | 417 |
| 418 TEST_F(AddressValidatorTest, MultipleSuggestions) { | 418 TEST_F(AddressValidatorTest, MultipleSuggestions) { |
| 419 AddressData address; | 419 AddressData address; |
| 420 address.country_code = "US"; | 420 address.region_code = "US"; |
| 421 address.administrative_area = "MA"; | 421 address.administrative_area = "MA"; |
| 422 | 422 |
| 423 std::vector<AddressData> suggestions; | 423 std::vector<AddressData> suggestions; |
| 424 EXPECT_EQ(AddressValidator::SUCCESS, | 424 EXPECT_EQ(AddressValidator::SUCCESS, |
| 425 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); | 425 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); |
| 426 EXPECT_LT(1U, suggestions.size()); | 426 EXPECT_LT(1U, suggestions.size()); |
| 427 | 427 |
| 428 // Massachusetts should not be a suggestion, because it's already covered | 428 // Massachusetts should not be a suggestion, because it's already covered |
| 429 // under MA. | 429 // under MA. |
| 430 std::set<std::string> expected_suggestions; | 430 std::set<std::string> expected_suggestions; |
| 431 expected_suggestions.insert("MA"); | 431 expected_suggestions.insert("MA"); |
| 432 expected_suggestions.insert("Maine"); | 432 expected_suggestions.insert("Maine"); |
| 433 expected_suggestions.insert("Marshall Islands"); | 433 expected_suggestions.insert("Marshall Islands"); |
| 434 expected_suggestions.insert("Maryland"); | 434 expected_suggestions.insert("Maryland"); |
| 435 for (std::vector<AddressData>::const_iterator it = suggestions.begin(); | 435 for (std::vector<AddressData>::const_iterator it = suggestions.begin(); |
| 436 it != suggestions.end(); ++it) { | 436 it != suggestions.end(); ++it) { |
| 437 expected_suggestions.erase(it->administrative_area); | 437 expected_suggestions.erase(it->administrative_area); |
| 438 } | 438 } |
| 439 EXPECT_TRUE(expected_suggestions.empty()); | 439 EXPECT_TRUE(expected_suggestions.empty()); |
| 440 } | 440 } |
| 441 | 441 |
| 442 TEST_F(AddressValidatorTest, SuggestNonLatinKeyWhenLanguageMatches) { | 442 TEST_F(AddressValidatorTest, SuggestNonLatinKeyWhenLanguageMatches) { |
| 443 validator_->LoadRules("KR"); | 443 validator_->LoadRules("KR"); |
| 444 AddressData address; | 444 AddressData address; |
| 445 address.language_code = "ko"; | 445 address.language_code = "ko"; |
| 446 address.country_code = "KR"; | 446 address.region_code = "KR"; |
| 447 address.postal_code = "210-210"; | 447 address.postal_code = "210-210"; |
| 448 | 448 |
| 449 std::vector<AddressData> suggestions; | 449 std::vector<AddressData> suggestions; |
| 450 EXPECT_EQ(AddressValidator::SUCCESS, | 450 EXPECT_EQ(AddressValidator::SUCCESS, |
| 451 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); | 451 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| 452 ASSERT_EQ(1U, suggestions.size()); | 452 ASSERT_EQ(1U, suggestions.size()); |
| 453 EXPECT_EQ("강원도", suggestions[0].administrative_area); | 453 EXPECT_EQ("강원도", suggestions[0].administrative_area); |
| 454 EXPECT_EQ("210-210", suggestions[0].postal_code); | 454 EXPECT_EQ("210-210", suggestions[0].postal_code); |
| 455 } | 455 } |
| 456 | 456 |
| 457 TEST_F(AddressValidatorTest, SuggestNonLatinKeyWhenUserInputIsNotLatin) { | 457 TEST_F(AddressValidatorTest, SuggestNonLatinKeyWhenUserInputIsNotLatin) { |
| 458 validator_->LoadRules("KR"); | 458 validator_->LoadRules("KR"); |
| 459 AddressData address; | 459 AddressData address; |
| 460 address.language_code = "en"; | 460 address.language_code = "en"; |
| 461 address.country_code = "KR"; | 461 address.region_code = "KR"; |
| 462 address.administrative_area = "강원"; | 462 address.administrative_area = "강원"; |
| 463 | 463 |
| 464 std::vector<AddressData> suggestions; | 464 std::vector<AddressData> suggestions; |
| 465 EXPECT_EQ(AddressValidator::SUCCESS, | 465 EXPECT_EQ(AddressValidator::SUCCESS, |
| 466 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions)); | 466 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions)); |
| 467 ASSERT_EQ(1U, suggestions.size()); | 467 ASSERT_EQ(1U, suggestions.size()); |
| 468 EXPECT_EQ("강원도", suggestions[0].administrative_area); | 468 EXPECT_EQ("강원도", suggestions[0].administrative_area); |
| 469 } | 469 } |
| 470 | 470 |
| 471 TEST_F(AddressValidatorTest, | 471 TEST_F(AddressValidatorTest, |
| 472 SuggestLatinNameWhenLanguageDiffersAndLatinNameAvailable) { | 472 SuggestLatinNameWhenLanguageDiffersAndLatinNameAvailable) { |
| 473 validator_->LoadRules("KR"); | 473 validator_->LoadRules("KR"); |
| 474 AddressData address; | 474 AddressData address; |
| 475 address.language_code = "en"; | 475 address.language_code = "en"; |
| 476 address.country_code = "KR"; | 476 address.region_code = "KR"; |
| 477 address.postal_code = "210-210"; | 477 address.postal_code = "210-210"; |
| 478 | 478 |
| 479 std::vector<AddressData> suggestions; | 479 std::vector<AddressData> suggestions; |
| 480 EXPECT_EQ(AddressValidator::SUCCESS, | 480 EXPECT_EQ(AddressValidator::SUCCESS, |
| 481 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); | 481 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| 482 ASSERT_EQ(1U, suggestions.size()); | 482 ASSERT_EQ(1U, suggestions.size()); |
| 483 EXPECT_EQ("Gangwon", suggestions[0].administrative_area); | 483 EXPECT_EQ("Gangwon", suggestions[0].administrative_area); |
| 484 EXPECT_EQ("210-210", suggestions[0].postal_code); | 484 EXPECT_EQ("210-210", suggestions[0].postal_code); |
| 485 } | 485 } |
| 486 | 486 |
| 487 TEST_F(AddressValidatorTest, SuggestLatinNameWhenUserInputIsLatin) { | 487 TEST_F(AddressValidatorTest, SuggestLatinNameWhenUserInputIsLatin) { |
| 488 validator_->LoadRules("KR"); | 488 validator_->LoadRules("KR"); |
| 489 AddressData address; | 489 AddressData address; |
| 490 address.language_code = "ko"; | 490 address.language_code = "ko"; |
| 491 address.country_code = "KR"; | 491 address.region_code = "KR"; |
| 492 address.administrative_area = "Gang"; | 492 address.administrative_area = "Gang"; |
| 493 | 493 |
| 494 std::vector<AddressData> suggestions; | 494 std::vector<AddressData> suggestions; |
| 495 EXPECT_EQ(AddressValidator::SUCCESS, | 495 EXPECT_EQ(AddressValidator::SUCCESS, |
| 496 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions)); | 496 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions)); |
| 497 ASSERT_EQ(1U, suggestions.size()); | 497 ASSERT_EQ(1U, suggestions.size()); |
| 498 EXPECT_EQ("Gangwon", suggestions[0].administrative_area); | 498 EXPECT_EQ("Gangwon", suggestions[0].administrative_area); |
| 499 } | 499 } |
| 500 | 500 |
| 501 TEST_F(AddressValidatorTest, NoSuggestionsForEmptyAddress) { | 501 TEST_F(AddressValidatorTest, NoSuggestionsForEmptyAddress) { |
| 502 AddressData address; | 502 AddressData address; |
| 503 address.country_code = "US"; | 503 address.region_code = "US"; |
| 504 | 504 |
| 505 std::vector<AddressData> suggestions; | 505 std::vector<AddressData> suggestions; |
| 506 EXPECT_EQ( | 506 EXPECT_EQ( |
| 507 AddressValidator::SUCCESS, | 507 AddressValidator::SUCCESS, |
| 508 validator_->GetSuggestions(address, POSTAL_CODE, 999, &suggestions)); | 508 validator_->GetSuggestions(address, POSTAL_CODE, 999, &suggestions)); |
| 509 EXPECT_TRUE(suggestions.empty()); | 509 EXPECT_TRUE(suggestions.empty()); |
| 510 } | 510 } |
| 511 | 511 |
| 512 TEST_F(AddressValidatorTest, SuggestionIncludesCountry) { | 512 TEST_F(AddressValidatorTest, SuggestionIncludesCountry) { |
| 513 AddressData address; | 513 AddressData address; |
| 514 address.country_code = "US"; | 514 address.region_code = "US"; |
| 515 address.postal_code = "90291"; | 515 address.postal_code = "90291"; |
| 516 | 516 |
| 517 std::vector<AddressData> suggestions; | 517 std::vector<AddressData> suggestions; |
| 518 EXPECT_EQ(AddressValidator::SUCCESS, | 518 EXPECT_EQ(AddressValidator::SUCCESS, |
| 519 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); | 519 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| 520 ASSERT_EQ(1U, suggestions.size()); | 520 ASSERT_EQ(1U, suggestions.size()); |
| 521 EXPECT_EQ("US", suggestions[0].country_code); | 521 EXPECT_EQ("US", suggestions[0].region_code); |
| 522 } | 522 } |
| 523 | 523 |
| 524 TEST_F(AddressValidatorTest, SuggestOnlyForAdministrativeAreasAndPostalCode) { | 524 TEST_F(AddressValidatorTest, SuggestOnlyForAdministrativeAreasAndPostalCode) { |
| 525 AddressData address; | 525 AddressData address; |
| 526 address.country_code = "US"; | 526 address.region_code = "US"; |
| 527 address.administrative_area = "CA"; | 527 address.administrative_area = "CA"; |
| 528 address.locality = "Los Angeles"; | 528 address.locality = "Los Angeles"; |
| 529 address.dependent_locality = "Venice"; | 529 address.dependent_locality = "Venice"; |
| 530 address.postal_code = "90291"; | 530 address.postal_code = "90291"; |
| 531 address.sorting_code = "123"; | 531 address.sorting_code = "123"; |
| 532 address.address_lines.push_back("123 Main St"); | 532 address.address_line.push_back("123 Main St"); |
| 533 address.recipient = "Jon Smith"; | 533 address.recipient = "Jon Smith"; |
| 534 | 534 |
| 535 // Fields that should not have suggestions in US. | 535 // Fields that should not have suggestions in US. |
| 536 static const AddressField kNoSugestFields[] = { | 536 static const AddressField kNoSugestFields[] = { |
| 537 COUNTRY, | 537 COUNTRY, |
| 538 LOCALITY, | 538 LOCALITY, |
| 539 DEPENDENT_LOCALITY, | 539 DEPENDENT_LOCALITY, |
| 540 SORTING_CODE, | 540 SORTING_CODE, |
| 541 STREET_ADDRESS, | 541 STREET_ADDRESS, |
| 542 RECIPIENT | 542 RECIPIENT |
| 543 }; | 543 }; |
| 544 | 544 |
| 545 static const size_t kNumNoSuggestFields = | 545 static const size_t kNumNoSuggestFields = |
| 546 sizeof kNoSugestFields / sizeof (AddressField); | 546 sizeof kNoSugestFields / sizeof (AddressField); |
| 547 | 547 |
| 548 for (size_t i = 0; i < kNumNoSuggestFields; ++i) { | 548 for (size_t i = 0; i < kNumNoSuggestFields; ++i) { |
| 549 std::vector<AddressData> suggestions; | 549 std::vector<AddressData> suggestions; |
| 550 EXPECT_EQ(AddressValidator::SUCCESS, | 550 EXPECT_EQ(AddressValidator::SUCCESS, |
| 551 validator_->GetSuggestions( | 551 validator_->GetSuggestions( |
| 552 address, kNoSugestFields[i], 999, &suggestions)); | 552 address, kNoSugestFields[i], 999, &suggestions)); |
| 553 EXPECT_TRUE(suggestions.empty()); | 553 EXPECT_TRUE(suggestions.empty()); |
| 554 } | 554 } |
| 555 } | 555 } |
| 556 | 556 |
| 557 TEST_F(AddressValidatorTest, CanonicalizeUsAdminAreaName) { | 557 TEST_F(AddressValidatorTest, CanonicalizeUsAdminAreaName) { |
| 558 AddressData address; | 558 AddressData address; |
| 559 address.country_code = "US"; | 559 address.region_code = "US"; |
| 560 address.administrative_area = "cALIFORNIa"; | 560 address.administrative_area = "cALIFORNIa"; |
| 561 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address)); | 561 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address)); |
| 562 EXPECT_EQ("CA", address.administrative_area); | 562 EXPECT_EQ("CA", address.administrative_area); |
| 563 } | 563 } |
| 564 | 564 |
| 565 TEST_F(AddressValidatorTest, CanonicalizeUsAdminAreaKey) { | 565 TEST_F(AddressValidatorTest, CanonicalizeUsAdminAreaKey) { |
| 566 AddressData address; | 566 AddressData address; |
| 567 address.country_code = "US"; | 567 address.region_code = "US"; |
| 568 address.administrative_area = "CA"; | 568 address.administrative_area = "CA"; |
| 569 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address)); | 569 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address)); |
| 570 EXPECT_EQ("CA", address.administrative_area); | 570 EXPECT_EQ("CA", address.administrative_area); |
| 571 } | 571 } |
| 572 | 572 |
| 573 TEST_F(AddressValidatorTest, CanonicalizeJpAdminAreaKey) { | 573 TEST_F(AddressValidatorTest, CanonicalizeJpAdminAreaKey) { |
| 574 validator_->LoadRules("JP"); | 574 validator_->LoadRules("JP"); |
| 575 AddressData address; | 575 AddressData address; |
| 576 address.country_code = "JP"; | 576 address.region_code = "JP"; |
| 577 address.administrative_area = "東京都"; | 577 address.administrative_area = "東京都"; |
| 578 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address)); | 578 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address)); |
| 579 EXPECT_EQ("東京都", address.administrative_area); | 579 EXPECT_EQ("東京都", address.administrative_area); |
| 580 } | 580 } |
| 581 | 581 |
| 582 TEST_F(AddressValidatorTest, CanonicalizeJpAdminAreaLatinName) { | 582 TEST_F(AddressValidatorTest, CanonicalizeJpAdminAreaLatinName) { |
| 583 validator_->LoadRules("JP"); | 583 validator_->LoadRules("JP"); |
| 584 AddressData address; | 584 AddressData address; |
| 585 address.country_code = "JP"; | 585 address.region_code = "JP"; |
| 586 address.administrative_area = "tOKYo"; | 586 address.administrative_area = "tOKYo"; |
| 587 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address)); | 587 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address)); |
| 588 EXPECT_EQ("TOKYO", address.administrative_area); | 588 EXPECT_EQ("TOKYO", address.administrative_area); |
| 589 } | 589 } |
| 590 | 590 |
| 591 } // namespace addressinput | 591 } // namespace addressinput |
| 592 } // namespace i18n | 592 } // namespace i18n |
| OLD | NEW |