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