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

Side by Side Diff: third_party/libaddressinput/chromium/cpp/test/address_data_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,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and 12 // See the License for the specific language governing permissions and
13 // limitations under the License. 13 // limitations under the License.
14 14
15 #include <libaddressinput/address_data.h> 15 #include <libaddressinput/address_data.h>
16 16
17 #include <string> 17 #include <libaddressinput/address_field.h>
18 #include <vector> 18
19 #include <sstream>
19 20
20 #include <gtest/gtest.h> 21 #include <gtest/gtest.h>
21 22
22 namespace { 23 namespace {
23 24
24 using i18n::addressinput::AddressData; 25 using i18n::addressinput::AddressData;
26 using i18n::addressinput::AddressField;
25 27
26 TEST(AddressDataTest, FormatForDisplayEmpty) { 28 using i18n::addressinput::COUNTRY;
29 using i18n::addressinput::ADMIN_AREA;
30 using i18n::addressinput::LOCALITY;
31 using i18n::addressinput::DEPENDENT_LOCALITY;
32 using i18n::addressinput::SORTING_CODE;
33 using i18n::addressinput::POSTAL_CODE;
34 using i18n::addressinput::STREET_ADDRESS;
35 using i18n::addressinput::RECIPIENT;
36
37 TEST(AddressDataTest, GetFieldValue) {
27 AddressData address; 38 AddressData address;
28 std::vector<std::string> actual; 39 address.region_code = "rrr";
29 address.FormatForDisplay(&actual); 40 address.administrative_area = "sss";
30 EXPECT_EQ(std::vector<std::string>(), actual); 41 address.locality = "ccc";
42 address.dependent_locality = "ddd";
43 address.sorting_code = "xxx";
44 address.postal_code = "zzz";
45 address.recipient = "nnn";
46
47 EXPECT_EQ(address.region_code,
48 address.GetFieldValue(COUNTRY));
49 EXPECT_EQ(address.administrative_area,
50 address.GetFieldValue(ADMIN_AREA));
51 EXPECT_EQ(address.locality,
52 address.GetFieldValue(LOCALITY));
53 EXPECT_EQ(address.dependent_locality,
54 address.GetFieldValue(DEPENDENT_LOCALITY));
55 EXPECT_EQ(address.sorting_code,
56 address.GetFieldValue(SORTING_CODE));
57 EXPECT_EQ(address.postal_code,
58 address.GetFieldValue(POSTAL_CODE));
59 EXPECT_EQ(address.recipient,
60 address.GetFieldValue(RECIPIENT));
31 } 61 }
32 62
33 TEST(AddressDataTest, FormatForDisplayUs) { 63 TEST(AddressDataTest, GetRepeatedFieldValue) {
34 AddressData address; 64 AddressData address;
35 address.country_code = "US"; 65 address.address_line.push_back("aaa");
36 address.administrative_area = "Texas"; 66 address.address_line.push_back("222");
37 address.locality = "Houston"; 67 EXPECT_EQ(address.address_line,
38 address.postal_code = "77005"; 68 address.GetRepeatedFieldValue(STREET_ADDRESS));
39 address.address_lines.push_back("123 Main St");
40 address.address_lines.push_back("Apt 2");
41 address.recipient = "John Doe";
42
43 std::vector<std::string> actual;
44 address.FormatForDisplay(&actual);
45
46 std::vector<std::string> expected;
47 expected.push_back(address.recipient);
48 expected.insert(expected.end(),
49 address.address_lines.begin(),
50 address.address_lines.end());
51 expected.push_back(address.locality + ", " + address.administrative_area +
52 " " + address.postal_code);
53
54 EXPECT_EQ(expected, actual);
55 } 69 }
56 70
57 TEST(AddressDataTest, FormatForDisplayAr) { 71 TEST(AddressDataTest, IsFieldEmpty) {
58 AddressData address; 72 AddressData address;
59 address.country_code = "AR";
60 address.administrative_area = "Capital Federal";
61 address.locality = "Buenos Aires";
62 address.postal_code = "C1001AFB";
63 address.address_lines.push_back("Su Calle 123");
64 address.address_lines.push_back("5° Piso");
65 address.recipient = "Juan Perez";
66 73
67 std::vector<std::string> actual; 74 EXPECT_TRUE(address.IsFieldEmpty(COUNTRY));
68 address.FormatForDisplay(&actual); 75 EXPECT_TRUE(address.IsFieldEmpty(ADMIN_AREA));
76 EXPECT_TRUE(address.IsFieldEmpty(LOCALITY));
77 EXPECT_TRUE(address.IsFieldEmpty(DEPENDENT_LOCALITY));
78 EXPECT_TRUE(address.IsFieldEmpty(SORTING_CODE));
79 EXPECT_TRUE(address.IsFieldEmpty(POSTAL_CODE));
80 EXPECT_TRUE(address.IsFieldEmpty(STREET_ADDRESS));
81 EXPECT_TRUE(address.IsFieldEmpty(RECIPIENT));
69 82
70 std::vector<std::string> expected; 83 address.region_code = "rrr";
71 expected.push_back(address.recipient); 84 address.administrative_area = "sss";
72 expected.insert(expected.end(), 85 address.locality = "ccc";
73 address.address_lines.begin(), 86 address.dependent_locality = "ddd";
74 address.address_lines.end()); 87 address.sorting_code = "xxx";
75 expected.push_back(address.postal_code + " " + address.locality); 88 address.postal_code = "zzz";
76 expected.push_back(address.administrative_area); 89 address.address_line.push_back("aaa");
90 address.recipient = "nnn";
77 91
78 EXPECT_EQ(expected, actual); 92 EXPECT_FALSE(address.IsFieldEmpty(COUNTRY));
93 EXPECT_FALSE(address.IsFieldEmpty(ADMIN_AREA));
94 EXPECT_FALSE(address.IsFieldEmpty(LOCALITY));
95 EXPECT_FALSE(address.IsFieldEmpty(DEPENDENT_LOCALITY));
96 EXPECT_FALSE(address.IsFieldEmpty(SORTING_CODE));
97 EXPECT_FALSE(address.IsFieldEmpty(POSTAL_CODE));
98 EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS));
99 EXPECT_FALSE(address.IsFieldEmpty(RECIPIENT));
79 } 100 }
80 101
81 TEST(AddressDataTest, FormatForDisplayJp) { 102 TEST(AddressDataTest, IsFieldEmptyWhitespace) {
82 AddressData address; 103 AddressData address;
83 address.country_code = "JP"; 104 address.recipient = " ";
84 address.language_code = "ja"; 105 EXPECT_TRUE(address.IsFieldEmpty(RECIPIENT));
85 address.administrative_area = "東京都"; 106 address.recipient = "abc";
86 address.locality = "渋谷区"; 107 EXPECT_FALSE(address.IsFieldEmpty(RECIPIENT));
87 address.postal_code = "150-8512"; 108 address.recipient = " b ";
88 address.address_lines.push_back("桜丘町26-1"); 109 EXPECT_FALSE(address.IsFieldEmpty(RECIPIENT));
89 address.address_lines.push_back("セルリアンタワー6階");
90 address.recipient = "村上 美紀";
91
92 std::vector<std::string> actual;
93 address.FormatForDisplay(&actual);
94
95 std::vector<std::string> expected;
96 expected.push_back("〒" + address.postal_code);
97 expected.push_back(address.administrative_area + address.locality);
98 expected.insert(expected.end(),
99 address.address_lines.begin(),
100 address.address_lines.end());
101 expected.push_back(address.recipient);
102
103 EXPECT_EQ(expected, actual);
104 } 110 }
105 111
106 TEST(AddressDataTest, FormatForDisplayJpLatn) { 112 TEST(AddressDataTest, IsFieldEmptyVector) {
107 AddressData address; 113 AddressData address;
108 address.country_code = "JP"; 114 EXPECT_TRUE(address.IsFieldEmpty(STREET_ADDRESS));
109 address.language_code = "ja-latn"; 115 address.address_line.push_back("");
110 address.administrative_area = "Tokyo"; 116 EXPECT_TRUE(address.IsFieldEmpty(STREET_ADDRESS));
111 address.locality = "Shibuya-ku"; 117 address.address_line.push_back("aaa");
112 address.postal_code = "150-8512"; 118 EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS));
113 address.address_lines.push_back("26-1 Sakuragaoka-cho"); 119 address.address_line.push_back("");
114 address.address_lines.push_back("Cerulean Tower 6F"); 120 EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS));
115 address.recipient = "Miki Murakami";
116
117 std::vector<std::string> actual;
118 address.FormatForDisplay(&actual);
119
120 std::vector<std::string> expected;
121 expected.push_back(address.recipient);
122 expected.insert(expected.end(),
123 address.address_lines.begin(),
124 address.address_lines.end());
125 expected.push_back(address.locality + ", "+ address.administrative_area);
126 expected.push_back(address.postal_code);
127
128 EXPECT_EQ(expected, actual);
129 } 121 }
130 122
131 TEST(AddressDataTest, FormatForDisplayJpLatnCapitalized) { 123 TEST(AddressDataTest, IsFieldEmptyVectorWhitespace) {
132 AddressData address; 124 AddressData address;
133 address.country_code = "JP"; 125 address.address_line.push_back(" ");
134 address.language_code = "ja-Latn"; 126 address.address_line.push_back(" ");
135 address.administrative_area = "Tokyo"; 127 address.address_line.push_back(" ");
136 address.locality = "Shibuya-ku"; 128 EXPECT_TRUE(address.IsFieldEmpty(STREET_ADDRESS));
137 address.postal_code = "150-8512"; 129 address.address_line.clear();
138 address.address_lines.push_back("26-1 Sakuragaoka-cho"); 130 address.address_line.push_back("abc");
139 address.address_lines.push_back("Cerulean Tower 6F"); 131 EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS));
140 address.recipient = "Miki Murakami"; 132 address.address_line.clear();
141 133 address.address_line.push_back(" ");
142 std::vector<std::string> actual; 134 address.address_line.push_back(" b ");
143 address.FormatForDisplay(&actual); 135 address.address_line.push_back(" ");
144 136 EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS));
145 std::vector<std::string> expected;
146 expected.push_back(address.recipient);
147 expected.insert(expected.end(),
148 address.address_lines.begin(),
149 address.address_lines.end());
150 expected.push_back(address.locality + ", "+ address.administrative_area);
151 expected.push_back(address.postal_code);
152
153 EXPECT_EQ(expected, actual);
154 } 137 }
155 138
156 TEST(AddressDataTest, FormatForDisplayJpLatnUs) { 139 TEST(AddressDataTest, StreamFunction) {
140 std::ostringstream oss;
157 AddressData address; 141 AddressData address;
158 address.country_code = "JP"; 142 address.address_line.push_back("Line 1");
159 address.language_code = "ja-latn-US"; 143 address.address_line.push_back("Line 2");
160 address.administrative_area = "Tokyo"; 144 address.recipient = "N";
161 address.locality = "Shibuya-ku"; 145 address.region_code = "R";
162 address.postal_code = "150-8512"; 146 address.postal_code = "Z";
163 address.address_lines.push_back("26-1 Sakuragaoka-cho"); 147 address.administrative_area = "S";
164 address.address_lines.push_back("Cerulean Tower 6F"); 148 address.locality = "C";
165 address.recipient = "Miki Murakami"; 149 address.dependent_locality = "D";
166 150 address.sorting_code = "X";
167 std::vector<std::string> actual; 151 address.language_code = "zh-Hant";
168 address.FormatForDisplay(&actual); 152 oss << address;
169 153 EXPECT_EQ("region_code: \"R\"\n"
170 std::vector<std::string> expected; 154 "administrative_area: \"S\"\n"
171 expected.push_back(address.recipient); 155 "locality: \"C\"\n"
172 expected.insert(expected.end(), 156 "dependent_locality: \"D\"\n"
173 address.address_lines.begin(), 157 "postal_code: \"Z\"\n"
174 address.address_lines.end()); 158 "sorting_code: \"X\"\n"
175 expected.push_back(address.locality + ", "+ address.administrative_area); 159 "address_line: \"Line 1\"\n"
176 expected.push_back(address.postal_code); 160 "address_line: \"Line 2\"\n"
177 161 "language_code: \"zh-Hant\"\n"
178 EXPECT_EQ(expected, actual); 162 "recipient: \"N\"\n", oss.str());
179 } 163 }
180 164
181 TEST(AddressDataTest, FormatForDisplayWithStreetCi) { 165 TEST(AddressDataTest, TestEquals) {
182 AddressData address; 166 AddressData address;
183 address.country_code = "CI"; 167 address.address_line.push_back("Line 1");
184 address.address_lines.push_back("Street Line 1"); 168 address.address_line.push_back("Line 2");
185 address.locality = "City Name"; 169 address.recipient = "N";
186 address.sorting_code = "123CEDEX"; 170 address.region_code = "R";
171 address.postal_code = "Z";
172 address.administrative_area = "S";
173 address.locality = "C";
174 address.dependent_locality = "D";
175 address.sorting_code = "X";
176 address.language_code = "zh-Hant";
187 177
188 std::vector<std::string> actual; 178 AddressData clone = address;
189 address.FormatForDisplay(&actual);
190 179
191 std::vector<std::string> expected( 180 EXPECT_EQ(address, clone);
192 1, 181 clone.language_code.clear();
193 address.sorting_code + " " + 182 EXPECT_FALSE(address == clone);
194 address.address_lines[0] + " " +
195 address.locality + " " +
196 address.sorting_code);
197
198 EXPECT_EQ(expected, actual);
199 } 183 }
200 184
201 TEST(AddressDataTest, FormatForDisplayWithoutStreetCi) { 185 #ifndef NDEBUG
186
187 TEST(AddressDataTest, GetFieldValueInvalid) {
202 AddressData address; 188 AddressData address;
203 address.country_code = "CI"; 189 ASSERT_DEATH(address.GetFieldValue(STREET_ADDRESS), "ssertion.*failed");
204 address.locality = "City Name";
205 address.sorting_code = "123CEDEX";
206
207 std::vector<std::string> actual;
208 address.FormatForDisplay(&actual);
209
210 std::vector<std::string> expected(
211 1,
212 address.sorting_code + " " +
213 address.locality + " " +
214 address.sorting_code);
215
216 EXPECT_EQ(expected, actual);
217 } 190 }
218 191
192 TEST(AddressDataTest, GetVectorFieldValueInvalid) {
193 AddressData address;
194 ASSERT_DEATH(address.GetRepeatedFieldValue(COUNTRY), "ssertion.*failed");
195 }
196
197 TEST(AddressDataTest, IsFieldEmptyInvalid) {
198 static const AddressField invalid_field = static_cast<AddressField>(-1);
199 AddressData address;
200 ASSERT_DEATH(address.IsFieldEmpty(invalid_field), "ssertion.*failed");
201 }
202
203 #endif // NDEBUG
204
219 } // namespace 205 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698