• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 <climits>
17 #include <gtest/gtest.h>
18 #include "UnitDateTimeTest.h"
19 
20 using namespace std;
21 using namespace testing::ext;
22 namespace OHOS {
23 using namespace I18N;
24 using namespace testing;
25 
26 class DateTimeTest : public ::testing::TestWithParam<LocaleInfo> {
27 public:
28     static const int32_t AMPMMAXINDEX = 2;
29     static const int32_t AMINDEX = 0;
30     static const int32_t PMINDEX = 1;
31 };
32 
33 class DateTimeLocaleRecallTest : public testing::Test {
34 public:
35     static const int32_t INDEX_NEG_ONE = -1;
36 
37 public:
38     static const int32_t INDEX_MAX_WEEK = 7;
39 
40 public:
41     static const int32_t INDEX_MAX_MONTH = 12;
42 };
43 
44 class DateTimeApplyPatternTest : public testing::Test {};
45 
46 /* *
47  * get locale index
48  *
49  * expectResult return locale index
50  */
GetLocaleIndex(LocaleInfo locale,vector<LocaleInfo> locales)51 static int GetLocaleIndex(LocaleInfo locale, vector<LocaleInfo> locales)
52 {
53     for (unsigned int index = 0; index < locales.size(); index++) {
54         if (locale == locales[index]) {
55             return index;
56         }
57     }
58     return -1;
59 }
60 
61 /* *
62  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_FORMAT_0100
63  * @tc.name     test datetimeFormat,zoneInfo is positive number
64  * @tc.desc     [C- SOFTWARE -0200]
65  */
66 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_Format_0100, Function | MediumTest | Level0)
67 {
68     LocaleInfo localeInfo = GetParam();
69     int localeIndex = GetLocaleIndex(localeInfo, g_locales);
70     enum AvailableDateTimeFormatPattern patternFormats[] = {
71     HOUR12_MINUTE_SECOND, HOUR24_MINUTE_SECOND, HOUR_MINUTE_SECOND,
72     HOUR12_MINUTE, HOUR24_MINUTE, HOUR_MINUTE,
73     ABBR_MONTH_WEEKDAY_DAY, ABBR_MONTH_DAY, YEAR_ABBR_MONTH_ABBR_WEEKDAY_DAY,
74     YEAR_WIDE_MONTH_ABBR_WEEKDAY_DAY, YEAR_SHORT_MONTH_WIDE_WEEKDAY_DAY, YEAR_SHORT_MONTH_ABBR_WEEKDAY_DAY,
75     YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, YEAR_WIDE_MONTH_DAY, FULL,
76     MEDIUM, SHORT
77     };
78     int length = sizeof(patternFormats) / sizeof(patternFormats[0]);
79     for (int i = 0; i < length; i++) {
80         DateTimeFormat *datetime = new DateTimeFormat(patternFormats[i], localeInfo);
81         ASSERT_TRUE(datetime != nullptr);
82         time_t cal = 3600 * 3 + 3600 * 24 * 6;
83         I18nStatus status = I18nStatus::ISUCCESS;
84         string appendTo = "";
85         datetime->Format(cal, "+1:45", appendTo, status);
86         EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][i]);
87         delete datetime;
88     }
89 }
90 
91 /* *
92  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_FORMAT_0200
93  * @tc.name     test datetimeFormat,zoneInfo is zero number
94  * @tc.desc     [C- SOFTWARE -0200]
95  */
96 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_Format_0200, Function | MediumTest | Level0)
97 {
98     LocaleInfo localeInfo = GetParam();
99     int localeIndex = GetLocaleIndex(localeInfo, g_locales);
100     enum AvailableDateTimeFormatPattern patternFormats[] = {
101     HOUR12_MINUTE_SECOND, HOUR24_MINUTE_SECOND, HOUR_MINUTE_SECOND,
102     HOUR12_MINUTE, HOUR24_MINUTE, HOUR_MINUTE,
103     ABBR_MONTH_WEEKDAY_DAY, ABBR_MONTH_DAY, YEAR_ABBR_MONTH_ABBR_WEEKDAY_DAY,
104     YEAR_WIDE_MONTH_ABBR_WEEKDAY_DAY, YEAR_SHORT_MONTH_WIDE_WEEKDAY_DAY, YEAR_SHORT_MONTH_ABBR_WEEKDAY_DAY,
105     YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, YEAR_WIDE_MONTH_DAY, FULL,
106     MEDIUM, SHORT
107     };
108     int length = sizeof(patternFormats) / sizeof(patternFormats[0]);
109     for (int i = 0; i < length; i++) {
110         DateTimeFormat *datetime = new DateTimeFormat(patternFormats[i], localeInfo);
111         ASSERT_TRUE(datetime != nullptr);
112         time_t cal = 3600 * 3 + 3600 * 24 * 6;
113         I18nStatus status = I18nStatus::ISUCCESS;
114         string appendTo = "";
115         datetime->Format(cal, "+0:00", appendTo, status);
116         EXPECT_EQ(appendTo, testing::g_dateTimeFormat[localeIndex][i]);
117         delete datetime;
118     }
119 }
120 
121 /* *
122  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_FORMAT_0300
123  * @tc.name     test datetimeFormat,zoneInfo is negative number
124  * @tc.desc     [C- SOFTWARE -0200]
125  */
126 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_Format_0300, Function | MediumTest | Level0)
127 {
128     LocaleInfo localeInfo = GetParam();
129     int localeIndex = GetLocaleIndex(localeInfo, g_locales);
130     enum AvailableDateTimeFormatPattern patternFormats[] = {
131     HOUR12_MINUTE_SECOND, HOUR24_MINUTE_SECOND, HOUR_MINUTE_SECOND,
132     HOUR12_MINUTE, HOUR24_MINUTE, HOUR_MINUTE,
133     ABBR_MONTH_WEEKDAY_DAY, ABBR_MONTH_DAY, YEAR_ABBR_MONTH_ABBR_WEEKDAY_DAY,
134     YEAR_WIDE_MONTH_ABBR_WEEKDAY_DAY, YEAR_SHORT_MONTH_WIDE_WEEKDAY_DAY, YEAR_SHORT_MONTH_ABBR_WEEKDAY_DAY,
135     YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, YEAR_WIDE_MONTH_DAY, FULL,
136     MEDIUM, SHORT
137     };
138     int length = sizeof(patternFormats) / sizeof(patternFormats[0]);
139     for (int i = 0; i < length; i++) {
140         DateTimeFormat *datetime = new DateTimeFormat(patternFormats[i], localeInfo);
141         ASSERT_TRUE(datetime != nullptr);
142         time_t cal = 3600 * 3 + 3600 * 24 * 6;
143         I18nStatus status = I18nStatus::ISUCCESS;
144         string appendTo = "";
145         datetime->Format(cal, "-1:45", appendTo, status);
146         EXPECT_EQ(appendTo, testing::g_dateTimeFormatNegative[localeIndex][i]);
147         delete datetime;
148     }
149 }
150 
151 /* *
152  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETWEEKNAME_0100
153  * @tc.name     test GetWeekName,DateTimeDataType is FORMAT_ABBR,index is -1
154  * @tc.desc     [C- SOFTWARE -0200]
155  */
156 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetWeekName_0100, Function | MediumTest | Level0)
157 {
158     LocaleInfo localeInfo = GetParam();
159     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
160     auto index = OHOS::DateTimeLocaleRecallTest::INDEX_NEG_ONE;
161     std::string formatWeekName = datetime->GetWeekName(index, DateTimeDataType::FORMAT_ABBR);
162     EXPECT_EQ(formatWeekName, "");
163 }
164 
165 /* *
166  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETWEEKNAME_0200
167  * @tc.name     test GetWeekName,DateTimeDataType is FORMAT_ABBR,index is 7
168  * @tc.desc     [C- SOFTWARE -0200]
169  */
170 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetWeekName_0200, Function | MediumTest | Level0)
171 {
172     LocaleInfo localeInfo = GetParam();
173     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
174     auto index = OHOS::DateTimeLocaleRecallTest::INDEX_MAX_WEEK;
175     std::string formatWeekName = datetime->GetWeekName(index, DateTimeDataType::FORMAT_ABBR);
176     EXPECT_EQ(formatWeekName, "");
177 }
178 
179 /* *
180  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETWEEKNAME_0300
181  * @tc.name     test GetWeekName,DateTimeDataType is FORMAT_ABBR,index is 0-6
182  * @tc.desc     [C- SOFTWARE -0200]
183  */
184 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetWeekName_0300, Function | MediumTest | Level0)
185 {
186     LocaleInfo localeInfo = GetParam();
187     int localeIndex = GetLocaleIndex(localeInfo, g_locales);
188     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
189     for (int weekindex = 0; weekindex < DateTimeLocaleRecallTest::INDEX_MAX_WEEK; weekindex++) {
190         std::string formatWeekName = datetime->GetWeekName(weekindex, DateTimeDataType::FORMAT_ABBR);
191         EXPECT_EQ(formatWeekName, g_formatAbbrDayNames[localeIndex][weekindex]);
192     }
193 }
194 
195 /* *
196  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETWEEKNAME_0400
197  * @tc.name     test GetWeekName,DateTimeDataType is FORMAT_WIDE
198  * @tc.desc     [C- SOFTWARE -0200]
199  */
200 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetWeekName_0400, Function | MediumTest | Level0)
201 {
202     LocaleInfo localeInfo = GetParam();
203     int localeIndex = GetLocaleIndex(localeInfo, g_locales);
204     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
205     for (int weekindex = 0; weekindex < DateTimeLocaleRecallTest::INDEX_MAX_WEEK; weekindex++) {
206         std::string formatWeekName = datetime->GetWeekName(weekindex, DateTimeDataType::FORMAT_WIDE);
207         EXPECT_EQ(formatWeekName, g_formatWideDayNames[localeIndex][weekindex]);
208     }
209 }
210 
211 /* *
212  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETWEEKNAME_0500
213  * @tc.name     test GetWeekName,DateTimeDataType is STANDALONE_ABBR
214  * @tc.desc     [C- SOFTWARE -0200]
215  */
216 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetWeekName_0500, Function | MediumTest | Level0)
217 {
218     LocaleInfo localeInfo = GetParam();
219     int localeIndex = GetLocaleIndex(localeInfo, g_locales);
220     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
221     for (int weekindex = 0; weekindex < DateTimeLocaleRecallTest::INDEX_MAX_WEEK; weekindex++) {
222         std::string formatWeekName = datetime->GetWeekName(weekindex, DateTimeDataType::STANDALONE_ABBR);
223         EXPECT_EQ(formatWeekName, g_standaloneAbbrDayNames[localeIndex][weekindex]);
224     }
225 }
226 
227 /* *
228  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETWEEKNAME_0600
229  * @tc.name     test GetWeekName,DateTimeDataType is STANDALONE_WIDE
230  * @tc.desc     [C- SOFTWARE -0200]
231  */
232 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetWeekName_0600, Function | MediumTest | Level0)
233 {
234     LocaleInfo localeInfo = GetParam();
235     int localeIndex = GetLocaleIndex(localeInfo, g_locales);
236     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
237     for (int weekindex = 0; weekindex < DateTimeLocaleRecallTest::INDEX_MAX_WEEK; weekindex++) {
238         std::string formatWeekName = datetime->GetWeekName(weekindex, DateTimeDataType::STANDALONE_WIDE);
239         EXPECT_EQ(formatWeekName, g_standaloneWideDayNames[localeIndex][weekindex]);
240     }
241 }
242 
243 /* *
244  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETMONTHNAME_0100
245  * @tc.name     test GetMonthName,index is illegal,index is -1
246  * @tc.desc     [C- SOFTWARE -0200]
247  */
248 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetMonthName_0100, Function | MediumTest | Level0)
249 {
250     LocaleInfo localeInfo = GetParam();
251     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
252     auto index = DateTimeLocaleRecallTest::INDEX_NEG_ONE;
253     std::string formatMonthName = datetime->GetMonthName(index, DateTimeDataType::FORMAT_ABBR);
254     EXPECT_EQ(formatMonthName, "");
255 }
256 
257 /* *
258  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETMONTHNAME_0200
259  * @tc.name     test GetMonthName,index is illegal,index is 12
260  * @tc.desc     [C- SOFTWARE -0200]
261  */
262 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetMonthName_0200, Function | MediumTest | Level0)
263 {
264     LocaleInfo localeInfo = GetParam();
265     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
266     auto index = DateTimeLocaleRecallTest::INDEX_MAX_MONTH;
267     std::string formatMonthName = datetime->GetMonthName(index, DateTimeDataType::FORMAT_ABBR);
268     EXPECT_EQ(formatMonthName, "");
269 }
270 
271 /* *
272  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETMONTHNAME_0300
273  * @tc.name     test GetMonthName,index is legal,type is FORMAT_ABBR
274  * @tc.desc     [C- SOFTWARE -0200]
275  */
276 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetMonthName_0300, Function | MediumTest | Level0)
277 {
278     LocaleInfo localeInfo = GetParam();
279     int localeIndex = GetLocaleIndex(localeInfo, g_locales);
280     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
281     for (int monthIndex = 0; monthIndex < DateTimeLocaleRecallTest::INDEX_MAX_MONTH; monthIndex++) {
282         std::string formatMonthName = datetime->GetMonthName(monthIndex, DateTimeDataType::FORMAT_ABBR);
283         EXPECT_EQ(formatMonthName, g_formatAbbrMonthNames[localeIndex][monthIndex]);
284     }
285 }
286 
287 /* *
288  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETMONTHNAME_0400
289  * @tc.name     test GetMonthName,index is legal,type is FORMAT_WIDE
290  * @tc.desc     [C- SOFTWARE -0200]
291  */
292 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetMonthName_0400, Function | MediumTest | Level0)
293 {
294     LocaleInfo localeInfo = GetParam();
295     int localeIndex = GetLocaleIndex(localeInfo, g_locales);
296     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
297     for (int monthIndex = 0; monthIndex < DateTimeLocaleRecallTest::INDEX_MAX_MONTH; monthIndex++) {
298         std::string formatMonthName = datetime->GetMonthName(monthIndex, DateTimeDataType::FORMAT_WIDE);
299         EXPECT_EQ(formatMonthName, g_formatWideMonthNames[localeIndex][monthIndex]);
300     }
301 }
302 
303 /* *
304  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETMONTHNAME_0500
305  * @tc.name     test GetMonthName,index is legal,type is STANDALONE_ABBR
306  * @tc.desc     [C- SOFTWARE -0200]
307  */
308 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetMonthName_0500, Function | MediumTest | Level0)
309 {
310     LocaleInfo localeInfo = GetParam();
311     int localeIndex = GetLocaleIndex(localeInfo, g_locales);
312     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
313     for (int monthIndex = 0; monthIndex < DateTimeLocaleRecallTest::INDEX_MAX_MONTH; monthIndex++) {
314         std::string formatMonthName = datetime->GetMonthName(monthIndex, DateTimeDataType::STANDALONE_ABBR);
315         EXPECT_EQ(formatMonthName, g_standaloneAbbrMonthNames[localeIndex][monthIndex]);
316     }
317 }
318 
319 /* *
320  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETMONTHNAME_0600
321  * @tc.name     test GetMonthName,index is legal,type is STANDALONE_WIDE
322  * @tc.desc     [C- SOFTWARE -0200]
323  */
324 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetMonthName_0600, Function | MediumTest | Level0)
325 {
326     LocaleInfo localeInfo = GetParam();
327     int localeIndex = GetLocaleIndex(localeInfo, g_locales);
328     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
329     for (int monthIndex = 0; monthIndex < DateTimeLocaleRecallTest::INDEX_MAX_MONTH; monthIndex++) {
330         std::string formatMonthName = datetime->GetMonthName(monthIndex, DateTimeDataType::STANDALONE_WIDE);
331         EXPECT_EQ(formatMonthName, g_standaloneWideMonthNames[localeIndex][monthIndex]);
332     }
333 }
334 
335 /* *
336  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETAMPMMARKERS_0100
337  * @tc.name     test GetAmPmMarkers ,index is -1
338  * @tc.desc     [C- SOFTWARE -0200]
339  */
340 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetAmPmMarkers_0100, Function | MediumTest | Level0)
341 {
342     LocaleInfo localeInfo = GetParam();
343     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
344     std::string infoAmPm = datetime->GetAmPmMarker(-1, DateTimeDataType::FORMAT_ABBR);
345     EXPECT_EQ(infoAmPm, "");
346 }
347 
348 /* *
349  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETAMPMMARKERS_0200
350  * @tc.name     test GetAmPmMarkers ,index is 2
351  * @tc.desc     [C- SOFTWARE -0200]
352  */
353 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetAmPmMarkers_0200, Function | MediumTest | Level0)
354 {
355     LocaleInfo localeInfo = GetParam();
356     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
357     int index = DateTimeTest::AMPMMAXINDEX;
358     std::string infoAmPm = datetime->GetAmPmMarker(index, DateTimeDataType::FORMAT_ABBR);
359     EXPECT_EQ(infoAmPm, "");
360 }
361 
362 /* *
363  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETAMPMMARKERS_0300
364  * @tc.name     test GetAmPmMarkers ,index is 0
365  * @tc.desc     [C- SOFTWARE -0200]
366  */
367 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetAmPmMarkers_0300, Function | MediumTest | Level0)
368 {
369     LocaleInfo localeInfo = GetParam();
370     int localeIndex = GetLocaleIndex(localeInfo, g_locales);
371     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
372     int index = DateTimeTest::AMINDEX;
373     std::string infoAmPm = datetime->GetAmPmMarker(index, DateTimeDataType::FORMAT_ABBR);
374     EXPECT_EQ(infoAmPm, g_amPmMarkers[localeIndex][0]);
375 }
376 
377 /* *
378  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_GETAMPMMARKERS_0400
379  * @tc.name     test GetAmPmMarkers ,index is 1
380  * @tc.desc     [C- SOFTWARE -0200]
381  */
382 HWTEST_P(DateTimeTest, GLOBAL_DateTimeFormat_GetAmPmMarkers_0400, Function | MediumTest | Level0)
383 {
384     LocaleInfo localeInfo = GetParam();
385     int localeIndex = GetLocaleIndex(localeInfo, g_locales);
386     DateTimeFormat *datetime = new DateTimeFormat(HOUR12_MINUTE_SECOND, localeInfo);
387     int index = DateTimeTest::PMINDEX;
388     std::string infoAmPm = datetime->GetAmPmMarker(index, DateTimeDataType::FORMAT_ABBR);
389     EXPECT_EQ(infoAmPm, g_amPmMarkers[localeIndex][1]);
390 }
391 
392 INSTANTIATE_TEST_CASE_P(AllDateTimeTest, DateTimeTest,
393     Values(LocaleInfo("ar", "", ""), LocaleInfo("ar", "AE"), LocaleInfo("ar", "EG"), LocaleInfo("as", "Latn", "IN"),
394     LocaleInfo("de", "DE"), LocaleInfo("en", "", ""), LocaleInfo("en", "GB"), LocaleInfo("en", "Qaag", ""),
395     LocaleInfo("en", "US"), LocaleInfo("es", "ES"), LocaleInfo("es", "US"), LocaleInfo("fr", "FR"),
396     LocaleInfo("it", "IT"), LocaleInfo("ka", "GE"), LocaleInfo("mai", "Deva", ""), LocaleInfo("my", "MM"),
397     LocaleInfo("pa", "Guru", ""), LocaleInfo("pt", "BR"), LocaleInfo("pt", "PT"), LocaleInfo("sr", "Cyrl", ""),
398     LocaleInfo("th", "TH"), LocaleInfo("zh", "", ""), LocaleInfo("zh", "Hans", "CN"), LocaleInfo("zh", "Hans", "HK"),
399     LocaleInfo("zh", "Hans", "MO"), LocaleInfo("zh", "Hant", "TW")));
400 
401 
402 /* *
403  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_0100
404  * @tc.name     test ApplyPattern api,requestPattern is HOUR12_MINUTE_SECOND
405  * @tc.desc     [C- SOFTWARE -0200]
406  */
407 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_0100, Function | MediumTest | Level0)
408 {
409     LocaleInfo *locale = new LocaleInfo("en", "US");
410     int localeIndex = GetLocaleIndex(*locale, g_locales);
411     DateTimeFormat *datetime = new DateTimeFormat(YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, *locale);
412     auto pattern = AvailableDateTimeFormatPattern::HOUR12_MINUTE_SECOND;
413     datetime->ApplyPattern(pattern);
414     time_t cal = 3600 * 3 + 3600 * 24 * 6;
415     I18nStatus status = I18nStatus::ISUCCESS;
416     string appendTo = "";
417     datetime->Format(cal, "+1:45", appendTo, status);
418     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][0]);
419 }
420 
421 /* *
422  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_0200
423  * @tc.name     test ApplyPattern api,requestPattern is HOUR24_MINUTE_SECOND
424  * @tc.desc     [C- SOFTWARE -0200]
425  */
426 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_0200, Function | MediumTest | Level0)
427 {
428     LocaleInfo *locale = new LocaleInfo("en", "US");
429     int localeIndex = GetLocaleIndex(*locale, g_locales);
430     DateTimeFormat *datetime = new DateTimeFormat(YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, *locale);
431     auto pattern = AvailableDateTimeFormatPattern::HOUR24_MINUTE_SECOND;
432     datetime->ApplyPattern(pattern);
433     time_t cal = 3600 * 3 + 3600 * 24 * 6;
434     I18nStatus status = I18nStatus::ISUCCESS;
435     string appendTo = "";
436     datetime->Format(cal, "+1:45", appendTo, status);
437     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][1]);
438 }
439 
440 /* *
441  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_0300
442  * @tc.name     test ApplyPattern api,requestPattern is HOUR_MINUTE_SECOND
443  * @tc.desc     [C- SOFTWARE -0200]
444  */
445 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_0300, Function | MediumTest | Level0)
446 {
447     LocaleInfo *locale = new LocaleInfo("en", "US");
448     int localeIndex = GetLocaleIndex(*locale, g_locales);
449     DateTimeFormat *datetime = new DateTimeFormat(YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, *locale);
450     auto pattern = AvailableDateTimeFormatPattern::HOUR_MINUTE_SECOND;
451     datetime->ApplyPattern(pattern);
452     time_t cal = 3600 * 3 + 3600 * 24 * 6;
453     I18nStatus status = I18nStatus::ISUCCESS;
454     string appendTo = "";
455     datetime->Format(cal, "+1:45", appendTo, status);
456     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][2]);
457 }
458 
459 /* *
460  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_0400
461  * @tc.name     test ApplyPattern api,requestPattern is HOUR12_MINUTE
462  * @tc.desc     [C- SOFTWARE -0200]
463  */
464 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_0400, Function | MediumTest | Level0)
465 {
466     LocaleInfo *locale = new LocaleInfo("en", "US");
467     int localeIndex = GetLocaleIndex(*locale, g_locales);
468     DateTimeFormat *datetime = new DateTimeFormat(YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, *locale);
469     auto pattern = AvailableDateTimeFormatPattern::HOUR12_MINUTE;
470     datetime->ApplyPattern(pattern);
471     time_t cal = 3600 * 3 + 3600 * 24 * 6;
472     I18nStatus status = I18nStatus::ISUCCESS;
473     string appendTo = "";
474     datetime->Format(cal, "+1:45", appendTo, status);
475     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][3]);
476 }
477 
478 /* *
479  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_0500
480  * @tc.name     test ApplyPattern api,requestPattern is HOUR24_MINUTE
481  * @tc.desc     [C- SOFTWARE -0200]
482  */
483 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_0500, Function | MediumTest | Level0)
484 {
485     LocaleInfo *locale = new LocaleInfo("en", "US");
486     int localeIndex = GetLocaleIndex(*locale, g_locales);
487     DateTimeFormat *datetime = new DateTimeFormat(YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, *locale);
488     auto pattern = AvailableDateTimeFormatPattern::HOUR24_MINUTE;
489     datetime->ApplyPattern(pattern);
490     time_t cal = 3600 * 3 + 3600 * 24 * 6;
491     I18nStatus status = I18nStatus::ISUCCESS;
492     string appendTo = "";
493     datetime->Format(cal, "+1:45", appendTo, status);
494     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][4]);
495 }
496 
497 /* *
498  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_0600
499  * @tc.name     test ApplyPattern api,requestPattern is HOUR_MINUTE
500  * @tc.desc     [C- SOFTWARE -0200]
501  */
502 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_0600, Function | MediumTest | Level0)
503 {
504     LocaleInfo *locale = new LocaleInfo("en", "US");
505     int localeIndex = GetLocaleIndex(*locale, g_locales);
506     DateTimeFormat *datetime = new DateTimeFormat(YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, *locale);
507     auto pattern = AvailableDateTimeFormatPattern::HOUR_MINUTE;
508     datetime->ApplyPattern(pattern);
509     time_t cal = 3600 * 3 + 3600 * 24 * 6;
510     I18nStatus status = I18nStatus::ISUCCESS;
511     string appendTo = "";
512     datetime->Format(cal, "+1:45", appendTo, status);
513     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][5]);
514 }
515 
516 /* *
517  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_0700
518  * @tc.name     test ApplyPattern api,requestPattern is ABBR_MONTH_WEEKDAY_DAY
519  * @tc.desc     [C- SOFTWARE -0200]
520  */
521 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_0700, Function | MediumTest | Level0)
522 {
523     LocaleInfo *locale = new LocaleInfo("en", "US");
524     int localeIndex = GetLocaleIndex(*locale, g_locales);
525     DateTimeFormat *datetime = new DateTimeFormat(YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, *locale);
526     auto pattern = AvailableDateTimeFormatPattern::ABBR_MONTH_WEEKDAY_DAY;
527     datetime->ApplyPattern(pattern);
528     time_t cal = 3600 * 3 + 3600 * 24 * 6;
529     I18nStatus status = I18nStatus::ISUCCESS;
530     string appendTo = "";
531     datetime->Format(cal, "+1:45", appendTo, status);
532     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][6]);
533 }
534 
535 /* *
536  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_0800
537  * @tc.name     test ApplyPattern api,requestPattern is ABBR_MONTH_DAY
538  * @tc.desc     [C- SOFTWARE -0200]
539  */
540 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_0800, Function | MediumTest | Level0)
541 {
542     LocaleInfo *locale = new LocaleInfo("en", "US");
543     int localeIndex = GetLocaleIndex(*locale, g_locales);
544     DateTimeFormat *datetime = new DateTimeFormat(YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, *locale);
545     auto pattern = AvailableDateTimeFormatPattern::ABBR_MONTH_DAY;
546     datetime->ApplyPattern(pattern);
547     time_t cal = 3600 * 3 + 3600 * 24 * 6;
548     I18nStatus status = I18nStatus::ISUCCESS;
549     string appendTo = "";
550     datetime->Format(cal, "+1:45", appendTo, status);
551     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][7]);
552 }
553 
554 /* *
555  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_0900
556  * @tc.name     test ApplyPattern api,requestPattern is YEAR_ABBR_MONTH_ABBR_WEEKDAY_DAY
557  * @tc.desc     [C- SOFTWARE -0200]
558  */
559 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_0900, Function | MediumTest | Level0)
560 {
561     LocaleInfo *locale = new LocaleInfo("en", "US");
562     int localeIndex = GetLocaleIndex(*locale, g_locales);
563     DateTimeFormat *datetime = new DateTimeFormat(YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, *locale);
564     auto pattern = AvailableDateTimeFormatPattern::YEAR_ABBR_MONTH_ABBR_WEEKDAY_DAY;
565     datetime->ApplyPattern(pattern);
566     time_t cal = 3600 * 3 + 3600 * 24 * 6;
567     I18nStatus status = I18nStatus::ISUCCESS;
568     string appendTo = "";
569     datetime->Format(cal, "+1:45", appendTo, status);
570     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][8]);
571 }
572 
573 /* *
574  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_1000
575  * @tc.name     test ApplyPattern api,requestPattern is YEAR_WIDE_MONTH_ABBR_WEEKDAY_DAY
576  * @tc.desc     [C- SOFTWARE -0200]
577  */
578 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_1000, Function | MediumTest | Level0)
579 {
580     LocaleInfo *locale = new LocaleInfo("en", "US");
581     int localeIndex = GetLocaleIndex(*locale, g_locales);
582     DateTimeFormat *datetime = new DateTimeFormat(YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, *locale);
583     auto pattern = AvailableDateTimeFormatPattern::YEAR_WIDE_MONTH_ABBR_WEEKDAY_DAY;
584     datetime->ApplyPattern(pattern);
585     time_t cal = 3600 * 3 + 3600 * 24 * 6;
586     I18nStatus status = I18nStatus::ISUCCESS;
587     string appendTo = "";
588     datetime->Format(cal, "+1:45", appendTo, status);
589     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][9]);
590 }
591 
592 /* *
593  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_1100
594  * @tc.name     test ApplyPattern api,requestPattern is YEAR_SHORT_MONTH_WIDE_WEEKDAY_DAY
595  * @tc.desc     [C- SOFTWARE -0200]
596  */
597 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_1100, Function | MediumTest | Level0)
598 {
599     LocaleInfo *locale = new LocaleInfo("en", "US");
600     int localeIndex = GetLocaleIndex(*locale, g_locales);
601     DateTimeFormat *datetime = new DateTimeFormat(YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, *locale);
602     auto pattern = AvailableDateTimeFormatPattern::YEAR_SHORT_MONTH_WIDE_WEEKDAY_DAY;
603     datetime->ApplyPattern(pattern);
604     time_t cal = 3600 * 3 + 3600 * 24 * 6;
605     I18nStatus status = I18nStatus::ISUCCESS;
606     string appendTo = "";
607     datetime->Format(cal, "+1:45", appendTo, status);
608     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][10]);
609 }
610 
611 /* *
612  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_1200
613  * @tc.name     test ApplyPattern api,requestPattern is YEAR_SHORT_MONTH_ABBR_WEEKDAY_DAY
614  * @tc.desc     [C- SOFTWARE -0200]
615  */
616 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_1200, Function | MediumTest | Level0)
617 {
618     LocaleInfo *locale = new LocaleInfo("en", "US");
619     int localeIndex = GetLocaleIndex(*locale, g_locales);
620     DateTimeFormat *datetime = new DateTimeFormat(YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY, *locale);
621     auto pattern = AvailableDateTimeFormatPattern::YEAR_SHORT_MONTH_ABBR_WEEKDAY_DAY;
622     datetime->ApplyPattern(pattern);
623     time_t cal = 3600 * 3 + 3600 * 24 * 6;
624     I18nStatus status = I18nStatus::ISUCCESS;
625     string appendTo = "";
626     datetime->Format(cal, "+1:45", appendTo, status);
627     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][11]);
628 }
629 
630 /* *
631  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_1300
632  * @tc.name     test ApplyPattern api,requestPattern is YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY
633  * @tc.desc     [C- SOFTWARE -0200]
634  */
635 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_1300, Function | MediumTest | Level0)
636 {
637     LocaleInfo *locale = new LocaleInfo("en", "US");
638     int localeIndex = GetLocaleIndex(*locale, g_locales);
639     DateTimeFormat *datetime = new DateTimeFormat(YEAR_SHORT_MONTH_ABBR_WEEKDAY_DAY, *locale);
640     auto pattern = AvailableDateTimeFormatPattern::YEAR_ABBR_MONTH_WIDE_WEEKDAY_DAY;
641     datetime->ApplyPattern(pattern);
642     time_t cal = 3600 * 3 + 3600 * 24 * 6;
643     I18nStatus status = I18nStatus::ISUCCESS;
644     string appendTo = "";
645     datetime->Format(cal, "+1:45", appendTo, status);
646     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][12]);
647 }
648 
649 /* *
650  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_1400
651  * @tc.name     test ApplyPattern api,requestPattern is YEAR_WIDE_MONTH_DAY
652  * @tc.desc     [C- SOFTWARE -0200]
653  */
654 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_1400, Function | MediumTest | Level0)
655 {
656     LocaleInfo *locale = new LocaleInfo("en", "US");
657     int localeIndex = GetLocaleIndex(*locale, g_locales);
658     DateTimeFormat *datetime = new DateTimeFormat(MEDIUM, *locale);
659     auto pattern = AvailableDateTimeFormatPattern::YEAR_WIDE_MONTH_DAY;
660     datetime->ApplyPattern(pattern);
661     time_t cal = 3600 * 3 + 3600 * 24 * 6;
662     I18nStatus status = I18nStatus::ISUCCESS;
663     string appendTo = "";
664     datetime->Format(cal, "+1:45", appendTo, status);
665     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][13]);
666 }
667 
668 /* *
669  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_1500
670  * @tc.name     test ApplyPattern api,requestPattern is FULL
671  * @tc.desc     [C- SOFTWARE -0200]
672  */
673 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_1500, Function | MediumTest | Level0)
674 {
675     LocaleInfo *locale = new LocaleInfo("en", "US");
676     int localeIndex = GetLocaleIndex(*locale, g_locales);
677     DateTimeFormat *datetime = new DateTimeFormat(MEDIUM, *locale);
678     auto pattern = AvailableDateTimeFormatPattern::FULL;
679     datetime->ApplyPattern(pattern);
680     time_t cal = 3600 * 3 + 3600 * 24 * 6;
681     I18nStatus status = I18nStatus::ISUCCESS;
682     string appendTo = "";
683     datetime->Format(cal, "+1:45", appendTo, status);
684     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][14]);
685 }
686 
687 /* *
688  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_1600
689  * @tc.name     test ApplyPattern api,requestPattern is MEDIUM
690  * @tc.desc     [C- SOFTWARE -0200]
691  */
692 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_1600, Function | MediumTest | Level0)
693 {
694     LocaleInfo *locale = new LocaleInfo("en", "US");
695     int localeIndex = GetLocaleIndex(*locale, g_locales);
696     DateTimeFormat *datetime = new DateTimeFormat(YEAR_SHORT_MONTH_ABBR_WEEKDAY_DAY, *locale);
697     auto pattern = AvailableDateTimeFormatPattern::MEDIUM;
698     datetime->ApplyPattern(pattern);
699     time_t cal = 3600 * 3 + 3600 * 24 * 6;
700     I18nStatus status = I18nStatus::ISUCCESS;
701     string appendTo = "";
702     datetime->Format(cal, "+1:45", appendTo, status);
703     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][15]);
704 }
705 
706 /* *
707  * @tc.number   SUB_GLOBAL_GLOBALIZATIONBUSINESS_DATETIMEFORMAT_APPLYPATTERN_1700
708  * @tc.name     test ApplyPattern api,requestPattern is SHORT
709  * @tc.desc     [C- SOFTWARE -0200]
710  */
711 HWTEST_F(DateTimeApplyPatternTest, GLOBAL_DateTimeFormat_ApplyPattern_1700, Function | MediumTest | Level0)
712 {
713     LocaleInfo *locale = new LocaleInfo("en", "US");
714     int localeIndex = GetLocaleIndex(*locale, g_locales);
715     DateTimeFormat *datetime = new DateTimeFormat(MEDIUM, *locale);
716     auto pattern = AvailableDateTimeFormatPattern::SHORT;
717     datetime->ApplyPattern(pattern);
718     time_t cal = 3600 * 3 + 3600 * 24 * 6;
719     I18nStatus status = I18nStatus::ISUCCESS;
720     string appendTo = "";
721     datetime->Format(cal, "+1:45", appendTo, status);
722     EXPECT_EQ(appendTo, testing::g_dataTimeFormatPositive[localeIndex][16]);
723 }
724 } // namespace OHOS