• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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