Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Side by Side Diff: third_party/libaddressinput/chromium/cpp/test/address_validator_test.cc

Issue 368243007: Reland of "Use address_data.h from upstream libaddressinput". (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update BUILD.gn, fix a test. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698