• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (c) 2022 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 <stdlib.h>
17 #include <time.h>
18 #include "functionalext.h"
19 
20 #define __TEST_DATA_YEAR__ 121
21 #define __TEST_DATA_MONTH__ 9
22 #define __TEST_DATA_DAY__ 3
23 #define __TEST_DATA_HOUR__ 9
24 #define __TEST_DATA_MINUTE__ 12
25 
26 struct time_struct {
27     const char *tz;
28 };
29 
30 static const struct time_struct gResultData[] = {
31     {"Asia/Shanghai"},
32     {"Asia/Tokyo"},
33     {"Europe/Moscow"},
34     {"America/New_York"},
35     {"Europe/Berlin"},
36 };
37 
38 /**
39  * @tc.name      : time_0100
40  * @tc.desc      : according to different time zones, get time
41  * @tc.level     : Level 0
42  */
time_0100(void)43 void time_0100(void)
44 {
45     for (int32_t i = 0; i < (int32_t)(sizeof(gResultData) / sizeof(gResultData[0])); i++) {
46         const char *tz = gResultData[i].tz;
47         const char *handlerChar;
48 #ifdef TIME_ZONE_SUB_TAG
49         char *str = strrchr(tz, TIME_ZONE_SUB_TAG);
50         if (str) {
51             handlerChar = ++str;
52         } else {
53             handlerChar = tz;
54         }
55 #else
56         handlerChar = tz;
57 #endif
58         setenv("TZ", handlerChar, 1);
59         tzset();
60         system("date '2021-10-3 9:12:12' > /dev/NULL");
61         time_t curClock;
62         time_t t = time(&curClock);
63         EXPECT_TRUE("time_0100", t > 0);
64         struct tm *localtm = localtime(&curClock);
65         if (!localtm) {
66             EXPECT_PTRNE("time_0100", localtm, NULL);
67             return;
68         }
69         EXPECT_EQ("time_0100", __TEST_DATA_YEAR__, localtm->tm_year);
70         EXPECT_EQ("time_0100", __TEST_DATA_MONTH__, localtm->tm_mon);
71         EXPECT_EQ("time_0100", __TEST_DATA_DAY__, localtm->tm_mday);
72         EXPECT_EQ("time_0100", __TEST_DATA_HOUR__, localtm->tm_hour);
73         EXPECT_EQ("time_0100", __TEST_DATA_MINUTE__, localtm->tm_min);
74     }
75 }
76 
main(void)77 int main(void)
78 {
79     time_0100();
80     return t_status;
81 }