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

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

Issue 389863002: Remove Chrome's own version of libaddressinput in favor of the upstream. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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
(Empty)
1 // Copyright (C) 2014 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (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
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language_code governing permissions and
13 // limitations under the License.
14
15 #include <libaddressinput/address_formatter.h>
16
17 #include <libaddressinput/address_data.h>
18
19 #include <string>
20 #include <vector>
21
22 #include <gtest/gtest.h>
23
24 namespace {
25
26 using i18n::addressinput::AddressData;
27 using i18n::addressinput::GetFormattedNationalAddress;
28 using i18n::addressinput::GetFormattedNationalAddressLine;
29 using i18n::addressinput::GetStreetAddressLinesAsSingleLine;
30
31 TEST(AddressFormatterTest, GetStreetAddressLinesAsSingleLine_1Line) {
32 AddressData address;
33 address.region_code = "US"; // Not used.
34 address.address_line.push_back("Line 1");
35
36 std::string result;
37 GetStreetAddressLinesAsSingleLine(address, &result);
38 EXPECT_EQ("Line 1", result);
39
40 // Setting the language_code, with one line, shouldn't affect anything.
41 address.language_code = "en";
42 GetStreetAddressLinesAsSingleLine(address, &result);
43 EXPECT_EQ("Line 1", result);
44
45 address.language_code = "zh-Hans";
46 GetStreetAddressLinesAsSingleLine(address, &result);
47 EXPECT_EQ("Line 1", result);
48 }
49
50 TEST(AddressFormatterTest, GetStreetAddressLinesAsSingleLine_2Lines) {
51 AddressData address;
52 address.region_code = "US"; // Not used.
53 address.address_line.push_back("Line 1");
54 address.address_line.push_back("Line 2");
55
56 std::string result;
57 GetStreetAddressLinesAsSingleLine(address, &result);
58 // Default separator if no language_code specified: ", "
59 EXPECT_EQ("Line 1, Line 2", result);
60
61 address.language_code = "en";
62 GetStreetAddressLinesAsSingleLine(address, &result);
63 EXPECT_EQ("Line 1, Line 2", result);
64
65 address.language_code = "zh-Hans";
66 GetStreetAddressLinesAsSingleLine(address, &result);
67 // Chinese has no separator.
68 EXPECT_EQ("Line 1Line 2", result);
69
70 address.language_code = "ko";
71 GetStreetAddressLinesAsSingleLine(address, &result);
72 EXPECT_EQ("Line 1 Line 2", result);
73
74 address.language_code = "ar";
75 GetStreetAddressLinesAsSingleLine(address, &result);
76 EXPECT_EQ("Line 1\xD8\x8C" " Line 2", result); // Arabic comma.
77 }
78
79 TEST(AddressFormatterTest, GetStreetAddressLinesAsSingleLine_5Lines) {
80 AddressData address;
81 address.region_code = "US"; // Not used.
82 address.address_line.push_back("Line 1");
83 address.address_line.push_back("Line 2");
84 address.address_line.push_back("Line 3");
85 address.address_line.push_back("Line 4");
86 address.address_line.push_back("Line 5");
87 address.language_code = "fr";
88
89 std::string result;
90 GetStreetAddressLinesAsSingleLine(address, &result);
91 EXPECT_EQ(result, "Line 1, Line 2, Line 3, Line 4, Line 5");
92 }
93
94 TEST(AddressFormatterTest, GetFormattedNationalAddressLocalLanguage) {
95 AddressData address;
96 address.region_code = "NZ";
97 address.address_line.push_back("Rotopapa");
98 address.address_line.push_back("Irwell 3RD");
99 address.postal_code = "8704";
100 address.locality = "Leeston";
101
102 std::vector<std::string> expected;
103 expected.push_back("Rotopapa");
104 expected.push_back("Irwell 3RD");
105 expected.push_back("Leeston 8704");
106
107 std::vector<std::string> lines;
108 GetFormattedNationalAddress(address, &lines);
109 EXPECT_EQ(expected, lines);
110
111 // Should be the same result no matter what the language_code is. We choose an
112 // unlikely language_code code to illustrate this.
113 address.language_code = "en-Latn-CN";
114
115 lines.clear();
116 GetFormattedNationalAddress(address, &lines);
117 EXPECT_EQ(expected, lines);
118
119 std::string one_line;
120 GetFormattedNationalAddressLine(address, &one_line);
121 EXPECT_EQ("Rotopapa, Irwell 3RD, Leeston 8704", one_line);
122 }
123
124 TEST(AddressFormatterTest, GetFormattedNationalAddressLatinFormat) {
125 /* 大安區 */
126 static const char kTaiwanCity[] = "\xE5\xA4\xA7\xE5\xAE\x89\xE5\x8D\x80";
127 /* 台北市 */
128 static const char kTaiwanAdmin[] = "\xE5\x8F\xB0\xE5\x8C\x97\xE5\xB8\x82";
129 /* 台灣信義路三段33號 */
130 static const char kTaiwanStreetLine[]= "\xE5\x8F\xB0\xE7\x81\xA3\xE4\xBF\xA1"
131 "\xE7\xBE\xA9\xE8\xB7\xAF\xE4\xB8\x89\xE6\xAE\xB5" "33" "\xE8\x99\x9F";
132 static const char kPostalCode[] = "106";
133
134 AddressData address;
135 address.region_code = "TW";
136 address.address_line.push_back(kTaiwanStreetLine);
137 address.postal_code = kPostalCode;
138 address.locality = kTaiwanCity;
139 address.administrative_area = kTaiwanAdmin;
140 address.language_code = "zh-Hant";
141
142 std::vector<std::string> expected;
143 expected.push_back(kPostalCode);
144 expected.push_back(std::string(kTaiwanAdmin).append(kTaiwanCity));
145 expected.push_back(kTaiwanStreetLine);
146
147 std::vector<std::string> lines;
148 GetFormattedNationalAddress(address, &lines);
149 EXPECT_EQ(expected, lines);
150
151 std::string one_line;
152 GetFormattedNationalAddressLine(address, &one_line);
153 // No separators expected for Chinese.
154 EXPECT_EQ(std::string(kPostalCode).append(kTaiwanAdmin).append(kTaiwanCity)
155 .append(kTaiwanStreetLine),
156 one_line);
157
158 // Changing to the latin variant will change the output.
159 AddressData latin_address;
160 latin_address.region_code = "TW";
161 latin_address.address_line.push_back("No. 33, Section 3 Xinyi Rd");
162 latin_address.postal_code = kPostalCode;
163 latin_address.locality = "Da-an District";
164 latin_address.administrative_area = "Taipei City";
165 latin_address.language_code = "zh-Latn";
166
167 std::vector<std::string> expected_latin;
168 expected_latin.push_back("No. 33, Section 3 Xinyi Rd");
169 expected_latin.push_back("Da-an District, Taipei City 106");
170
171 lines.clear();
172 GetFormattedNationalAddress(latin_address, &lines);
173 EXPECT_EQ(expected_latin, lines);
174
175 GetFormattedNationalAddressLine(latin_address, &one_line);
176 // We expect ", " as the new-line replacements for zh-Latn.
177 EXPECT_EQ("No. 33, Section 3 Xinyi Rd, Da-an District, Taipei City 106",
178 one_line);
179 }
180
181 TEST(AddressFormatterTest, GetFormattedNationalAddressMultilingualCountry) {
182 AddressData address;
183 address.region_code = "CA";
184 address.address_line.push_back("5 Rue du Tresor");
185 address.address_line.push_back("Apt. 4");
186 address.administrative_area = "QC";
187 address.postal_code = "G1R 123";
188 address.locality = "Montmagny";
189 address.language_code = "fr";
190
191 std::vector<std::string> expected;
192 expected.push_back("5 Rue du Tresor");
193 expected.push_back("Apt. 4");
194 expected.push_back("Montmagny QC G1R 123");
195
196 std::vector<std::string> lines;
197 GetFormattedNationalAddress(address, &lines);
198 EXPECT_EQ(expected, lines);
199 }
200
201 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698