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

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

Issue 298863012: Use upstream libaddressinput in Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Self review. 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
(Empty)
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
please use gerrit instead 2014/06/05 22:22:49 Remove this file! (PreloadAddressValidatorTests ha
please use gerrit instead 2014/06/09 23:28:17 Done.
3 // found in the LICENSE file.
4
5 #include "third_party/libaddressinput/chromium/suggestions.h"
6
7 // Use "base/memory/scoped_ptr.h" instead.
8 #define I18N_ADDRESSINPUT_UTIL_SCOPED_PTR_H_
9
10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_da ta.h"
14 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/null_stora ge.h"
15 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/preload_su pplier.h"
16 #include "third_party/libaddressinput/src/cpp/test/fake_downloader.h"
17
18 namespace autofill {
19
20 /*
21 class SuggestionsTest : public testing::Test {
22 protected:
23 SuggestionsTest() : suggestions_() {}
24
25 virtual ~SuggestionsTest() {}
26
27 Suggestions suggestions_;
28
29 private:
30 DISALLOW_COPY_AND_ASSIGN(SuggestionsTest);
31 };
32
33 TEST_F(SuggestionsTest, Basic) {}
34
35 TEST_F(ChromeAddressValidatorTest, SuggestAdminAreaForPostalCode) {
36 AddressData address;
37 address.region_code = "US";
38 address.postal_code = "90291";
39
40 std::vector<AddressData> suggestions;
41 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
42 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
43 ASSERT_EQ(1U, suggestions.size());
44 EXPECT_EQ("CA", suggestions[0].administrative_area);
45 EXPECT_EQ("90291", suggestions[0].postal_code);
46 }
47
48 TEST_F(ChromeAddressValidatorTest, SuggestLocalityForPostalCodeWithAdminArea) {
49 validator_->LoadRules("TW");
50 AddressData address;
51 address.region_code = "TW";
52 address.postal_code = "515";
53 address.administrative_area = "Changhua";
54
55 std::vector<AddressData> suggestions;
56 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
57 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
58 ASSERT_EQ(1U, suggestions.size());
59 EXPECT_EQ("Dacun Township", suggestions[0].locality);
60 EXPECT_EQ("Changhua County", suggestions[0].administrative_area);
61 EXPECT_EQ("515", suggestions[0].postal_code);
62 }
63
64 TEST_F(ChromeAddressValidatorTest, SuggestAdminAreaForPostalCodeWithLocality) {
65 validator_->LoadRules("TW");
66 AddressData address;
67 address.region_code = "TW";
68 address.postal_code = "515";
69 address.locality = "Dacun";
70
71 std::vector<AddressData> suggestions;
72 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
73 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
74 ASSERT_EQ(1U, suggestions.size());
75 EXPECT_EQ("Dacun Township", suggestions[0].locality);
76 EXPECT_EQ("Changhua County", suggestions[0].administrative_area);
77 EXPECT_EQ("515", suggestions[0].postal_code);
78 }
79
80 TEST_F(ChromeAddressValidatorTest, NoSuggestForPostalCodeWithWrongAdminArea) {
81 AddressData address;
82 address.region_code = "US";
83 address.postal_code = "90066";
84 address.postal_code = "TX";
85
86 std::vector<AddressData> suggestions;
87 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
88 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
89 EXPECT_TRUE(suggestions.empty());
90 }
91
92 TEST_F(ChromeAddressValidatorTest, SuggestForLocality) {
93 validator_->LoadRules("CN");
94 AddressData address;
95 address.region_code = "CN";
96 address.locality = "Anqin";
97
98 std::vector<AddressData> suggestions;
99 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
100 validator_->GetSuggestions(address, LOCALITY, 10, &suggestions));
101 ASSERT_EQ(1U, suggestions.size());
102 EXPECT_EQ("Anqing Shi", suggestions[0].locality);
103 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area);
104 }
105
106 TEST_F(ChromeAddressValidatorTest, SuggestForLocalityAndAdminArea) {
107 validator_->LoadRules("CN");
108 AddressData address;
109 address.region_code = "CN";
110 address.locality = "Anqing";
111 address.administrative_area = "Anhui";
112
113 std::vector<AddressData> suggestions;
114 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
115 validator_->GetSuggestions(address, LOCALITY, 10, &suggestions));
116 ASSERT_EQ(1U, suggestions.size());
117 EXPECT_TRUE(suggestions[0].dependent_locality.empty());
118 EXPECT_EQ("Anqing Shi", suggestions[0].locality);
119 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area);
120 }
121
122 TEST_F(ChromeAddressValidatorTest, SuggestForAdminAreaAndLocality) {
123 validator_->LoadRules("CN");
124 AddressData address;
125 address.region_code = "CN";
126 address.locality = "Anqing";
127 address.administrative_area = "Anhui";
128
129 std::vector<AddressData> suggestions;
130 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
131 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions));
132 ASSERT_EQ(1U, suggestions.size());
133 EXPECT_TRUE(suggestions[0].dependent_locality.empty());
134 EXPECT_TRUE(suggestions[0].locality.empty());
135 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area);
136 }
137
138 TEST_F(ChromeAddressValidatorTest, SuggestForDependentLocality) {
139 validator_->LoadRules("CN");
140 AddressData address;
141 address.region_code = "CN";
142 address.dependent_locality = "Zongyang";
143
144 std::vector<AddressData> suggestions;
145 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
146 validator_->GetSuggestions(
147 address, DEPENDENT_LOCALITY, 10, &suggestions));
148 ASSERT_EQ(1U, suggestions.size());
149 EXPECT_EQ("Zongyang Xian", suggestions[0].dependent_locality);
150 EXPECT_EQ("Anqing Shi", suggestions[0].locality);
151 EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area);
152 }
153
154 TEST_F(ChromeAddressValidatorTest,
155 NoSuggestForDependentLocalityWithWrongAdminArea) {
156 validator_->LoadRules("CN");
157 AddressData address;
158 address.region_code = "CN";
159 address.dependent_locality = "Zongyang";
160 address.administrative_area = "Sichuan Sheng";
161
162 std::vector<AddressData> suggestions;
163 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
164 validator_->GetSuggestions(
165 address, DEPENDENT_LOCALITY, 10, &suggestions));
166 EXPECT_TRUE(suggestions.empty());
167 }
168
169 TEST_F(ChromeAddressValidatorTest, EmptySuggestionsOverLimit) {
170 AddressData address;
171 address.region_code = "US";
172 address.administrative_area = "A";
173
174 std::vector<AddressData> suggestions;
175 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
176 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions));
177 EXPECT_TRUE(suggestions.empty());
178 }
179
180 TEST_F(ChromeAddressValidatorTest, PreferShortSuggestions) {
181 AddressData address;
182 address.region_code = "US";
183 address.administrative_area = "CA";
184
185 std::vector<AddressData> suggestions;
186 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
187 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions));
188 ASSERT_EQ(1U, suggestions.size());
189 EXPECT_EQ("CA", suggestions[0].administrative_area);
190 }
191
192 TEST_F(ChromeAddressValidatorTest, SuggestTheSingleMatchForFullMatchName) {
193 AddressData address;
194 address.region_code = "US";
195 address.administrative_area = "Texas";
196
197 std::vector<AddressData> suggestions;
198 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
199 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions));
200 ASSERT_EQ(1U, suggestions.size());
201 EXPECT_EQ("Texas", suggestions[0].administrative_area);
202 }
203
204 TEST_F(ChromeAddressValidatorTest, SuggestAdminArea) {
205 AddressData address;
206 address.region_code = "US";
207 address.administrative_area = "Cali";
208
209 std::vector<AddressData> suggestions;
210 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
211 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions));
212 ASSERT_EQ(1U, suggestions.size());
213 EXPECT_EQ("California", suggestions[0].administrative_area);
214 }
215
216 TEST_F(ChromeAddressValidatorTest, MultipleSuggestions) {
217 AddressData address;
218 address.region_code = "US";
219 address.administrative_area = "MA";
220
221 std::vector<AddressData> suggestions;
222 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
223 validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions));
224 EXPECT_LT(1U, suggestions.size());
225
226 // Massachusetts should not be a suggestion, because it's already covered
227 // under MA.
228 std::set<std::string> expected_suggestions;
229 expected_suggestions.insert("MA");
230 expected_suggestions.insert("Maine");
231 expected_suggestions.insert("Marshall Islands");
232 expected_suggestions.insert("Maryland");
233 for (std::vector<AddressData>::const_iterator it = suggestions.begin();
234 it != suggestions.end(); ++it) {
235 expected_suggestions.erase(it->administrative_area);
236 }
237 EXPECT_TRUE(expected_suggestions.empty());
238 }
239
240 TEST_F(ChromeAddressValidatorTest, SuggestNonLatinKeyWhenLanguageMatches) {
241 validator_->LoadRules("KR");
242 AddressData address;
243 address.language_code = "ko";
244 address.region_code = "KR";
245 address.postal_code = "210-210";
246
247 std::vector<AddressData> suggestions;
248 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
249 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
250 ASSERT_EQ(1U, suggestions.size());
251 EXPECT_EQ("강원도", suggestions[0].administrative_area);
252 EXPECT_EQ("210-210", suggestions[0].postal_code);
253 }
254
255 TEST_F(ChromeAddressValidatorTest, SuggestNonLatinKeyWhenUserInputIsNotLatin) {
256 validator_->LoadRules("KR");
257 AddressData address;
258 address.language_code = "en";
259 address.region_code = "KR";
260 address.administrative_area = "강원";
261
262 std::vector<AddressData> suggestions;
263 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
264 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions));
265 ASSERT_EQ(1U, suggestions.size());
266 EXPECT_EQ("강원도", suggestions[0].administrative_area);
267 }
268
269 TEST_F(ChromeAddressValidatorTest,
270 SuggestLatinNameWhenLanguageDiffersAndLatinNameAvailable) {
271 validator_->LoadRules("KR");
272 AddressData address;
273 address.language_code = "en";
274 address.region_code = "KR";
275 address.postal_code = "210-210";
276
277 std::vector<AddressData> suggestions;
278 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
279 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
280 ASSERT_EQ(1U, suggestions.size());
281 EXPECT_EQ("Gangwon", suggestions[0].administrative_area);
282 EXPECT_EQ("210-210", suggestions[0].postal_code);
283 }
284
285 TEST_F(ChromeAddressValidatorTest, SuggestLatinNameWhenUserInputIsLatin) {
286 validator_->LoadRules("KR");
287 AddressData address;
288 address.language_code = "ko";
289 address.region_code = "KR";
290 address.administrative_area = "Gang";
291
292 std::vector<AddressData> suggestions;
293 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
294 validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions));
295 ASSERT_EQ(1U, suggestions.size());
296 EXPECT_EQ("Gangwon", suggestions[0].administrative_area);
297 }
298
299 TEST_F(ChromeAddressValidatorTest, NoSuggestionsForEmptyAddress) {
300 AddressData address;
301 address.region_code = "US";
302
303 std::vector<AddressData> suggestions;
304 EXPECT_EQ(
305 ChromeAddressValidator::SUCCESS,
306 validator_->GetSuggestions(address, POSTAL_CODE, 999, &suggestions));
307 EXPECT_TRUE(suggestions.empty());
308 }
309
310 TEST_F(ChromeAddressValidatorTest, SuggestionIncludesCountry) {
311 AddressData address;
312 address.region_code = "US";
313 address.postal_code = "90291";
314
315 std::vector<AddressData> suggestions;
316 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
317 validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions));
318 ASSERT_EQ(1U, suggestions.size());
319 EXPECT_EQ("US", suggestions[0].region_code);
320 }
321
322 TEST_F(ChromeAddressValidatorTest, SuggestOnlyForAdministrativeAreasAndPostalCod e) {
323 AddressData address;
324 address.region_code = "US";
325 address.administrative_area = "CA";
326 address.locality = "Los Angeles";
327 address.dependent_locality = "Venice";
328 address.postal_code = "90291";
329 address.sorting_code = "123";
330 address.address_line.push_back("123 Main St");
331 address.recipient = "Jon Smith";
332
333 // Fields that should not have suggestions in US.
334 static const AddressField kNoSugestFields[] = {
335 COUNTRY,
336 LOCALITY,
337 DEPENDENT_LOCALITY,
338 SORTING_CODE,
339 STREET_ADDRESS,
340 RECIPIENT
341 };
342
343 static const size_t kNumNoSuggestFields =
344 sizeof kNoSugestFields / sizeof (AddressField);
345
346 for (size_t i = 0; i < kNumNoSuggestFields; ++i) {
347 std::vector<AddressData> suggestions;
348 EXPECT_EQ(ChromeAddressValidator::SUCCESS,
349 validator_->GetSuggestions(
350 address, kNoSugestFields[i], 999, &suggestions));
351 EXPECT_TRUE(suggestions.empty());
352 }
353 }
354 */
355
356 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698