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

Side by Side Diff: third_party/libaddressinput/chromium/preload_address_validator_unittest.cc

Issue 298863012: Use upstream libaddressinput in Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Work in progress for suggestions impl. Created 6 years, 6 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <cstddef> 5 #include <cstddef>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13 #include "third_party/libaddressinput/chromium/load_rules_delegate.h"
14 #define I18N_ADDRESSINPUT_UTIL_BASICTYPES_H_
15 #include "third_party/libaddressinput/chromium/preload_address_validator.h" 14 #include "third_party/libaddressinput/chromium/preload_address_validator.h"
16 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_da ta.h" 15 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_da ta.h"
17 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_fi eld.h" 16 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_fi eld.h"
18 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_pr oblem.h" 17 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_pr oblem.h"
19 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_va lidator.h" 18 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_va lidator.h"
20 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/callback.h " 19 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/callback.h "
21 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/downloader .h" 20 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/downloader .h"
22 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/null_stora ge.h" 21 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/null_stora ge.h"
23 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/storage.h" 22 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/storage.h"
24 #include "third_party/libaddressinput/src/cpp/src/region_data_constants.h" 23 #include "third_party/libaddressinput/src/cpp/src/region_data_constants.h"
25 #include "third_party/libaddressinput/src/cpp/test/fake_downloader.h" 24 #include "third_party/libaddressinput/src/cpp/test/fake_downloader.h"
26 25
27 namespace { 26 namespace {
28 27
29 using ::autofill::PreloadAddressValidator; 28 using ::autofill::AddressValidator;
29 using ::autofill::LoadRulesDelegate;
30 using ::i18n::addressinput::AddressData; 30 using ::i18n::addressinput::AddressData;
31 using ::i18n::addressinput::AddressField; 31 using ::i18n::addressinput::AddressField;
32 using ::i18n::addressinput::BuildCallback; 32 using ::i18n::addressinput::BuildCallback;
33 using ::i18n::addressinput::Downloader; 33 using ::i18n::addressinput::Downloader;
34 using ::i18n::addressinput::FakeDownloader; 34 using ::i18n::addressinput::FakeDownloader;
35 using ::i18n::addressinput::FieldProblemMap; 35 using ::i18n::addressinput::FieldProblemMap;
36 using ::i18n::addressinput::NullStorage; 36 using ::i18n::addressinput::NullStorage;
37 using ::i18n::addressinput::RegionDataConstants; 37 using ::i18n::addressinput::RegionDataConstants;
38 using ::i18n::addressinput::Storage; 38 using ::i18n::addressinput::Storage;
39 39
40 using ::i18n::addressinput::COUNTRY; 40 using ::i18n::addressinput::COUNTRY;
41 using ::i18n::addressinput::ADMIN_AREA; 41 using ::i18n::addressinput::ADMIN_AREA;
42 using ::i18n::addressinput::LOCALITY; 42 using ::i18n::addressinput::LOCALITY;
43 using ::i18n::addressinput::DEPENDENT_LOCALITY; 43 using ::i18n::addressinput::DEPENDENT_LOCALITY;
44 using ::i18n::addressinput::SORTING_CODE; 44 using ::i18n::addressinput::SORTING_CODE;
45 using ::i18n::addressinput::POSTAL_CODE; 45 using ::i18n::addressinput::POSTAL_CODE;
46 using ::i18n::addressinput::STREET_ADDRESS; 46 using ::i18n::addressinput::STREET_ADDRESS;
47 using ::i18n::addressinput::RECIPIENT; 47 using ::i18n::addressinput::RECIPIENT;
48 48
49 using ::i18n::addressinput::UNKNOWN_VALUE; 49 using ::i18n::addressinput::UNKNOWN_VALUE;
50 using ::i18n::addressinput::INVALID_FORMAT; 50 using ::i18n::addressinput::INVALID_FORMAT;
51 using ::i18n::addressinput::MISMATCHING_VALUE; 51 using ::i18n::addressinput::MISMATCHING_VALUE;
52 52
53 class PreloadAddressValidatorTest : public testing::Test { 53 class AddressValidatorTest : public testing::Test, LoadRulesDelegate {
54 protected: 54 protected:
55 PreloadAddressValidatorTest() 55 AddressValidatorTest()
56 : validator_( 56 : validator_(
57 new PreloadAddressValidator( 57 new AddressValidator(
58 FakeDownloader::kFakeAggregateDataUrl, 58 FakeDownloader::kFakeAggregateDataUrl,
59 scoped_ptr<Downloader>(new FakeDownloader), 59 scoped_ptr<Downloader>(new FakeDownloader),
60 scoped_ptr<Storage>(new NullStorage))), 60 scoped_ptr<Storage>(new NullStorage),
61 loaded_(BuildCallback(this, &PreloadAddressValidatorTest::Loaded)) { 61 this)) {
62 validator_->LoadRules("US", *loaded_); 62 validator_->LoadRules("US");
63 } 63 }
64 64
65 virtual ~PreloadAddressValidatorTest() {} 65 virtual ~AddressValidatorTest() {}
66 66
67 const scoped_ptr<PreloadAddressValidator> validator_; 67 const scoped_ptr<AddressValidator> validator_;
68 const scoped_ptr<PreloadAddressValidator::Callback> loaded_;
69 68
70 private: 69 private:
71 void Loaded(bool success, 70 // LoadRulesDelegate implementation.
72 const std::string& region_code, 71 virtual void OnAddressValidationRulesLoaded(const std::string& country_code,
73 const int& rule_count) { 72 bool success) OVERRIDE {
74 AddressData address_data; 73 AddressData address_data;
75 address_data.region_code = region_code; 74 address_data.region_code = country_code;
76 FieldProblemMap dummy; 75 FieldProblemMap dummy;
77 PreloadAddressValidator::Status status = 76 AddressValidator::Status status =
78 validator_->Validate(address_data, NULL, &dummy); 77 validator_->ValidateAddress(address_data, NULL, &dummy);
79 ASSERT_EQ(success, status == PreloadAddressValidator::SUCCESS); 78 ASSERT_EQ(success, status == AddressValidator::SUCCESS);
80 } 79 }
81 80
82 DISALLOW_COPY_AND_ASSIGN(PreloadAddressValidatorTest); 81 DISALLOW_COPY_AND_ASSIGN(AddressValidatorTest);
83 }; 82 };
84 83
85 TEST_F(PreloadAddressValidatorTest, RegionHasRules) { 84 TEST_F(AddressValidatorTest, RegionHasRules) {
86 const std::vector<std::string>& region_codes = 85 const std::vector<std::string>& region_codes =
87 RegionDataConstants::GetRegionCodes(); 86 RegionDataConstants::GetRegionCodes();
88 AddressData address; 87 AddressData address;
89 for (size_t i = 0; i < region_codes.size(); ++i) { 88 for (size_t i = 0; i < region_codes.size(); ++i) {
90 SCOPED_TRACE("For region: " + region_codes[i]); 89 SCOPED_TRACE("For region: " + region_codes[i]);
91 validator_->LoadRules(region_codes[i], *loaded_); 90 validator_->LoadRules(region_codes[i]);
92 address.region_code = region_codes[i]; 91 address.region_code = region_codes[i];
93 FieldProblemMap dummy; 92 FieldProblemMap dummy;
94 EXPECT_EQ( 93 EXPECT_EQ(
95 PreloadAddressValidator::SUCCESS, 94 AddressValidator::SUCCESS,
96 validator_->Validate(address, NULL, &dummy)); 95 validator_->ValidateAddress(address, NULL, &dummy));
97 } 96 }
98 } 97 }
99 98
100 TEST_F(PreloadAddressValidatorTest, EmptyAddressNoFatalFailure) { 99 TEST_F(AddressValidatorTest, EmptyAddressNoFatalFailure) {
101 AddressData address; 100 AddressData address;
102 address.region_code = "US"; 101 address.region_code = "US";
103 102
104 FieldProblemMap dummy; 103 FieldProblemMap dummy;
105 EXPECT_EQ( 104 EXPECT_EQ(
106 PreloadAddressValidator::SUCCESS, 105 AddressValidator::SUCCESS,
107 validator_->Validate(address, NULL, &dummy)); 106 validator_->ValidateAddress(address, NULL, &dummy));
108 } 107 }
109 108
110 TEST_F(PreloadAddressValidatorTest, USZipCode) { 109 TEST_F(AddressValidatorTest, UsStateNamesAreValidEntries) {
110 AddressData address;
111 address.region_code = "US";
112 address.administrative_area = "California";
113
114 FieldProblemMap filter;
115 filter.insert(std::make_pair(ADMIN_AREA, UNKNOWN_VALUE));
116 FieldProblemMap problems;
117 EXPECT_EQ(
118 AddressValidator::SUCCESS,
119 validator_->ValidateAddress(address, &filter, &problems));
120 EXPECT_TRUE(problems.empty());
121 }
122
123 TEST_F(AddressValidatorTest, USZipCode) {
111 AddressData address; 124 AddressData address;
112 address.address_line.push_back("340 Main St."); 125 address.address_line.push_back("340 Main St.");
113 address.locality = "Venice"; 126 address.locality = "Venice";
114 address.administrative_area = "CA"; 127 address.administrative_area = "CA";
115 address.region_code = "US"; 128 address.region_code = "US";
116 129
117 // Valid Californian zip code. 130 // Valid Californian zip code.
118 address.postal_code = "90291"; 131 address.postal_code = "90291";
119 FieldProblemMap problems; 132 FieldProblemMap problems;
120 EXPECT_EQ( 133 EXPECT_EQ(
121 PreloadAddressValidator::SUCCESS, 134 AddressValidator::SUCCESS,
122 validator_->Validate(address, NULL, &problems)); 135 validator_->ValidateAddress(address, NULL, &problems));
123 EXPECT_TRUE(problems.empty()); 136 EXPECT_TRUE(problems.empty());
124 137
125 problems.clear(); 138 problems.clear();
126 139
127 // An extended, valid Californian zip code. 140 // An extended, valid Californian zip code.
128 address.postal_code = "90210-1234"; 141 address.postal_code = "90210-1234";
129 EXPECT_EQ( 142 EXPECT_EQ(
130 PreloadAddressValidator::SUCCESS, 143 AddressValidator::SUCCESS,
131 validator_->Validate(address, NULL, &problems)); 144 validator_->ValidateAddress(address, NULL, &problems));
132 EXPECT_TRUE(problems.empty()); 145 EXPECT_TRUE(problems.empty());
133 146
134 problems.clear(); 147 problems.clear();
135 148
136 // New York zip code (which is invalid for California). 149 // New York zip code (which is invalid for California).
137 address.postal_code = "12345"; 150 address.postal_code = "12345";
138 EXPECT_EQ( 151 EXPECT_EQ(
139 PreloadAddressValidator::SUCCESS, 152 AddressValidator::SUCCESS,
140 validator_->Validate(address, NULL, &problems)); 153 validator_->ValidateAddress(address, NULL, &problems));
141 EXPECT_EQ(1U, problems.size()); 154 EXPECT_EQ(1U, problems.size());
142 EXPECT_EQ(problems.begin()->first, POSTAL_CODE); 155 EXPECT_EQ(problems.begin()->first, POSTAL_CODE);
143 EXPECT_EQ(problems.begin()->second, MISMATCHING_VALUE); 156 EXPECT_EQ(problems.begin()->second, MISMATCHING_VALUE);
144 157
145 problems.clear(); 158 problems.clear();
146 159
147 // A zip code with a "90" in the middle. 160 // A zip code with a "90" in the middle.
148 address.postal_code = "12903"; 161 address.postal_code = "12903";
149 EXPECT_EQ( 162 EXPECT_EQ(
150 PreloadAddressValidator::SUCCESS, 163 AddressValidator::SUCCESS,
151 validator_->Validate(address, NULL, &problems)); 164 validator_->ValidateAddress(address, NULL, &problems));
152 EXPECT_EQ(1U, problems.size()); 165 EXPECT_EQ(1U, problems.size());
153 EXPECT_EQ(problems.begin()->first, POSTAL_CODE); 166 EXPECT_EQ(problems.begin()->first, POSTAL_CODE);
154 EXPECT_EQ(problems.begin()->second, MISMATCHING_VALUE); 167 EXPECT_EQ(problems.begin()->second, MISMATCHING_VALUE);
155 168
156 problems.clear(); 169 problems.clear();
157 170
158 // Invalid zip code (too many digits). 171 // Invalid zip code (too many digits).
159 address.postal_code = "902911"; 172 address.postal_code = "902911";
160 EXPECT_EQ( 173 EXPECT_EQ(
161 PreloadAddressValidator::SUCCESS, 174 AddressValidator::SUCCESS,
162 validator_->Validate(address, NULL, &problems)); 175 validator_->ValidateAddress(address, NULL, &problems));
163 EXPECT_EQ(1U, problems.size()); 176 EXPECT_EQ(1U, problems.size());
164 EXPECT_EQ(problems.begin()->first, POSTAL_CODE); 177 EXPECT_EQ(problems.begin()->first, POSTAL_CODE);
165 EXPECT_EQ(problems.begin()->second, INVALID_FORMAT); 178 EXPECT_EQ(problems.begin()->second, INVALID_FORMAT);
166 179
167 problems.clear(); 180 problems.clear();
168 181
169 // Invalid zip code (too few digits). 182 // Invalid zip code (too few digits).
170 address.postal_code = "9029"; 183 address.postal_code = "9029";
171 EXPECT_EQ( 184 EXPECT_EQ(
172 PreloadAddressValidator::SUCCESS, 185 AddressValidator::SUCCESS,
173 validator_->Validate(address, NULL, &problems)); 186 validator_->ValidateAddress(address, NULL, &problems));
174 EXPECT_EQ(1U, problems.size()); 187 EXPECT_EQ(1U, problems.size());
175 EXPECT_EQ(problems.begin()->first, POSTAL_CODE); 188 EXPECT_EQ(problems.begin()->first, POSTAL_CODE);
176 EXPECT_EQ(problems.begin()->second, INVALID_FORMAT); 189 EXPECT_EQ(problems.begin()->second, INVALID_FORMAT);
177 } 190 }
178 191
179 // Test case disabled because libaddressinput address validation doesn't do 192 TEST_F(AddressValidatorTest, BasicValidation) {
180 // those kinds of normalizations that this test case expects. TODO: Something.
181 TEST_F(PreloadAddressValidatorTest, DISABLED_BasicValidation) {
182 // US rules should always be available, even though this load call fails. 193 // US rules should always be available, even though this load call fails.
183 validator_->LoadRules("US", *loaded_); 194 validator_->LoadRules("US");
184 AddressData address; 195 AddressData address;
185 address.region_code = "US"; 196 address.region_code = "US";
186 address.language_code = "en"; 197 address.language_code = "en";
187 address.administrative_area = "TX"; 198 address.administrative_area = "TX";
188 address.locality = "Paris"; 199 address.locality = "Paris";
189 address.postal_code = "75461"; 200 address.postal_code = "75461";
190 address.address_line.push_back("123 Main St"); 201 address.address_line.push_back("123 Main St");
191 FieldProblemMap problems; 202 FieldProblemMap problems;
192 EXPECT_EQ( 203 EXPECT_EQ(
193 PreloadAddressValidator::SUCCESS, 204 AddressValidator::SUCCESS,
194 validator_->Validate(address, NULL, &problems)); 205 validator_->ValidateAddress(address, NULL, &problems));
195 EXPECT_TRUE(problems.empty()); 206 EXPECT_TRUE(problems.empty());
196 207
197 // The display name works as well as the key. 208 // The display name works as well as the key.
198 address.administrative_area = "Texas"; 209 address.administrative_area = "Texas";
199 problems.clear(); 210 problems.clear();
200 EXPECT_EQ( 211 EXPECT_EQ(
201 PreloadAddressValidator::SUCCESS, 212 AddressValidator::SUCCESS,
202 validator_->Validate(address, NULL, &problems)); 213 validator_->ValidateAddress(address, NULL, &problems));
203 EXPECT_TRUE(problems.empty()); 214 EXPECT_TRUE(problems.empty());
204 215
205 // Ignore capitalization. 216 // Ignore capitalization.
206 address.administrative_area = "tx"; 217 address.administrative_area = "tx";
207 problems.clear(); 218 problems.clear();
208 EXPECT_EQ( 219 EXPECT_EQ(
209 PreloadAddressValidator::SUCCESS, 220 AddressValidator::SUCCESS,
210 validator_->Validate(address, NULL, &problems)); 221 validator_->ValidateAddress(address, NULL, &problems));
211 EXPECT_TRUE(problems.empty()); 222 EXPECT_TRUE(problems.empty());
212 223
213 // Ignore capitalization. 224 // Ignore capitalization.
214 address.administrative_area = "teXas"; 225 address.administrative_area = "teXas";
215 problems.clear(); 226 problems.clear();
216 EXPECT_EQ( 227 EXPECT_EQ(
217 PreloadAddressValidator::SUCCESS, 228 AddressValidator::SUCCESS,
218 validator_->Validate(address, NULL, &problems)); 229 validator_->ValidateAddress(address, NULL, &problems));
219 EXPECT_TRUE(problems.empty()); 230 EXPECT_TRUE(problems.empty());
220 231
221 // Ignore diacriticals. 232 // Ignore diacriticals.
222 address.administrative_area = "T\u00E9xas"; 233 address.administrative_area = "T\u00E9xas";
223 problems.clear(); 234 problems.clear();
224 EXPECT_EQ( 235 EXPECT_EQ(
225 PreloadAddressValidator::SUCCESS, 236 AddressValidator::SUCCESS,
226 validator_->Validate(address, NULL, &problems)); 237 validator_->ValidateAddress(address, NULL, &problems));
227 EXPECT_TRUE(problems.empty()); 238 EXPECT_TRUE(problems.empty());
228 } 239 }
229 240
230 TEST_F(PreloadAddressValidatorTest, BasicValidationFailure) { 241 TEST_F(AddressValidatorTest, BasicValidationFailure) {
231 // US rules should always be available, even though this load call fails. 242 // US rules should always be available, even though this load call fails.
232 validator_->LoadRules("US", *loaded_); 243 validator_->LoadRules("US");
233 AddressData address; 244 AddressData address;
234 address.region_code = "US"; 245 address.region_code = "US";
235 address.language_code = "en"; 246 address.language_code = "en";
236 address.administrative_area = "XT"; 247 address.administrative_area = "XT";
237 address.locality = "Paris"; 248 address.locality = "Paris";
238 address.postal_code = "75461"; 249 address.postal_code = "75461";
239 address.address_line.push_back("123 Main St"); 250 address.address_line.push_back("123 Main St");
240 FieldProblemMap problems; 251 FieldProblemMap problems;
241 EXPECT_EQ( 252 EXPECT_EQ(
242 PreloadAddressValidator::SUCCESS, 253 AddressValidator::SUCCESS,
243 validator_->Validate(address, NULL, &problems)); 254 validator_->ValidateAddress(address, NULL, &problems));
244 255
245 ASSERT_EQ(1U, problems.size()); 256 ASSERT_EQ(1U, problems.size());
246 EXPECT_EQ(UNKNOWN_VALUE, problems.begin()->second); 257 EXPECT_EQ(UNKNOWN_VALUE, problems.begin()->second);
247 EXPECT_EQ(ADMIN_AREA, problems.begin()->first); 258 EXPECT_EQ(ADMIN_AREA, problems.begin()->first);
248 } 259 }
249 260
250 TEST_F(PreloadAddressValidatorTest, NoNullSuggestionsCrash) { 261 TEST_F(AddressValidatorTest, NoNullSuggestionsCrash) {
251 AddressData address; 262 AddressData address;
252 address.region_code = "US"; 263 address.region_code = "US";
253 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 264 EXPECT_EQ(AddressValidator::SUCCESS,
254 validator_->GetSuggestions(address, COUNTRY, 1, NULL)); 265 validator_->GetSuggestions(address, COUNTRY, 1, NULL));
255 } 266 }
256 267
257 TEST_F(PreloadAddressValidatorTest, SuggestAdminAreaForPostalCode) { 268 TEST_F(AddressValidatorTest, SuggestAdminAreaForPostalCode) {
258 AddressData address; 269 AddressData address;
259 address.region_code = "US"; 270 address.region_code = "US";
260 address.postal_code = "90291"; 271 address.postal_code = "90291";
261 272
262 std::vector<AddressData> suggestions; 273 std::vector<AddressData> suggestions;
263 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 274 EXPECT_EQ(AddressValidator::SUCCESS,
264 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); 275 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
265 ASSERT_EQ(1U, suggestions.size()); 276 ASSERT_EQ(1U, suggestions.size());
266 EXPECT_EQ("CA", suggestions[0].administrative_area); 277 EXPECT_EQ("CA", suggestions[0].administrative_area);
267 EXPECT_EQ("90291", suggestions[0].postal_code); 278 EXPECT_EQ("90291", suggestions[0].postal_code);
268 } 279 }
269 280
270 TEST_F(PreloadAddressValidatorTest, SuggestLocalityForPostalCodeWithAdminArea) { 281 TEST_F(AddressValidatorTest, SuggestLocalityForPostalCodeWithAdminArea) {
271 validator_->LoadRules("TW", *loaded_); 282 validator_->LoadRules("TW");
272 AddressData address; 283 AddressData address;
273 address.region_code = "TW"; 284 address.region_code = "TW";
274 address.postal_code = "515"; 285 address.postal_code = "515";
275 address.administrative_area = "Changhua"; 286 address.administrative_area = "Changhua";
287 address.language_code = "zh-Latn";
276 288
277 std::vector<AddressData> suggestions; 289 std::vector<AddressData> suggestions;
278 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 290 EXPECT_EQ(AddressValidator::SUCCESS,
279 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); 291 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
280 ASSERT_EQ(1U, suggestions.size()); 292 ASSERT_EQ(1U, suggestions.size());
281 EXPECT_EQ("Dacun Township", suggestions[0].locality); 293 EXPECT_EQ("Dacun Township", suggestions[0].locality);
282 EXPECT_EQ("Changhua County", suggestions[0].administrative_area); 294 EXPECT_EQ("Changhua County", suggestions[0].administrative_area);
283 EXPECT_EQ("515", suggestions[0].postal_code); 295 EXPECT_EQ("515", suggestions[0].postal_code);
284 } 296 }
285 297
286 TEST_F(PreloadAddressValidatorTest, SuggestAdminAreaForPostalCodeWithLocality) { 298 TEST_F(AddressValidatorTest, SuggestAdminAreaForPostalCodeWithLocality) {
287 validator_->LoadRules("TW", *loaded_); 299 validator_->LoadRules("TW");
288 AddressData address; 300 AddressData address;
289 address.region_code = "TW"; 301 address.region_code = "TW";
290 address.postal_code = "515"; 302 address.postal_code = "515";
291 address.locality = "Dacun"; 303 address.locality = "Dacun";
304 address.language_code = "zh-Latn";
292 305
293 std::vector<AddressData> suggestions; 306 std::vector<AddressData> suggestions;
294 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 307 EXPECT_EQ(AddressValidator::SUCCESS,
295 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); 308 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
296 ASSERT_EQ(1U, suggestions.size()); 309 ASSERT_EQ(1U, suggestions.size());
297 EXPECT_EQ("Dacun Township", suggestions[0].locality); 310 EXPECT_EQ("Dacun Township", suggestions[0].locality);
298 EXPECT_EQ("Changhua County", suggestions[0].administrative_area); 311 EXPECT_EQ("Changhua County", suggestions[0].administrative_area);
299 EXPECT_EQ("515", suggestions[0].postal_code); 312 EXPECT_EQ("515", suggestions[0].postal_code);
300 } 313 }
301 314
302 TEST_F(PreloadAddressValidatorTest, NoSuggestForPostalCodeWithWrongAdminArea) { 315 TEST_F(AddressValidatorTest, NoSuggestForPostalCodeWithWrongAdminArea) {
303 AddressData address; 316 AddressData address;
304 address.region_code = "US"; 317 address.region_code = "US";
305 address.postal_code = "90066"; 318 address.postal_code = "90066";
306 address.postal_code = "TX"; 319 address.postal_code = "TX";
307 320
308 std::vector<AddressData> suggestions; 321 std::vector<AddressData> suggestions;
309 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 322 EXPECT_EQ(AddressValidator::SUCCESS,
310 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); 323 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
311 EXPECT_TRUE(suggestions.empty()); 324 EXPECT_TRUE(suggestions.empty());
312 } 325 }
313 326
314 TEST_F(PreloadAddressValidatorTest, SuggestForLocality) { 327 TEST_F(AddressValidatorTest, SuggestForLocality) {
315 validator_->LoadRules("CN", *loaded_); 328 validator_->LoadRules("CN");
316 AddressData address; 329 AddressData address;
317 address.region_code = "CN"; 330 address.region_code = "CN";
318 address.locality = "Anqin"; 331 address.locality = "Anqin";
332 address.language_code = "zh-Latn";
319 333
320 std::vector<AddressData> suggestions; 334 std::vector<AddressData> suggestions;
321 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 335 EXPECT_EQ(AddressValidator::SUCCESS,
322 validator_->GetSuggestions(address, LOCALITY, 10, &suggestions)); 336 validator_->GetSuggestions(address, LOCALITY, 10, &suggestions));
323 ASSERT_EQ(1U, suggestions.size()); 337 ASSERT_EQ(1U, suggestions.size());
324 EXPECT_EQ("Anqing Shi", suggestions[0].locality); 338 EXPECT_EQ("Anqing Shi", suggestions[0].locality);
325 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); 339 EXPECT_EQ("Anhui Sheng", suggestions[0].administrative_area);
326 } 340 }
327 341
328 TEST_F(PreloadAddressValidatorTest, SuggestForLocalityAndAdminArea) { 342 TEST_F(AddressValidatorTest, SuggestForLocalityAndAdminArea) {
329 validator_->LoadRules("CN", *loaded_); 343 validator_->LoadRules("CN");
330 AddressData address; 344 AddressData address;
331 address.region_code = "CN"; 345 address.region_code = "CN";
332 address.locality = "Anqing"; 346 address.locality = "Anqing";
333 address.administrative_area = "Anhui"; 347 address.administrative_area = "Anhui";
348 address.language_code = "zh-Latn";
334 349
335 std::vector<AddressData> suggestions; 350 std::vector<AddressData> suggestions;
336 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 351 EXPECT_EQ(AddressValidator::SUCCESS,
337 validator_->GetSuggestions(address, LOCALITY, 10, &suggestions)); 352 validator_->GetSuggestions(address, LOCALITY, 10, &suggestions));
338 ASSERT_EQ(1U, suggestions.size()); 353 ASSERT_EQ(1U, suggestions.size());
339 EXPECT_TRUE(suggestions[0].dependent_locality.empty()); 354 EXPECT_TRUE(suggestions[0].dependent_locality.empty());
340 EXPECT_EQ("Anqing Shi", suggestions[0].locality); 355 EXPECT_EQ("Anqing Shi", suggestions[0].locality);
341 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); 356 EXPECT_EQ("Anhui Sheng", suggestions[0].administrative_area);
342 } 357 }
343 358
344 TEST_F(PreloadAddressValidatorTest, SuggestForAdminAreaAndLocality) { 359 TEST_F(AddressValidatorTest, SuggestForAdminAreaAndLocality) {
345 validator_->LoadRules("CN", *loaded_); 360 validator_->LoadRules("CN");
346 AddressData address; 361 AddressData address;
347 address.region_code = "CN"; 362 address.region_code = "CN";
348 address.locality = "Anqing"; 363 address.locality = "Anqing";
349 address.administrative_area = "Anhui"; 364 address.administrative_area = "Anhui";
365 address.language_code = "zh-Latn";
350 366
351 std::vector<AddressData> suggestions; 367 std::vector<AddressData> suggestions;
352 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 368 EXPECT_EQ(AddressValidator::SUCCESS,
353 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); 369 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions));
354 ASSERT_EQ(1U, suggestions.size()); 370 ASSERT_EQ(1U, suggestions.size());
355 EXPECT_TRUE(suggestions[0].dependent_locality.empty()); 371 EXPECT_TRUE(suggestions[0].dependent_locality.empty());
356 EXPECT_TRUE(suggestions[0].locality.empty()); 372 EXPECT_TRUE(suggestions[0].locality.empty());
357 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); 373 EXPECT_EQ("Anhui Sheng", suggestions[0].administrative_area);
358 } 374 }
359 375
360 TEST_F(PreloadAddressValidatorTest, SuggestForDependentLocality) { 376 TEST_F(AddressValidatorTest, SuggestForDependentLocality) {
361 validator_->LoadRules("CN", *loaded_); 377 validator_->LoadRules("CN");
362 AddressData address; 378 AddressData address;
363 address.region_code = "CN"; 379 address.region_code = "CN";
364 address.dependent_locality = "Zongyang"; 380 address.dependent_locality = "Zongyang";
381 address.language_code = "zh-Latn";
365 382
366 std::vector<AddressData> suggestions; 383 std::vector<AddressData> suggestions;
367 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 384 EXPECT_EQ(AddressValidator::SUCCESS,
368 validator_->GetSuggestions( 385 validator_->GetSuggestions(
369 address, DEPENDENT_LOCALITY, 10, &suggestions)); 386 address, DEPENDENT_LOCALITY, 10, &suggestions));
370 ASSERT_EQ(1U, suggestions.size()); 387 ASSERT_EQ(1U, suggestions.size());
371 EXPECT_EQ("Zongyang Xian", suggestions[0].dependent_locality); 388 EXPECT_EQ("Zongyang Xian", suggestions[0].dependent_locality);
372 EXPECT_EQ("Anqing Shi", suggestions[0].locality); 389 EXPECT_EQ("Anqing Shi", suggestions[0].locality);
373 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); 390 EXPECT_EQ("Anhui Sheng", suggestions[0].administrative_area);
374 } 391 }
375 392
376 TEST_F(PreloadAddressValidatorTest, 393 TEST_F(AddressValidatorTest,
377 NoSuggestForDependentLocalityWithWrongAdminArea) { 394 NoSuggestForDependentLocalityWithWrongAdminArea) {
378 validator_->LoadRules("CN", *loaded_); 395 validator_->LoadRules("CN");
379 AddressData address; 396 AddressData address;
380 address.region_code = "CN"; 397 address.region_code = "CN";
381 address.dependent_locality = "Zongyang"; 398 address.dependent_locality = "Zongyang";
382 address.administrative_area = "Sichuan Sheng"; 399 address.administrative_area = "Sichuan Sheng";
400 address.language_code = "zh-Latn";
383 401
384 std::vector<AddressData> suggestions; 402 std::vector<AddressData> suggestions;
385 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 403 EXPECT_EQ(AddressValidator::SUCCESS,
386 validator_->GetSuggestions( 404 validator_->GetSuggestions(
387 address, DEPENDENT_LOCALITY, 10, &suggestions)); 405 address, DEPENDENT_LOCALITY, 10, &suggestions));
388 EXPECT_TRUE(suggestions.empty()); 406 EXPECT_TRUE(suggestions.empty());
389 } 407 }
390 408
391 TEST_F(PreloadAddressValidatorTest, EmptySuggestionsOverLimit) { 409 TEST_F(AddressValidatorTest, EmptySuggestionsOverLimit) {
392 AddressData address; 410 AddressData address;
393 address.region_code = "US"; 411 address.region_code = "US";
394 address.administrative_area = "A"; 412 address.administrative_area = "A";
395 413
396 std::vector<AddressData> suggestions; 414 std::vector<AddressData> suggestions;
397 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 415 EXPECT_EQ(AddressValidator::SUCCESS,
398 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions)); 416 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions));
399 EXPECT_TRUE(suggestions.empty()); 417 EXPECT_TRUE(suggestions.empty());
400 } 418 }
401 419
402 TEST_F(PreloadAddressValidatorTest, PreferShortSuggestions) { 420 TEST_F(AddressValidatorTest, PreferShortSuggestions) {
403 AddressData address; 421 AddressData address;
404 address.region_code = "US"; 422 address.region_code = "US";
405 address.administrative_area = "CA"; 423 address.administrative_area = "CA";
406 424
407 std::vector<AddressData> suggestions; 425 std::vector<AddressData> suggestions;
408 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 426 EXPECT_EQ(AddressValidator::SUCCESS,
409 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); 427 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions));
410 ASSERT_EQ(1U, suggestions.size()); 428 ASSERT_EQ(1U, suggestions.size());
411 EXPECT_EQ("CA", suggestions[0].administrative_area); 429 EXPECT_EQ("CA", suggestions[0].administrative_area);
412 } 430 }
413 431
414 TEST_F(PreloadAddressValidatorTest, SuggestTheSingleMatchForFullMatchName) { 432 TEST_F(AddressValidatorTest, SuggestTheSingleMatchForFullMatchName) {
415 AddressData address; 433 AddressData address;
416 address.region_code = "US"; 434 address.region_code = "US";
417 address.administrative_area = "Texas"; 435 address.administrative_area = "Texas";
418 436
419 std::vector<AddressData> suggestions; 437 std::vector<AddressData> suggestions;
420 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 438 EXPECT_EQ(AddressValidator::SUCCESS,
421 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); 439 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions));
422 ASSERT_EQ(1U, suggestions.size()); 440 ASSERT_EQ(1U, suggestions.size());
423 EXPECT_EQ("Texas", suggestions[0].administrative_area); 441 EXPECT_EQ("Texas", suggestions[0].administrative_area);
424 } 442 }
425 443
426 TEST_F(PreloadAddressValidatorTest, SuggestAdminArea) { 444 TEST_F(AddressValidatorTest, SuggestAdminArea) {
427 AddressData address; 445 AddressData address;
428 address.region_code = "US"; 446 address.region_code = "US";
429 address.administrative_area = "Cali"; 447 address.administrative_area = "Cali";
430 448
431 std::vector<AddressData> suggestions; 449 std::vector<AddressData> suggestions;
432 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 450 EXPECT_EQ(AddressValidator::SUCCESS,
433 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); 451 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions));
434 ASSERT_EQ(1U, suggestions.size()); 452 ASSERT_EQ(1U, suggestions.size());
435 EXPECT_EQ("California", suggestions[0].administrative_area); 453 EXPECT_EQ("California", suggestions[0].administrative_area);
436 } 454 }
437 455
438 TEST_F(PreloadAddressValidatorTest, MultipleSuggestions) { 456 TEST_F(AddressValidatorTest, MultipleSuggestions) {
439 AddressData address; 457 AddressData address;
440 address.region_code = "US"; 458 address.region_code = "US";
441 address.administrative_area = "MA"; 459 address.administrative_area = "MA";
442 460
443 std::vector<AddressData> suggestions; 461 std::vector<AddressData> suggestions;
444 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 462 EXPECT_EQ(AddressValidator::SUCCESS,
445 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); 463 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions));
446 EXPECT_LT(1U, suggestions.size()); 464 EXPECT_LT(1U, suggestions.size());
447 465
448 // Massachusetts should not be a suggestion, because it's already covered 466 // Massachusetts should not be a suggestion, because it's already covered
449 // under MA. 467 // under MA.
450 std::set<std::string> expected_suggestions; 468 std::set<std::string> expected_suggestions;
451 expected_suggestions.insert("MA"); 469 expected_suggestions.insert("MA");
452 expected_suggestions.insert("Maine"); 470 expected_suggestions.insert("Maine");
453 expected_suggestions.insert("Marshall Islands"); 471 expected_suggestions.insert("Marshall Islands");
454 expected_suggestions.insert("Maryland"); 472 expected_suggestions.insert("Maryland");
455 for (std::vector<AddressData>::const_iterator it = suggestions.begin(); 473 for (std::vector<AddressData>::const_iterator it = suggestions.begin();
456 it != suggestions.end(); ++it) { 474 it != suggestions.end(); ++it) {
457 expected_suggestions.erase(it->administrative_area); 475 expected_suggestions.erase(it->administrative_area);
458 } 476 }
459 EXPECT_TRUE(expected_suggestions.empty()); 477 EXPECT_TRUE(expected_suggestions.empty());
460 } 478 }
461 479
462 TEST_F(PreloadAddressValidatorTest, SuggestNonLatinKeyWhenLanguageMatches) { 480 TEST_F(AddressValidatorTest, SuggestNonLatinKeyWhenLanguageMatches) {
463 validator_->LoadRules("KR", *loaded_); 481 validator_->LoadRules("KR");
464 AddressData address; 482 AddressData address;
465 address.language_code = "ko"; 483 address.language_code = "ko";
466 address.region_code = "KR"; 484 address.region_code = "KR";
467 address.postal_code = "210-210"; 485 address.postal_code = "210-210";
468 486
469 std::vector<AddressData> suggestions; 487 std::vector<AddressData> suggestions;
470 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 488 EXPECT_EQ(AddressValidator::SUCCESS,
471 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); 489 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
472 ASSERT_EQ(1U, suggestions.size()); 490 ASSERT_EQ(1U, suggestions.size());
473 EXPECT_EQ("강원도", suggestions[0].administrative_area); 491 EXPECT_EQ("강원도", suggestions[0].administrative_area);
474 EXPECT_EQ("210-210", suggestions[0].postal_code); 492 EXPECT_EQ("210-210", suggestions[0].postal_code);
475 } 493 }
476 494
477 TEST_F(PreloadAddressValidatorTest, SuggestNonLatinKeyWhenUserInputIsNotLatin) { 495 TEST_F(AddressValidatorTest, SuggestNonLatinKeyWhenUserInputIsNotLatin) {
478 validator_->LoadRules("KR", *loaded_); 496 validator_->LoadRules("KR");
479 AddressData address; 497 AddressData address;
480 address.language_code = "en"; 498 address.language_code = "en";
481 address.region_code = "KR"; 499 address.region_code = "KR";
482 address.administrative_area = "강원"; 500 address.administrative_area = "강원";
483 501
484 std::vector<AddressData> suggestions; 502 std::vector<AddressData> suggestions;
485 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 503 EXPECT_EQ(AddressValidator::SUCCESS,
486 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions)); 504 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions));
487 ASSERT_EQ(1U, suggestions.size()); 505 ASSERT_EQ(1U, suggestions.size());
488 EXPECT_EQ("강원도", suggestions[0].administrative_area); 506 EXPECT_EQ("강원도", suggestions[0].administrative_area);
489 } 507 }
490 508
491 TEST_F(PreloadAddressValidatorTest, 509 TEST_F(AddressValidatorTest,
492 SuggestLatinNameWhenLanguageDiffersAndLatinNameAvailable) { 510 SuggestLatinNameWhenLanguageDiffersAndLatinNameAvailable) {
493 validator_->LoadRules("KR", *loaded_); 511 validator_->LoadRules("KR");
494 AddressData address; 512 AddressData address;
495 address.language_code = "en"; 513 address.language_code = "ko-Latn";
496 address.region_code = "KR"; 514 address.region_code = "KR";
497 address.postal_code = "210-210"; 515 address.postal_code = "210-210";
498 516
499 std::vector<AddressData> suggestions; 517 std::vector<AddressData> suggestions;
500 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 518 EXPECT_EQ(AddressValidator::SUCCESS,
501 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); 519 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
502 ASSERT_EQ(1U, suggestions.size()); 520 ASSERT_EQ(1U, suggestions.size());
503 EXPECT_EQ("Gangwon", suggestions[0].administrative_area); 521 EXPECT_EQ("Gangwon", suggestions[0].administrative_area);
504 EXPECT_EQ("210-210", suggestions[0].postal_code); 522 EXPECT_EQ("210-210", suggestions[0].postal_code);
505 } 523 }
506 524
507 TEST_F(PreloadAddressValidatorTest, SuggestLatinNameWhenUserInputIsLatin) { 525 TEST_F(AddressValidatorTest, NoSuggestionsForEmptyAddress) {
508 validator_->LoadRules("KR", *loaded_);
509 AddressData address;
510 address.language_code = "ko";
511 address.region_code = "KR";
512 address.administrative_area = "Gang";
513
514 std::vector<AddressData> suggestions;
515 EXPECT_EQ(PreloadAddressValidator::SUCCESS,
516 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions));
517 ASSERT_EQ(1U, suggestions.size());
518 EXPECT_EQ("Gangwon", suggestions[0].administrative_area);
519 }
520
521 TEST_F(PreloadAddressValidatorTest, NoSuggestionsForEmptyAddress) {
522 AddressData address; 526 AddressData address;
523 address.region_code = "US"; 527 address.region_code = "US";
524 528
525 std::vector<AddressData> suggestions; 529 std::vector<AddressData> suggestions;
526 EXPECT_EQ( 530 EXPECT_EQ(
527 PreloadAddressValidator::SUCCESS, 531 AddressValidator::SUCCESS,
528 validator_->GetSuggestions(address, POSTAL_CODE, 999, &suggestions)); 532 validator_->GetSuggestions(address, POSTAL_CODE, 999, &suggestions));
529 EXPECT_TRUE(suggestions.empty()); 533 EXPECT_TRUE(suggestions.empty());
530 } 534 }
531 535
532 TEST_F(PreloadAddressValidatorTest, SuggestionIncludesCountry) { 536 TEST_F(AddressValidatorTest, SuggestionIncludesCountry) {
533 AddressData address; 537 AddressData address;
534 address.region_code = "US"; 538 address.region_code = "US";
535 address.postal_code = "90291"; 539 address.postal_code = "90291";
536 540
537 std::vector<AddressData> suggestions; 541 std::vector<AddressData> suggestions;
538 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 542 EXPECT_EQ(AddressValidator::SUCCESS,
539 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); 543 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
540 ASSERT_EQ(1U, suggestions.size()); 544 ASSERT_EQ(1U, suggestions.size());
541 EXPECT_EQ("US", suggestions[0].region_code); 545 EXPECT_EQ("US", suggestions[0].region_code);
542 } 546 }
543 547
544 TEST_F(PreloadAddressValidatorTest, 548 TEST_F(AddressValidatorTest, InvalidPostalCodeNoSuggestions) {
549 AddressData address;
550 address.region_code = "US";
551 address.postal_code = "0";
552
553 std::vector<AddressData> suggestions;
554 EXPECT_EQ(
555 AddressValidator::SUCCESS,
556 validator_->GetSuggestions(address, POSTAL_CODE, 999, &suggestions));
557 EXPECT_TRUE(suggestions.empty());
558 }
559
560 TEST_F(AddressValidatorTest, MismatchedPostalCodeNoSuggestions) {
561 AddressData address;
562 address.region_code = "US";
563 address.administrative_area = "TX";
564 address.postal_code = "90291";
565
566 std::vector<AddressData> suggestions;
567 EXPECT_EQ(
568 AddressValidator::SUCCESS,
569 validator_->GetSuggestions(address, POSTAL_CODE, 999, &suggestions));
570 EXPECT_TRUE(suggestions.empty());
571 }
572
573 TEST_F(AddressValidatorTest,
545 SuggestOnlyForAdministrativeAreasAndPostalCode) { 574 SuggestOnlyForAdministrativeAreasAndPostalCode) {
546 AddressData address; 575 AddressData address;
547 address.region_code = "US"; 576 address.region_code = "US";
548 address.administrative_area = "CA"; 577 address.administrative_area = "CA";
549 address.locality = "Los Angeles"; 578 address.locality = "Los Angeles";
550 address.dependent_locality = "Venice"; 579 address.dependent_locality = "Venice";
551 address.postal_code = "90291"; 580 address.postal_code = "90291";
552 address.sorting_code = "123"; 581 address.sorting_code = "123";
553 address.address_line.push_back("123 Main St"); 582 address.address_line.push_back("123 Main St");
554 address.recipient = "Jon Smith"; 583 address.recipient = "Jon Smith";
555 584
556 // Fields that should not have suggestions in US. 585 // Fields that should not have suggestions in US.
557 static const AddressField kNoSugestFields[] = { 586 static const AddressField kNoSugestFields[] = {
558 COUNTRY, 587 COUNTRY,
559 LOCALITY, 588 LOCALITY,
560 DEPENDENT_LOCALITY, 589 DEPENDENT_LOCALITY,
561 SORTING_CODE, 590 SORTING_CODE,
562 STREET_ADDRESS, 591 STREET_ADDRESS,
563 RECIPIENT 592 RECIPIENT
564 }; 593 };
565 594
566 static const size_t kNumNoSuggestFields = 595 static const size_t kNumNoSuggestFields =
567 sizeof kNoSugestFields / sizeof (AddressField); 596 sizeof kNoSugestFields / sizeof (AddressField);
568 597
569 for (size_t i = 0; i < kNumNoSuggestFields; ++i) { 598 for (size_t i = 0; i < kNumNoSuggestFields; ++i) {
570 std::vector<AddressData> suggestions; 599 std::vector<AddressData> suggestions;
571 EXPECT_EQ(PreloadAddressValidator::SUCCESS, 600 EXPECT_EQ(AddressValidator::SUCCESS,
572 validator_->GetSuggestions( 601 validator_->GetSuggestions(
573 address, kNoSugestFields[i], 999, &suggestions)); 602 address, kNoSugestFields[i], 999, &suggestions));
574 EXPECT_TRUE(suggestions.empty()); 603 EXPECT_TRUE(suggestions.empty());
575 } 604 }
576 } 605 }
577 606
578 TEST_F(PreloadAddressValidatorTest, CanonicalizeUsAdminAreaName) { 607 TEST_F(AddressValidatorTest, SuggestionsAreCleared) {
608 AddressData address;
609 address.region_code = "US";
610
611 std::vector<AddressData> suggestions(1, address);
612 EXPECT_EQ(AddressValidator::SUCCESS,
613 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
614 EXPECT_TRUE(suggestions.empty());
615 }
616
617 TEST_F(AddressValidatorTest, CanonicalizeUsAdminAreaName) {
579 AddressData address; 618 AddressData address;
580 address.region_code = "US"; 619 address.region_code = "US";
581 address.administrative_area = "cALIFORNIa"; 620 address.administrative_area = "cALIFORNIa";
582 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address)); 621 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address));
583 EXPECT_EQ("CA", address.administrative_area); 622 EXPECT_EQ("CA", address.administrative_area);
584 } 623 }
585 624
586 TEST_F(PreloadAddressValidatorTest, CanonicalizeUsAdminAreaKey) { 625 TEST_F(AddressValidatorTest, CanonicalizeUsAdminAreaKey) {
587 AddressData address; 626 AddressData address;
588 address.region_code = "US"; 627 address.region_code = "US";
589 address.administrative_area = "CA"; 628 address.administrative_area = "CA";
590 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address)); 629 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address));
591 EXPECT_EQ("CA", address.administrative_area); 630 EXPECT_EQ("CA", address.administrative_area);
592 } 631 }
593 632
594 TEST_F(PreloadAddressValidatorTest, CanonicalizeJpAdminAreaKey) { 633 TEST_F(AddressValidatorTest, CanonicalizeJpAdminAreaKey) {
595 validator_->LoadRules("JP", *loaded_); 634 validator_->LoadRules("JP");
596 AddressData address; 635 AddressData address;
597 address.region_code = "JP"; 636 address.region_code = "JP";
598 address.administrative_area = "東京都"; 637 address.administrative_area = "東京都";
599 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address)); 638 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address));
600 EXPECT_EQ("東京都", address.administrative_area); 639 EXPECT_EQ("東京都", address.administrative_area);
601 } 640 }
602 641
603 TEST_F(PreloadAddressValidatorTest, CanonicalizeJpAdminAreaLatinName) { 642 TEST_F(AddressValidatorTest, CanonicalizeJpAdminAreaLatinName) {
604 validator_->LoadRules("JP", *loaded_); 643 validator_->LoadRules("JP");
605 AddressData address; 644 AddressData address;
606 address.region_code = "JP"; 645 address.region_code = "JP";
607 address.administrative_area = "tOKYo"; 646 address.administrative_area = "tOKYo";
608 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address)); 647 EXPECT_TRUE(validator_->CanonicalizeAdministrativeArea(&address));
609 EXPECT_EQ("TOKYO", address.administrative_area); 648 EXPECT_EQ("TOKYO", address.administrative_area);
610 } 649 }
611 650
612 } // namespace 651 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698