1 /*
2 * Copyright (c) 2025 Huawei Device Co., Ltd.
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
16 #include <gtest/gtest.h>
17 #include <sys/stat.h>
18 #include "i18n_timezone.h"
19 #include "timezone_location_test.h"
20
21 using namespace OHOS::Global::I18n;
22 using testing::ext::TestSize;
23 using namespace std;
24 using namespace testing;
25
26 namespace OHOS {
27 namespace Global {
28 namespace I18n {
29 std::vector<std::tuple<double, double, std::vector<std::string>>> TimeZoneLocationTest::timeZoneTestcases {
30 { -180.0, -90.0, { "Pacific/Auckland" } },
31 { -180.0, -80.0, { "Pacific/Auckland" } },
32 { -180.0, -70.0, { "Etc/GMT+12" } },
33 { -180.0, -60.0, { "Etc/GMT+12" } },
34 { -180.0, -50.0, { "Etc/GMT+12" } },
35 { -180.0, -40.0, { "Etc/GMT+12" } },
36 { -180.0, -30.0, { "Etc/GMT+12" } },
37 { -180.0, -20.0, { "Etc/GMT+12" } },
38 { -180.0, -10.0, { "Etc/GMT+12" } },
39 { -180.0, 0.0, { "Etc/GMT+12" } },
40 { -180.0, 10.0, { "Etc/GMT+12" } },
41 { -180.0, 20.0, { "Etc/GMT+12" } },
42 { -180.0, 30.0, { "Etc/GMT+12" } },
43 { -180.0, 40.0, { "Etc/GMT+12" } },
44 { -180.0, 50.0, { "Etc/GMT+12" } },
45 { -180.0, 60.0, { "Etc/GMT+12" } },
46 { -180.0, 70.0, { "Etc/GMT+12" } },
47 { -180.0, 80.0, { "Etc/GMT+12" } },
48 { -170.0, -90.0, { "Pacific/Auckland" } },
49 { -170.0, -80.0, { "Pacific/Auckland" } },
50 { -170.0, -70.0, { "Etc/GMT+11" } },
51 { -170.0, -60.0, { "Etc/GMT+11" } },
52 { -170.0, -50.0, { "Etc/GMT+11" } },
53 { -170.0, -40.0, { "Etc/GMT+11" } },
54 { -170.0, -30.0, { "Etc/GMT+11" } },
55 { -170.0, -20.0, { "Etc/GMT+11" } },
56 { -170.0, -10.0, { "Etc/GMT+11" } },
57 { -170.0, 0.0, { "Etc/GMT+11" } },
58 { -170.0, 10.0, { "Etc/GMT+11" } },
59 { -170.0, 20.0, { "Etc/GMT+11" } },
60 { -170.0, 30.0, { "Etc/GMT+11" } },
61 { -170.0, 40.0, { "Etc/GMT+11" } },
62 { -170.0, 50.0, { "Etc/GMT+11" } },
63 { -170.0, 60.0, { "Etc/GMT+11" } },
64 { -170.0, 70.0, { "Etc/GMT+11" } },
65 { -170.0, 80.0, { "Etc/GMT+11" } },
66 { -160.0, -90.0, { "Pacific/Auckland" } },
67 { -160.0, -80.0, { "Pacific/Auckland" } },
68 { -160.0, -70.0, { "Etc/GMT+11" } },
69 { -160.0, -60.0, { "Etc/GMT+11" } },
70 { -160.0, -50.0, { "Etc/GMT+11" } },
71 { -160.0, -40.0, { "Etc/GMT+11" } },
72 { -160.0, -30.0, { "Etc/GMT+11" } },
73 { -160.0, -20.0, { "Etc/GMT+11" } },
74 { -160.0, -10.0, { "Etc/GMT+11" } },
75 { -160.0, 0.0, { "Etc/GMT+11" } },
76 { -160.0, 10.0, { "Etc/GMT+11" } },
77 { -160.0, 20.0, { "Etc/GMT+11" } },
78 { -160.0, 30.0, { "Etc/GMT+11" } },
79 { -160.0, 40.0, { "Etc/GMT+11" } },
80 { -160.0, 50.0, { "Etc/GMT+11" } },
81 { -160.0, 60.0, { "America/Anchorage" } },
82 { -160.0, 70.0, { "America/Anchorage" } },
83 { -160.0, 80.0, { "Etc/GMT+11" } },
84 { -150.0, -90.0, { "Pacific/Auckland" } },
85 { -150.0, -80.0, { "Pacific/Auckland" } },
86 { -150.0, -70.0, { "Etc/GMT+10" } },
87 { -150.0, -60.0, { "Etc/GMT+10" } },
88 { -150.0, -50.0, { "Etc/GMT+10" } },
89 { -150.0, -40.0, { "Etc/GMT+10" } },
90 { -150.0, -30.0, { "Etc/GMT+10" } },
91 { -150.0, -20.0, { "Etc/GMT+10" } },
92 { -150.0, -10.0, { "Pacific/Kiritimati" } },
93 { -150.0, 0.0, { "Etc/GMT+10" } },
94 { -150.0, 10.0, { "Etc/GMT+10" } },
95 { -150.0, 20.0, { "Etc/GMT+10" } },
96 { -150.0, 30.0, { "Etc/GMT+10" } },
97 { -150.0, 40.0, { "Etc/GMT+10" } },
98 { -150.0, 50.0, { "Etc/GMT+10" } },
99 { -150.0, 60.0, { "America/Anchorage" } },
100 { -150.0, 70.0, { "America/Anchorage" } },
101 { -150.0, 80.0, { "Etc/GMT+10" } },
102 { -140.0, -90.0, { "Pacific/Auckland" } },
103 { -140.0, -80.0, { "Etc/GMT+9" } },
104 { -140.0, -70.0, { "Etc/GMT+9" } },
105 { -140.0, -60.0, { "Etc/GMT+9" } },
106 { -140.0, -50.0, { "Etc/GMT+9" } },
107 { -140.0, -40.0, { "Etc/GMT+9" } },
108 { -140.0, -30.0, { "Etc/GMT+9" } },
109 { -140.0, -20.0, { "Etc/GMT+9" } },
110 { -140.0, -10.0, { "Etc/GMT+9" } },
111 { -140.0, 0.0, { "Etc/GMT+9" } },
112 { -140.0, 10.0, { "Etc/GMT+9" } },
113 { -140.0, 20.0, { "Etc/GMT+9" } },
114 { -140.0, 30.0, { "Etc/GMT+9" } },
115 { -140.0, 40.0, { "Etc/GMT+9" } },
116 { -140.0, 50.0, { "Etc/GMT+9" } },
117 { -140.0, 60.0, { "America/Yakutat" } },
118 { -140.0, 70.0, { "Etc/GMT+9" } },
119 { -140.0, 80.0, { "Etc/GMT+9" } },
120 { -130.0, -90.0, { "Pacific/Auckland" } },
121 { -130.0, -80.0, { "Etc/GMT+9" } },
122 { -130.0, -70.0, { "Etc/GMT+9" } },
123 { -130.0, -60.0, { "Etc/GMT+9" } },
124 { -130.0, -50.0, { "Etc/GMT+9" } },
125 { -130.0, -40.0, { "Etc/GMT+9" } },
126 { -130.0, -30.0, { "Etc/GMT+9" } },
127 { -130.0, -20.0, { "Etc/GMT+9" } },
128 { -130.0, -10.0, { "Etc/GMT+9" } },
129 { -130.0, 0.0, { "Etc/GMT+9" } },
130 { -130.0, 10.0, { "Etc/GMT+9" } },
131 { -130.0, 20.0, { "Etc/GMT+9" } },
132 { -130.0, 30.0, { "Etc/GMT+9" } },
133 { -130.0, 40.0, { "Etc/GMT+9" } },
134 { -130.0, 50.0, { "Etc/GMT+9" } },
135 { -130.0, 60.0, { "America/Whitehorse" } },
136 { -130.0, 70.0, { "America/Inuvik" } },
137 { -130.0, 80.0, { "Etc/GMT+9" } },
138 { -120.0, -90.0, { "Pacific/Auckland" } },
139 { -120.0, -80.0, { "Etc/GMT+8" } },
140 { -120.0, -70.0, { "Etc/GMT+8" } },
141 { -120.0, -60.0, { "Etc/GMT+8" } },
142 { -120.0, -50.0, { "Etc/GMT+8" } },
143 { -120.0, -40.0, { "Etc/GMT+8" } },
144 { -120.0, -30.0, { "Etc/GMT+8" } },
145 { -120.0, -20.0, { "Etc/GMT+8" } },
146 { -120.0, -10.0, { "Etc/GMT+8" } },
147 { -120.0, 0.0, { "Etc/GMT+8" } },
148 { -120.0, 10.0, { "Etc/GMT+8" } },
149 { -120.0, 20.0, { "Etc/GMT+8" } },
150 { -120.0, 30.0, { "Etc/GMT+8" } },
151 { -120.0, 40.0, { "America/Los_Angeles" } },
152 { -120.0, 50.0, { "America/Vancouver" } },
153 { -120.0, 60.0, { "America/Edmonton" } },
154 { -120.0, 70.0, { "America/Inuvik", "America/Edmonton" } },
155 { -120.0, 80.0, { "Etc/GMT+8" } },
156 { -110.0, -90.0, { "Pacific/Auckland" } },
157 { -110.0, -80.0, { "Etc/GMT+7" } },
158 { -110.0, -70.0, { "Etc/GMT+7" } },
159 { -110.0, -60.0, { "Etc/GMT+7" } },
160 { -110.0, -50.0, { "Etc/GMT+7" } },
161 { -110.0, -40.0, { "Etc/GMT+7" } },
162 { -110.0, -30.0, { "Etc/GMT+7" } },
163 { -110.0, -20.0, { "Etc/GMT+7" } },
164 { -110.0, -10.0, { "Etc/GMT+7" } },
165 { -110.0, 0.0, { "Etc/GMT+7" } },
166 { -110.0, 10.0, { "Etc/GMT+7" } },
167 { -110.0, 20.0, { "Etc/GMT+7" } },
168 { -110.0, 30.0, { "America/Hermosillo" } },
169 { -110.0, 40.0, { "America/Denver" } },
170 { -110.0, 50.0, { "America/Swift_Current" } },
171 { -110.0, 60.0, { "America/Edmonton" } },
172 { -110.0, 70.0, { "America/Cambridge_Bay" } },
173 { -110.0, 80.0, { "Etc/GMT+7" } },
174 { -100.0, -90.0, { "Pacific/Auckland" } },
175 { -100.0, -80.0, { "Etc/GMT+7" } },
176 { -100.0, -70.0, { "Etc/GMT+7" } },
177 { -100.0, -60.0, { "Etc/GMT+7" } },
178 { -100.0, -50.0, { "Etc/GMT+7" } },
179 { -100.0, -40.0, { "Etc/GMT+7" } },
180 { -100.0, -30.0, { "Etc/GMT+7" } },
181 { -100.0, -20.0, { "Etc/GMT+7" } },
182 { -100.0, -10.0, { "Etc/GMT+7" } },
183 { -100.0, 0.0, { "Etc/GMT+7" } },
184 { -100.0, 10.0, { "Etc/GMT+7" } },
185 { -100.0, 20.0, { "America/Mexico_City" } },
186 { -100.0, 30.0, { "America/Chicago" } },
187 { -100.0, 40.0, { "America/Chicago" } },
188 { -100.0, 50.0, { "America/Winnipeg" } },
189 { -100.0, 60.0, { "America/Rankin_Inlet" } },
190 { -100.0, 70.0, { "America/Cambridge_Bay" } },
191 { -100.0, 80.0, { "America/Rankin_Inlet" } },
192 { -90.0, -90.0, { "Pacific/Auckland" } },
193 { -90.0, -80.0, { "Etc/GMT+6" } },
194 { -90.0, -70.0, { "Etc/GMT+6" } },
195 { -90.0, -60.0, { "Etc/GMT+6" } },
196 { -90.0, -50.0, { "Etc/GMT+6" } },
197 { -90.0, -40.0, { "Etc/GMT+6" } },
198 { -90.0, -30.0, { "Etc/GMT+6" } },
199 { -90.0, -20.0, { "Etc/GMT+6" } },
200 { -90.0, -10.0, { "Etc/GMT+6" } },
201 { -90.0, 0.0, { "Pacific/Galapagos" } },
202 { -90.0, 10.0, { "Etc/GMT+6" } },
203 { -90.0, 20.0, { "America/Merida" } },
204 { -90.0, 30.0, { "America/Chicago" } },
205 { -90.0, 40.0, { "America/Chicago" } },
206 { -90.0, 50.0, { "America/Winnipeg", "America/Toronto" } },
207 { -90.0, 60.0, { "America/Rankin_Inlet" } },
208 { -90.0, 70.0, { "America/Cambridge_Bay" } },
209 { -90.0, 80.0, { "America/Rankin_Inlet" } },
210 { -80.0, -90.0, { "Pacific/Auckland" } },
211 { -80.0, -80.0, { "Antarctica/Rothera" } },
212 { -80.0, -70.0, { "Antarctica/Rothera" } },
213 { -80.0, -60.0, { "Etc/GMT+5" } },
214 { -80.0, -50.0, { "Etc/GMT+5" } },
215 { -80.0, -40.0, { "Etc/GMT+5" } },
216 { -80.0, -30.0, { "Etc/GMT+5" } },
217 { -80.0, -20.0, { "Etc/GMT+5" } },
218 { -80.0, -10.0, { "America/Lima" } },
219 { -80.0, 0.0, { "America/Guayaquil" } },
220 { -80.0, 10.0, { "Etc/GMT+5" } },
221 { -80.0, 20.0, { "Etc/GMT+5" } },
222 { -80.0, 30.0, { "Etc/GMT+5" } },
223 { -80.0, 40.0, { "America/New_York" } },
224 { -80.0, 50.0, { "America/Toronto" } },
225 { -80.0, 60.0, { "America/Iqaluit" } },
226 { -80.0, 70.0, { "America/Iqaluit" } },
227 { -80.0, 80.0, { "America/Iqaluit" } },
228 { -70.0, -90.0, { "Pacific/Auckland" } },
229 { -70.0, -80.0, { "Antarctica/Rothera" } },
230 { -70.0, -70.0, { "Antarctica/Rothera" } },
231 { -70.0, -60.0, { "Etc/GMT+5" } },
232 { -70.0, -50.0, { "America/Argentina/Rio_Gallegos" } },
233 { -70.0, -40.0, { "America/Argentina/Salta" } },
234 { -70.0, -30.0, { "America/Santiago" } },
235 { -70.0, -20.0, { "America/Santiago" } },
236 { -70.0, -10.0, { "America/Rio_Branco" } },
237 { -70.0, 0.0, { "America/Manaus" } },
238 { -70.0, 10.0, { "America/Caracas" } },
239 { -70.0, 20.0, { "America/Santo_Domingo" } },
240 { -70.0, 30.0, { "Etc/GMT+5" } },
241 { -70.0, 40.0, { "Etc/GMT+5" } },
242 { -70.0, 50.0, { "America/Toronto" } },
243 { -70.0, 60.0, { "America/Toronto" } },
244 { -70.0, 70.0, { "America/Iqaluit" } },
245 { -70.0, 80.0, { "America/Iqaluit" } },
246 { -60.0, -90.0, { "Pacific/Auckland" } },
247 { -60.0, -80.0, { "America/Argentina/Ushuaia" } },
248 { -60.0, -70.0, { "America/Argentina/Ushuaia" } },
249 { -60.0, -60.0, { "Etc/GMT+4" } },
250 { -60.0, -50.0, { "Etc/GMT+4" } },
251 { -60.0, -40.0, { "Etc/GMT+4" } },
252 { -60.0, -30.0, { "America/Argentina/Cordoba" } },
253 { -60.0, -20.0, { "America/Asuncion" } },
254 { -60.0, -10.0, { "America/Cuiaba" } },
255 { -60.0, 0.0, { "America/Manaus" } },
256 { -60.0, 10.0, { "Etc/GMT+4" } },
257 { -60.0, 20.0, { "Etc/GMT+4" } },
258 { -60.0, 30.0, { "Etc/GMT+4" } },
259 { -60.0, 40.0, { "Etc/GMT+4" } },
260 { -60.0, 50.0, { "America/Puerto_Rico" } },
261 { -60.0, 60.0, { "Etc/GMT+4" } },
262 { -60.0, 70.0, { "Etc/GMT+4" } },
263 { -60.0, 80.0, { "America/Nuuk" } },
264 { -50.0, -90.0, { "Pacific/Auckland" } },
265 { -50.0, -80.0, { "America/Argentina/Ushuaia" } },
266 { -50.0, -70.0, { "Etc/GMT+3" } },
267 { -50.0, -60.0, { "Etc/GMT+3" } },
268 { -50.0, -50.0, { "Etc/GMT+3" } },
269 { -50.0, -40.0, { "Etc/GMT+3" } },
270 { -50.0, -30.0, { "America/Sao_Paulo" } },
271 { -50.0, -20.0, { "America/Sao_Paulo" } },
272 { -50.0, -10.0, { "America/Araguaina" } },
273 { -50.0, 0.0, { "America/Belem" } },
274 { -50.0, 10.0, { "Etc/GMT+3" } },
275 { -50.0, 20.0, { "Etc/GMT+3" } },
276 { -50.0, 30.0, { "Etc/GMT+3" } },
277 { -50.0, 40.0, { "Etc/GMT+3" } },
278 { -50.0, 50.0, { "Etc/GMT+3" } },
279 { -50.0, 60.0, { "Etc/GMT+3" } },
280 { -50.0, 70.0, { "America/Nuuk" } },
281 { -50.0, 80.0, { "America/Nuuk" } },
282 { -40.0, -90.0, { "Pacific/Auckland" } },
283 { -40.0, -80.0, { "America/Argentina/Ushuaia" } },
284 { -40.0, -70.0, { "Etc/GMT+3" } },
285 { -40.0, -60.0, { "Etc/GMT+3" } },
286 { -40.0, -50.0, { "Etc/GMT+3" } },
287 { -40.0, -40.0, { "Etc/GMT+3" } },
288 { -40.0, -30.0, { "Etc/GMT+3" } },
289 { -40.0, -20.0, { "America/Sao_Paulo" } },
290 { -40.0, -10.0, { "America/Bahia" } },
291 { -40.0, 0.0, { "Etc/GMT+3" } },
292 { -40.0, 10.0, { "Etc/GMT+3" } },
293 { -40.0, 20.0, { "Etc/GMT+3" } },
294 { -40.0, 30.0, { "Etc/GMT+3" } },
295 { -40.0, 40.0, { "Etc/GMT+3" } },
296 { -40.0, 50.0, { "Etc/GMT+3" } },
297 { -40.0, 60.0, { "Etc/GMT+3" } },
298 { -40.0, 70.0, { "America/Nuuk" } },
299 { -40.0, 80.0, { "America/Nuuk" } },
300 { -30.0, -90.0, { "Pacific/Auckland" } },
301 { -30.0, -80.0, { "Antarctica/Rothera" } },
302 { -30.0, -70.0, { "Etc/GMT+2" } },
303 { -30.0, -60.0, { "Etc/GMT+2" } },
304 { -30.0, -50.0, { "Etc/GMT+2" } },
305 { -30.0, -40.0, { "Etc/GMT+2" } },
306 { -30.0, -30.0, { "Etc/GMT+2" } },
307 { -30.0, -20.0, { "Etc/GMT+2" } },
308 { -30.0, -10.0, { "Etc/GMT+2" } },
309 { -30.0, 0.0, { "Etc/GMT+2" } },
310 { -30.0, 10.0, { "Etc/GMT+2" } },
311 { -30.0, 20.0, { "Etc/GMT+2" } },
312 { -30.0, 30.0, { "Etc/GMT+2" } },
313 { -30.0, 40.0, { "Etc/GMT+2" } },
314 { -30.0, 50.0, { "Etc/GMT+2" } },
315 { -30.0, 60.0, { "Etc/GMT+2" } },
316 { -30.0, 70.0, { "America/Nuuk" } },
317 { -30.0, 80.0, { "America/Nuuk" } },
318 { -20.0, -90.0, { "Pacific/Auckland" } },
319 { -20.0, -80.0, { "Antarctica/Rothera" } },
320 { -20.0, -70.0, { "Etc/GMT+1" } },
321 { -20.0, -60.0, { "Etc/GMT+1" } },
322 { -20.0, -50.0, { "Etc/GMT+1" } },
323 { -20.0, -40.0, { "Etc/GMT+1" } },
324 { -20.0, -30.0, { "Etc/GMT+1" } },
325 { -20.0, -20.0, { "Etc/GMT+1" } },
326 { -20.0, -10.0, { "Etc/GMT+1" } },
327 { -20.0, 0.0, { "Etc/GMT+1" } },
328 { -20.0, 10.0, { "Etc/GMT+1" } },
329 { -20.0, 20.0, { "Etc/GMT+1" } },
330 { -20.0, 30.0, { "Etc/GMT+1" } },
331 { -20.0, 40.0, { "Etc/GMT+1" } },
332 { -20.0, 50.0, { "Etc/GMT+1" } },
333 { -20.0, 60.0, { "Etc/GMT+1" } },
334 { -20.0, 70.0, { "Etc/GMT+1" } },
335 { -20.0, 80.0, { "America/Nuuk" } },
336 { -10.0, -90.0, { "Pacific/Auckland" } },
337 { -10.0, -80.0, { "Etc/UTC" } },
338 { -10.0, -70.0, { "Etc/UTC" } },
339 { -10.0, -60.0, { "Etc/GMT+1" } },
340 { -10.0, -50.0, { "Etc/GMT+1" } },
341 { -10.0, -40.0, { "Etc/GMT+1" } },
342 { -10.0, -30.0, { "Etc/GMT+1" } },
343 { -10.0, -20.0, { "Etc/GMT+1" } },
344 { -10.0, -10.0, { "Etc/GMT+1" } },
345 { -10.0, 0.0, { "Etc/GMT+1" } },
346 { -10.0, 10.0, { "Africa/Abidjan" } },
347 { -10.0, 20.0, { "Africa/Abidjan" } },
348 { -10.0, 30.0, { "Etc/GMT+1" } },
349 { -10.0, 40.0, { "Etc/GMT+1" } },
350 { -10.0, 50.0, { "Etc/GMT+1" } },
351 { -10.0, 60.0, { "Etc/GMT+1" } },
352 { -10.0, 70.0, { "Etc/GMT+1" } },
353 { -10.0, 80.0, { "Etc/GMT+1" } },
354 { 0.0, -90.0, { "Pacific/Auckland" } },
355 { 0.0, -80.0, { "Africa/Johannesburg" } },
356 { 0.0, -70.0, { "Africa/Johannesburg" } },
357 { 0.0, -60.0, { "Etc/GMT" } },
358 { 0.0, -50.0, { "Etc/GMT" } },
359 { 0.0, -40.0, { "Etc/GMT" } },
360 { 0.0, -30.0, { "Etc/GMT" } },
361 { 0.0, -20.0, { "Etc/GMT" } },
362 { 0.0, -10.0, { "Etc/GMT" } },
363 { 0.0, 0.0, { "Etc/GMT" } },
364 { 0.0, 10.0, { "Africa/Abidjan" } },
365 { 0.0, 20.0, { "Africa/Abidjan" } },
366 { 0.0, 30.0, { "Africa/Algiers" } },
367 { 0.0, 40.0, { "Europe/Madrid" } },
368 { 0.0, 50.0, { "Etc/GMT" } },
369 { 0.0, 60.0, { "Etc/GMT" } },
370 { 0.0, 70.0, { "Etc/GMT" } },
371 { 0.0, 80.0, { "Etc/GMT" } },
372 { 10.0, -90.0, { "Pacific/Auckland" } },
373 { 10.0, -80.0, { "Antarctica/Troll" } },
374 { 10.0, -70.0, { "Antarctica/Troll" } },
375 { 10.0, -60.0, { "Etc/GMT-1" } },
376 { 10.0, -50.0, { "Etc/GMT-1" } },
377 { 10.0, -40.0, { "Etc/GMT-1" } },
378 { 10.0, -30.0, { "Etc/GMT-1" } },
379 { 10.0, -20.0, { "Etc/GMT-1" } },
380 { 10.0, -10.0, { "Etc/GMT-1" } },
381 { 10.0, 0.0, { "Africa/Lagos" } },
382 { 10.0, 10.0, { "Africa/Lagos" } },
383 { 10.0, 20.0, { "Africa/Lagos" } },
384 { 10.0, 30.0, { "Africa/Tripoli" } },
385 { 10.0, 40.0, { "Etc/GMT-1" } },
386 { 10.0, 50.0, { "Europe/Berlin" } },
387 { 10.0, 60.0, { "Europe/Berlin" } },
388 { 10.0, 70.0, { "Etc/GMT-1" } },
389 { 10.0, 80.0, { "Etc/GMT-1" } },
390 { 20.0, -90.0, { "Pacific/Auckland" } },
391 { 20.0, -80.0, { "Antarctica/Troll" } },
392 { 20.0, -70.0, { "Antarctica/Troll" } },
393 { 20.0, -60.0, { "Etc/GMT-1" } },
394 { 20.0, -50.0, { "Etc/GMT-1" } },
395 { 20.0, -40.0, { "Etc/GMT-1" } },
396 { 20.0, -30.0, { "Africa/Johannesburg" } },
397 { 20.0, -20.0, { "Africa/Windhoek" } },
398 { 20.0, -10.0, { "Africa/Lagos" } },
399 { 20.0, 0.0, { "Africa/Lagos" } },
400 { 20.0, 10.0, { "Africa/Ndjamena" } },
401 { 20.0, 20.0, { "Africa/Ndjamena" } },
402 { 20.0, 30.0, { "Africa/Tripoli" } },
403 { 20.0, 40.0, { "Europe/Tirane" } },
404 { 20.0, 50.0, { "Europe/Warsaw" } },
405 { 20.0, 60.0, { "Europe/Helsinki" } },
406 { 20.0, 70.0, { "Europe/Berlin" } },
407 { 20.0, 80.0, { "Europe/Berlin" } },
408 { 30.0, -90.0, { "Pacific/Auckland" } },
409 { 30.0, -80.0, { "Asia/Riyadh" } },
410 { 30.0, -70.0, { "Asia/Riyadh" } },
411 { 30.0, -60.0, { "Etc/GMT-2" } },
412 { 30.0, -50.0, { "Etc/GMT-2" } },
413 { 30.0, -40.0, { "Etc/GMT-2" } },
414 { 30.0, -30.0, { "Africa/Johannesburg" } },
415 { 30.0, -20.0, { "Africa/Johannesburg" } },
416 { 30.0, -10.0, { "Africa/Johannesburg" } },
417 { 30.0, 0.0, { "Asia/Riyadh" } },
418 { 30.0, 10.0, { "Africa/Juba" } },
419 { 30.0, 20.0, { "Africa/Khartoum" } },
420 { 30.0, 30.0, { "Africa/Cairo" } },
421 { 30.0, 40.0, { "Europe/Istanbul" } },
422 { 30.0, 50.0, { "Europe/Kiev" } },
423 { 30.0, 60.0, { "Europe/Moscow" } },
424 { 30.0, 70.0, { "Europe/Berlin" } },
425 { 30.0, 80.0, { "Etc/GMT-2" } },
426 { 40.0, -90.0, { "Pacific/Auckland" } },
427 { 40.0, -80.0, { "Asia/Riyadh" } },
428 { 40.0, -70.0, { "Asia/Riyadh" } },
429 { 40.0, -60.0, { "Etc/GMT-3" } },
430 { 40.0, -50.0, { "Etc/GMT-3" } },
431 { 40.0, -40.0, { "Etc/GMT-3" } },
432 { 40.0, -30.0, { "Etc/GMT-3" } },
433 { 40.0, -20.0, { "Etc/GMT-3" } },
434 { 40.0, -10.0, { "Asia/Riyadh" } },
435 { 40.0, 0.0, { "Asia/Riyadh" } },
436 { 40.0, 10.0, { "Asia/Riyadh" } },
437 { 40.0, 20.0, { "Asia/Riyadh" } },
438 { 40.0, 30.0, { "Asia/Riyadh" } },
439 { 40.0, 40.0, { "Europe/Istanbul" } },
440 { 40.0, 50.0, { "Europe/Moscow" } },
441 { 40.0, 60.0, { "Europe/Moscow" } },
442 { 40.0, 70.0, { "Etc/GMT-3" } },
443 { 40.0, 80.0, { "Etc/GMT-3" } },
444 { 50.0, -90.0, { "Pacific/Auckland" } },
445 { 50.0, -80.0, { "Asia/Riyadh" } },
446 { 50.0, -70.0, { "Asia/Riyadh" } },
447 { 50.0, -60.0, { "Etc/GMT-3" } },
448 { 50.0, -50.0, { "Etc/GMT-3" } },
449 { 50.0, -40.0, { "Etc/GMT-3" } },
450 { 50.0, -30.0, { "Etc/GMT-3" } },
451 { 50.0, -20.0, { "Etc/GMT-3" } },
452 { 50.0, -10.0, { "Etc/GMT-3" } },
453 { 50.0, 0.0, { "Etc/GMT-3" } },
454 { 50.0, 10.0, { "Asia/Riyadh" } },
455 { 50.0, 20.0, { "Asia/Riyadh" } },
456 { 50.0, 30.0, { "Asia/Tehran" } },
457 { 50.0, 40.0, { "Etc/GMT-3" } },
458 { 50.0, 50.0, { "Asia/Oral" } },
459 { 50.0, 60.0, { "Europe/Moscow" } },
460 { 50.0, 70.0, { "Etc/GMT-3" } },
461 { 50.0, 80.0, { "Europe/Moscow" } },
462 { 60.0, -90.0, { "Pacific/Auckland" } },
463 { 60.0, -80.0, { "Antarctica/Mawson" } },
464 { 60.0, -70.0, { "Antarctica/Mawson" } },
465 { 60.0, -60.0, { "Etc/GMT-4" } },
466 { 60.0, -50.0, { "Etc/GMT-4" } },
467 { 60.0, -40.0, { "Etc/GMT-4" } },
468 { 60.0, -30.0, { "Etc/GMT-4" } },
469 { 60.0, -20.0, { "Etc/GMT-4" } },
470 { 60.0, -10.0, { "Etc/GMT-4" } },
471 { 60.0, 0.0, { "Etc/GMT-4" } },
472 { 60.0, 10.0, { "Etc/GMT-4" } },
473 { 60.0, 20.0, { "Etc/GMT-4" } },
474 { 60.0, 30.0, { "Asia/Tehran" } },
475 { 60.0, 40.0, { "Asia/Ashgabat" } },
476 { 60.0, 50.0, { "Asia/Aqtobe" } },
477 { 60.0, 60.0, { "Asia/Yekaterinburg" } },
478 { 60.0, 70.0, { "Europe/Moscow" } },
479 { 60.0, 80.0, { "Europe/Moscow" } },
480 { 70.0, -90.0, { "Pacific/Auckland" } },
481 { 70.0, -80.0, { "Antarctica/Mawson" } },
482 { 70.0, -70.0, { "Antarctica/Mawson" } },
483 { 70.0, -60.0, { "Etc/GMT-5" } },
484 { 70.0, -50.0, { "Etc/GMT-5" } },
485 { 70.0, -40.0, { "Etc/GMT-5" } },
486 { 70.0, -30.0, { "Etc/GMT-5" } },
487 { 70.0, -20.0, { "Etc/GMT-5" } },
488 { 70.0, -10.0, { "Etc/GMT-5" } },
489 { 70.0, 0.0, { "Etc/GMT-5" } },
490 { 70.0, 10.0, { "Etc/GMT-5" } },
491 { 70.0, 20.0, { "Etc/GMT-5" } },
492 { 70.0, 30.0, { "Asia/Karachi" } },
493 { 70.0, 40.0, { "Asia/Bishkek" } },
494 { 70.0, 50.0, { "Asia/Almaty" } },
495 { 70.0, 60.0, { "Asia/Yekaterinburg" } },
496 { 70.0, 70.0, { "Asia/Yekaterinburg" } },
497 { 70.0, 80.0, { "Etc/GMT-5" } },
498 { 80.0, -90.0, { "Pacific/Auckland" } },
499 { 80.0, -80.0, { "Antarctica/Davis" } },
500 { 80.0, -70.0, { "Antarctica/Davis" } },
501 { 80.0, -60.0, { "Etc/GMT-5" } },
502 { 80.0, -50.0, { "Etc/GMT-5" } },
503 { 80.0, -40.0, { "Etc/GMT-5" } },
504 { 80.0, -30.0, { "Etc/GMT-5" } },
505 { 80.0, -20.0, { "Etc/GMT-5" } },
506 { 80.0, -10.0, { "Etc/GMT-5" } },
507 { 80.0, 0.0, { "Etc/GMT-5" } },
508 { 80.0, 10.0, { "Asia/Colombo" } },
509 { 80.0, 20.0, { "Asia/Kolkata" } },
510 { 80.0, 30.0, { "Asia/Kolkata" } },
511 { 80.0, 40.0, { "Asia/Shanghai", "Asia/Urumqi" } },
512 { 80.0, 50.0, { "Asia/Almaty" } },
513 { 80.0, 60.0, { "Asia/Tomsk" } },
514 { 80.0, 70.0, { "Asia/Krasnoyarsk" } },
515 { 80.0, 80.0, { "Etc/GMT-5" } },
516 { 90.0, -90.0, { "Pacific/Auckland" } },
517 { 90.0, -80.0, { "Antarctica/Vostok" } },
518 { 90.0, -70.0, { "Antarctica/Vostok" } },
519 { 90.0, -60.0, { "Etc/GMT-6" } },
520 { 90.0, -50.0, { "Etc/GMT-6" } },
521 { 90.0, -40.0, { "Etc/GMT-6" } },
522 { 90.0, -30.0, { "Etc/GMT-6" } },
523 { 90.0, -20.0, { "Etc/GMT-6" } },
524 { 90.0, -10.0, { "Etc/GMT-6" } },
525 { 90.0, 0.0, { "Etc/GMT-6" } },
526 { 90.0, 10.0, { "Etc/GMT-6" } },
527 { 90.0, 20.0, { "Etc/GMT-6" } },
528 { 90.0, 30.0, { "Asia/Shanghai" } },
529 { 90.0, 40.0, { "Asia/Shanghai", "Asia/Urumqi" } },
530 { 90.0, 50.0, { "Asia/Krasnoyarsk" } },
531 { 90.0, 60.0, { "Asia/Krasnoyarsk" } },
532 { 90.0, 70.0, { "Asia/Krasnoyarsk" } },
533 { 90.0, 80.0, { "Asia/Krasnoyarsk" } },
534 { 100.0, -90.0, { "Pacific/Auckland" } },
535 { 100.0, -80.0, { "Antarctica/Vostok" } },
536 { 100.0, -70.0, { "Antarctica/Vostok", "Antarctica/Casey" } },
537 { 100.0, -60.0, { "Etc/GMT-7" } },
538 { 100.0, -50.0, { "Etc/GMT-7" } },
539 { 100.0, -40.0, { "Etc/GMT-7" } },
540 { 100.0, -30.0, { "Etc/GMT-7" } },
541 { 100.0, -20.0, { "Etc/GMT-7" } },
542 { 100.0, -10.0, { "Etc/GMT-7" } },
543 { 100.0, 0.0, { "Asia/Jakarta" } },
544 { 100.0, 10.0, { "Asia/Jakarta" } },
545 { 100.0, 20.0, { "Asia/Jakarta" } },
546 { 100.0, 30.0, { "Asia/Shanghai" } },
547 { 100.0, 40.0, { "Asia/Shanghai" } },
548 { 100.0, 50.0, { "Asia/Ulaanbaatar" } },
549 { 100.0, 60.0, { "Asia/Krasnoyarsk" } },
550 { 100.0, 70.0, { "Asia/Krasnoyarsk" } },
551 { 100.0, 80.0, { "Asia/Krasnoyarsk" } },
552 { 110.0, -90.0, { "Pacific/Auckland" } },
553 { 110.0, -80.0, { "Antarctica/Vostok" } },
554 { 110.0, -70.0, { "Antarctica/Vostok", "Antarctica/Casey" } },
555 { 110.0, -60.0, { "Etc/GMT-7" } },
556 { 110.0, -50.0, { "Etc/GMT-7" } },
557 { 110.0, -40.0, { "Etc/GMT-7" } },
558 { 110.0, -30.0, { "Etc/GMT-7" } },
559 { 110.0, -20.0, { "Etc/GMT-7" } },
560 { 110.0, -10.0, { "Etc/GMT-7" } },
561 { 110.0, 0.0, { "Asia/Pontianak" } },
562 { 110.0, 10.0, { "Etc/GMT-7" } },
563 { 110.0, 20.0, { "Asia/Shanghai" } },
564 { 110.0, 30.0, { "Asia/Shanghai" } },
565 { 110.0, 40.0, { "Asia/Shanghai" } },
566 { 110.0, 50.0, { "Asia/Chita" } },
567 { 110.0, 60.0, { "Asia/Yakutsk" } },
568 { 110.0, 70.0, { "Asia/Yakutsk" } },
569 { 110.0, 80.0, { "Etc/GMT-7" } },
570 { 120.0, -90.0, { "Pacific/Auckland" } },
571 { 120.0, -80.0, { "Australia/Perth" } },
572 { 120.0, -70.0, { "Australia/Perth", "Pacific/Port_Moresby", "Antarctica/Casey" } },
573 { 120.0, -60.0, { "Etc/GMT-8" } },
574 { 120.0, -50.0, { "Etc/GMT-8" } },
575 { 120.0, -40.0, { "Etc/GMT-8" } },
576 { 120.0, -30.0, { "Australia/Perth" } },
577 { 120.0, -20.0, { "Australia/Perth" } },
578 { 120.0, -10.0, { "Asia/Makassar" } },
579 { 120.0, 0.0, { "Asia/Makassar" } },
580 { 120.0, 10.0, { "Asia/Manila" } },
581 { 120.0, 20.0, { "Etc/GMT-8" } },
582 { 120.0, 30.0, { "Asia/Shanghai" } },
583 { 120.0, 40.0, { "Asia/Shanghai" } },
584 { 120.0, 50.0, { "Asia/Shanghai" } },
585 { 120.0, 60.0, { "Asia/Yakutsk" } },
586 { 120.0, 70.0, { "Asia/Yakutsk" } },
587 { 120.0, 80.0, { "Etc/GMT-8" } },
588 { 130.0, -90.0, { "Pacific/Auckland" } },
589 { 130.0, -80.0, { "Australia/Perth" } },
590 { 130.0, -70.0, { "Australia/Perth", "Pacific/Port_Moresby" } },
591 { 130.0, -60.0, { "Etc/GMT-9" } },
592 { 130.0, -50.0, { "Etc/GMT-9" } },
593 { 130.0, -40.0, { "Etc/GMT-9" } },
594 { 130.0, -30.0, { "Australia/Adelaide" } },
595 { 130.0, -20.0, { "Australia/Darwin" } },
596 { 130.0, -10.0, { "Etc/GMT-9" } },
597 { 130.0, 0.0, { "Asia/Tokyo" } },
598 { 130.0, 10.0, { "Etc/GMT-9" } },
599 { 130.0, 20.0, { "Etc/GMT-9" } },
600 { 130.0, 30.0, { "Asia/Tokyo" } },
601 { 130.0, 40.0, { "Etc/GMT-9" } },
602 { 130.0, 50.0, { "Asia/Yakutsk" } },
603 { 130.0, 60.0, { "Asia/Yakutsk" } },
604 { 130.0, 70.0, { "Asia/Yakutsk" } },
605 { 130.0, 80.0, { "Etc/GMT-9" } },
606 { 140.0, -90.0, { "Pacific/Auckland" } },
607 { 140.0, -80.0, { "Australia/Perth" } },
608 { 140.0, -70.0, { "Australia/Perth", "Pacific/Port_Moresby" } },
609 { 140.0, -60.0, { "Etc/GMT-9" } },
610 { 140.0, -50.0, { "Etc/GMT-9" } },
611 { 140.0, -40.0, { "Etc/GMT-9" } },
612 { 140.0, -30.0, { "Australia/Adelaide" } },
613 { 140.0, -20.0, { "Australia/Brisbane" } },
614 { 140.0, -10.0, { "Etc/GMT-9" } },
615 { 140.0, 0.0, { "Etc/GMT-9" } },
616 { 140.0, 10.0, { "Pacific/Port_Moresby" } },
617 { 140.0, 20.0, { "Etc/GMT-9" } },
618 { 140.0, 30.0, { "Etc/GMT-9" } },
619 { 140.0, 40.0, { "Asia/Tokyo" } },
620 { 140.0, 50.0, { "Asia/Vladivostok" } },
621 { 140.0, 60.0, { "Asia/Vladivostok" } },
622 { 140.0, 70.0, { "Asia/Vladivostok" } },
623 { 140.0, 80.0, { "Etc/GMT-9" } },
624 { 150.0, -90.0, { "Pacific/Auckland" } },
625 { 150.0, -80.0, { "Australia/Perth" } },
626 { 150.0, -70.0, { "Australia/Perth", "Pacific/Port_Moresby" } },
627 { 150.0, -60.0, { "Etc/GMT-10" } },
628 { 150.0, -50.0, { "Etc/GMT-10" } },
629 { 150.0, -40.0, { "Etc/GMT-10" } },
630 { 150.0, -30.0, { "Australia/Sydney" } },
631 { 150.0, -20.0, { "Etc/GMT-10" } },
632 { 150.0, -10.0, { "Pacific/Port_Moresby" } },
633 { 150.0, 0.0, { "Etc/GMT-10" } },
634 { 150.0, 10.0, { "Etc/GMT-10" } },
635 { 150.0, 20.0, { "Etc/GMT-10" } },
636 { 150.0, 30.0, { "Etc/GMT-10" } },
637 { 150.0, 40.0, { "Etc/GMT-10" } },
638 { 150.0, 50.0, { "Etc/GMT-10" } },
639 { 150.0, 60.0, { "Asia/Magadan" } },
640 { 150.0, 70.0, { "Asia/Srednekolymsk" } },
641 { 150.0, 80.0, { "Etc/GMT-10" } },
642 { 160.0, -90.0, { "Pacific/Auckland" } },
643 { 160.0, -80.0, { "Australia/Perth", "Pacific/Auckland" } },
644 { 160.0, -70.0, { "Australia/Perth", "Pacific/Auckland", "Pacific/Port_Moresby" } },
645 { 160.0, -60.0, { "Etc/GMT-11" } },
646 { 160.0, -50.0, { "Etc/GMT-11" } },
647 { 160.0, -40.0, { "Etc/GMT-11" } },
648 { 160.0, -30.0, { "Etc/GMT-11" } },
649 { 160.0, -20.0, { "Etc/GMT-11" } },
650 { 160.0, -10.0, { "Pacific/Guadalcanal" } },
651 { 160.0, 0.0, { "Etc/GMT-11" } },
652 { 160.0, 10.0, { "Etc/GMT-11" } },
653 { 160.0, 20.0, { "Etc/GMT-11" } },
654 { 160.0, 30.0, { "Etc/GMT-11" } },
655 { 160.0, 40.0, { "Etc/GMT-11" } },
656 { 160.0, 50.0, { "Etc/GMT-11" } },
657 { 160.0, 60.0, { "Etc/GMT-11" } },
658 { 160.0, 70.0, { "Asia/Srednekolymsk" } },
659 { 160.0, 80.0, { "Etc/GMT-11" } },
660 { 170.0, -90.0, { "Pacific/Auckland" } },
661 { 170.0, -80.0, { "Pacific/Auckland" } },
662 { 170.0, -70.0, { "Pacific/Auckland" } },
663 { 170.0, -60.0, { "Etc/GMT-11" } },
664 { 170.0, -50.0, { "Etc/GMT-11" } },
665 { 170.0, -40.0, { "Etc/GMT-11" } },
666 { 170.0, -30.0, { "Etc/GMT-11" } },
667 { 170.0, -20.0, { "Pacific/Efate" } },
668 { 170.0, -10.0, { "Etc/GMT-11" } },
669 { 170.0, 0.0, { "Etc/GMT-11" } },
670 { 170.0, 10.0, { "Pacific/Tarawa" } },
671 { 170.0, 20.0, { "Etc/GMT-11" } },
672 { 170.0, 30.0, { "Etc/GMT-11" } },
673 { 170.0, 40.0, { "Etc/GMT-11" } },
674 { 170.0, 50.0, { "Etc/GMT-11" } },
675 { 170.0, 60.0, { "Asia/Kamchatka" } },
676 { 170.0, 70.0, { "Asia/Anadyr" } },
677 { 170.0, 80.0, { "Etc/GMT-11" } },
678
679 };
680
SetUpTestCase(void)681 void TimeZoneLocationTest::SetUpTestCase(void)
682 {
683 }
684
TearDownTestCase(void)685 void TimeZoneLocationTest::TearDownTestCase(void)
686 {
687 }
688
SetUp(void)689 void TimeZoneLocationTest::SetUp(void)
690 {}
691
TearDown(void)692 void TimeZoneLocationTest::TearDown(void)
693 {}
694
695 /**
696 * @tc.name: TimeZoneLocationTest0001
697 * @tc.desc: Test GetTimezoneIdByLocation
698 * @tc.type: FUNC
699 */
700 HWTEST_F(TimeZoneLocationTest, TimeZoneLocationTest0001, TestSize.Level1)
701 {
702 for (auto iter = timeZoneTestcases.begin(); iter != timeZoneTestcases.end(); ++iter) {
703 double longitude = std::get<0>(*iter);
704 double latitude = std::get<1>(*iter);
705 std::vector<std::string> expects = std::get<2>(*iter);
706 vector<std::string> tz = I18nTimeZone::GetTimezoneIdByLocation(longitude, latitude);
707 EXPECT_EQ(tz.size(), expects.size());
708 for (unsigned int i = 0; i < tz.size(); i++) {
709 EXPECT_EQ(tz[i], expects[i]);
710 }
711 }
712 }
713
714 /**
715 * @tc.name: TimeZoneLocationTest0002
716 * @tc.desc: Test GetTimezoneIdByLocation
717 * @tc.type: FUNC
718 */
719 HWTEST_F(TimeZoneLocationTest, TimeZoneLocationTest0002, TestSize.Level1)
720 {
721 // 北京
722 vector<std::string> beijing = I18nTimeZone::GetTimezoneIdByLocation(116.3, 39.5);
723 EXPECT_TRUE(beijing.size() == 1 && beijing[0] == "Asia/Shanghai");
724 // 洛杉矶
725 vector<std::string> losAngeles = I18nTimeZone::GetTimezoneIdByLocation(-118.1, 34.0);
726 EXPECT_TRUE(losAngeles.size() == 1 && losAngeles[0] == "America/Los_Angeles");
727 // 里约热内卢
728 vector<std::string> rio = I18nTimeZone::GetTimezoneIdByLocation(-43.1, -22.5);
729 EXPECT_TRUE(rio.size() == 1 && rio[0] == "America/Sao_Paulo");
730 // 悉尼
731 vector<std::string> sydney = I18nTimeZone::GetTimezoneIdByLocation(150.5, -33.55);
732 EXPECT_TRUE(sydney.size() == 1 && sydney[0] == "Australia/Sydney");
733 // 乌鲁木齐
734 vector<std::string> urumqi = I18nTimeZone::GetTimezoneIdByLocation(87.7, 43.8);
735 EXPECT_TRUE(urumqi.size() == 2);
736 bool containsShanghai = false;
737 bool containsUrumqi = false;
738 for (unsigned int i = 0; i < urumqi.size(); i++) {
739 if (urumqi[i] == "Asia/Shanghai") {
740 containsShanghai = true;
741 }
742 if (urumqi[i] == "Asia/Urumqi") {
743 containsUrumqi = true;
744 }
745 }
746 EXPECT_TRUE(containsShanghai);
747 EXPECT_TRUE(containsUrumqi);
748 // 科伊艾克
749 vector<std::string> coyhaique = I18nTimeZone::GetTimezoneIdByLocation(-72.04, -45.34);
750 EXPECT_TRUE(coyhaique.size() == 1 && coyhaique[0] == "America/Coyhaique");
751 }
752 } // namespace I18n
753 } // namespace Global
754 } // namespace OHOS