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 <stdio.h>
17 #include <errno.h>
18 #include "test.h"
19 
20 /**
21  * @tc.name      : __errno_location_0100
22  * @tc.desc      : Test the __errno_location method to get the errno address
23  * @tc.level     : Level 0
24  */
__errno_location_0100(void)25 void __errno_location_0100(void)
26 {
27     int result = *__errno_location();
28     if (result != 0) {
29         t_error("%s __errno_location get errno code is %d are not want 0\n", __func__, result);
30     }
31 }
32 
33 /**
34  * @tc.name      : __errno_location_0200
35  * @tc.desc      : The result returned by __errno_location when the value of errno has just been changed
36  * @tc.level     : Level 1
37  */
__errno_location_0200(void)38 void __errno_location_0200(void)
39 {
40     errno = 10;
41     int result = *__errno_location();
42     if (result != errno) {
43         t_error("%s __errno_location get errno code is %d are not want %d\n", __func__, result, errno);
44     }
45     errno = 0;
46 }
47 
48 /**
49  * @tc.name      : __errno_location_0300
50  * @tc.desc      : Test the address returned by __errno_location and compare it with the errno address
51  * @tc.level     : Level 1
52  */
__errno_location_0300(void)53 void __errno_location_0300(void)
54 {
55     int *result = __errno_location();
56     if (result != &errno) {
57         t_error("%s __errno_location get ptr is %p are not want %p\n", __func__, result, &errno);
58     }
59 }
60 
main(int argc, char *argv[])61 int main(int argc, char *argv[])
62 {
63     __errno_location_0100();
64     __errno_location_0200();
65     __errno_location_0300();
66     return t_status;
67 }