OLD | NEW |
| (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 governing permissions and | |
13 // limitations under the License. | |
14 | |
15 #include <libaddressinput/address_data.h> | |
16 | |
17 #include <libaddressinput/address_field.h> | |
18 | |
19 #include <sstream> | |
20 | |
21 #include <gtest/gtest.h> | |
22 | |
23 namespace { | |
24 | |
25 using i18n::addressinput::AddressData; | |
26 using i18n::addressinput::AddressField; | |
27 | |
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) { | |
38 AddressData address; | |
39 address.region_code = "rrr"; | |
40 address.administrative_area = "sss"; | |
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)); | |
61 } | |
62 | |
63 TEST(AddressDataTest, GetRepeatedFieldValue) { | |
64 AddressData address; | |
65 address.address_line.push_back("aaa"); | |
66 address.address_line.push_back("222"); | |
67 EXPECT_EQ(address.address_line, | |
68 address.GetRepeatedFieldValue(STREET_ADDRESS)); | |
69 } | |
70 | |
71 TEST(AddressDataTest, IsFieldEmpty) { | |
72 AddressData address; | |
73 | |
74 EXPECT_TRUE(address.IsFieldEmpty(COUNTRY)); | |
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)); | |
82 | |
83 address.region_code = "rrr"; | |
84 address.administrative_area = "sss"; | |
85 address.locality = "ccc"; | |
86 address.dependent_locality = "ddd"; | |
87 address.sorting_code = "xxx"; | |
88 address.postal_code = "zzz"; | |
89 address.address_line.push_back("aaa"); | |
90 address.recipient = "nnn"; | |
91 | |
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)); | |
100 } | |
101 | |
102 TEST(AddressDataTest, IsFieldEmptyWhitespace) { | |
103 AddressData address; | |
104 address.recipient = " "; | |
105 EXPECT_TRUE(address.IsFieldEmpty(RECIPIENT)); | |
106 address.recipient = "abc"; | |
107 EXPECT_FALSE(address.IsFieldEmpty(RECIPIENT)); | |
108 address.recipient = " b "; | |
109 EXPECT_FALSE(address.IsFieldEmpty(RECIPIENT)); | |
110 } | |
111 | |
112 TEST(AddressDataTest, IsFieldEmptyVector) { | |
113 AddressData address; | |
114 EXPECT_TRUE(address.IsFieldEmpty(STREET_ADDRESS)); | |
115 address.address_line.push_back(""); | |
116 EXPECT_TRUE(address.IsFieldEmpty(STREET_ADDRESS)); | |
117 address.address_line.push_back("aaa"); | |
118 EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS)); | |
119 address.address_line.push_back(""); | |
120 EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS)); | |
121 } | |
122 | |
123 TEST(AddressDataTest, IsFieldEmptyVectorWhitespace) { | |
124 AddressData address; | |
125 address.address_line.push_back(" "); | |
126 address.address_line.push_back(" "); | |
127 address.address_line.push_back(" "); | |
128 EXPECT_TRUE(address.IsFieldEmpty(STREET_ADDRESS)); | |
129 address.address_line.clear(); | |
130 address.address_line.push_back("abc"); | |
131 EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS)); | |
132 address.address_line.clear(); | |
133 address.address_line.push_back(" "); | |
134 address.address_line.push_back(" b "); | |
135 address.address_line.push_back(" "); | |
136 EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS)); | |
137 } | |
138 | |
139 TEST(AddressDataTest, StreamFunction) { | |
140 std::ostringstream oss; | |
141 AddressData address; | |
142 address.address_line.push_back("Line 1"); | |
143 address.address_line.push_back("Line 2"); | |
144 address.recipient = "N"; | |
145 address.region_code = "R"; | |
146 address.postal_code = "Z"; | |
147 address.administrative_area = "S"; | |
148 address.locality = "C"; | |
149 address.dependent_locality = "D"; | |
150 address.sorting_code = "X"; | |
151 address.language_code = "zh-Hant"; | |
152 oss << address; | |
153 EXPECT_EQ("region_code: \"R\"\n" | |
154 "administrative_area: \"S\"\n" | |
155 "locality: \"C\"\n" | |
156 "dependent_locality: \"D\"\n" | |
157 "postal_code: \"Z\"\n" | |
158 "sorting_code: \"X\"\n" | |
159 "address_line: \"Line 1\"\n" | |
160 "address_line: \"Line 2\"\n" | |
161 "language_code: \"zh-Hant\"\n" | |
162 "recipient: \"N\"\n", oss.str()); | |
163 } | |
164 | |
165 TEST(AddressDataTest, TestEquals) { | |
166 AddressData address; | |
167 address.address_line.push_back("Line 1"); | |
168 address.address_line.push_back("Line 2"); | |
169 address.recipient = "N"; | |
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"; | |
177 | |
178 AddressData clone = address; | |
179 | |
180 EXPECT_EQ(address, clone); | |
181 clone.language_code.clear(); | |
182 EXPECT_FALSE(address == clone); | |
183 } | |
184 | |
185 #ifndef NDEBUG | |
186 | |
187 TEST(AddressDataTest, GetFieldValueInvalid) { | |
188 AddressData address; | |
189 ASSERT_DEATH(address.GetFieldValue(STREET_ADDRESS), "ssertion.*failed"); | |
190 } | |
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 | |
205 } // namespace | |
OLD | NEW |