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 <unistd.h> 18#include "functionalext.h" 19 20typedef void (*TEST_FUN)(); 21 22const int SUCCESS = 0; 23const int FAILED = -1; 24 25/** 26 * @tc.name : access_0100 27 * @tc.desc : The parameter filename is the specified file and exists, 28 * the parameter amode is F_OK,function returns successfully. 29 * @tc.level : Level 0 30 */ 31void access_0100(void) 32{ 33 const char *ptr = "accesstest.txt"; 34 FILE *fptr = fopen(ptr, "w"); 35 EXPECT_PTRNE("access_0100", fptr, NULL); 36 int isExist = access(ptr, F_OK); 37 EXPECT_EQ("access_0100", isExist, SUCCESS); 38 fclose(fptr); 39 remove(ptr); 40 fptr = NULL; 41 ptr = NULL; 42} 43 44/** 45 * @tc.name : access_0200 46 * @tc.desc : The parameter filename is the specified directory and exists, 47 * the parameter amode is F_OK,function returns SUCCESSfully. 48 * @tc.level : Level 0 49 */ 50void access_0200(void) 51{ 52 char passbuff[90]; 53 const char *ptr = "accesstest.txt"; 54 FILE *fptr = fopen(ptr, "w"); 55 EXPECT_PTRNE("access_0200", fptr, NULL); 56 getcwd(passbuff, sizeof(passbuff)); 57 int isExist = access(passbuff, F_OK); 58 EXPECT_EQ("access_0200", isExist, SUCCESS); 59 fclose(fptr); 60 remove(ptr); 61 fptr = NULL; 62 ptr = NULL; 63} 64 65/** 66 * @tc.name : access_0300 67 * @tc.desc : The parameter filename is the specified file and not exists, 68 * the parameter amode is F_OK,function returns failure. 69 * @tc.level : Level 2 70 */ 71void access_0300(void) 72{ 73 const char *ptr = "noaccesstest.txt"; 74 int isExist = access(ptr, F_OK); 75 EXPECT_EQ("access_0300", isExist, FAILED); 76 remove(ptr); 77} 78 79/** 80 * @tc.name : access_0400 81 * @tc.desc : The parameter filename is the specified directory and not exists, 82 * the parameter amode is F_OK,function returns failure. 83 * @tc.level : Level 2 84 */ 85void access_0400(void) 86{ 87 const char *ptr = "./noaccesstest"; 88 int isExist = access(ptr, F_OK); 89 EXPECT_EQ("access_0400", isExist, FAILED); 90 remove(ptr); 91} 92 93/** 94 * @tc.name : access_0500 95 * @tc.desc : The file attribute specified by the parameter filename is readable, 96 * the parameter amode is R_OK,function returns successfully. 97 * @tc.level : Level 0 98 */ 99void access_0500(void) 100{ 101 const char *ptr = "accesstest.txt"; 102 FILE *fptr = fopen(ptr, "w"); 103 EXPECT_PTRNE("access_0500", fptr, NULL); 104 int isRead = access(ptr, R_OK); 105 EXPECT_EQ("access_0500", isRead, SUCCESS); 106 fclose(fptr); 107 remove(ptr); 108 fptr = NULL; 109 ptr = NULL; 110} 111 112/** 113 * @tc.name : access_0600 114 * @tc.desc : The file attribute specified by the parameter filename is writable, 115 * the parameter amode is W_OK,function returns successfully. 116 * @tc.level : Level 0 117 */ 118void access_0600(void) 119{ 120 const char *ptr = "accesstest.txt"; 121 FILE *fptr = fopen(ptr, "w"); 122 EXPECT_PTRNE("access_0600", fptr, NULL); 123 int isWrite = access(ptr, W_OK); 124 EXPECT_EQ("access_0600", isWrite, SUCCESS); 125 fclose(fptr); 126 remove(ptr); 127 fptr = NULL; 128 ptr = NULL; 129} 130 131/** 132 * @tc.name : access_0700 133 * @tc.desc : The file attribute specified by the parameter filename is executable, 134 * the parameter amode is W_OK,function returns successfully. 135 * @tc.level : Level 0 136 */ 137void access_0700(void) 138{ 139 const char *ptr = "accesstest.txt"; 140 FILE *fptr = fopen(ptr, "w"); 141 EXPECT_PTRNE("access_0700", fptr, NULL); 142 system("chmod 777 ./accesstest.txt"); 143 int isExecute = access(ptr, X_OK); 144 EXPECT_EQ("access_0700", isExecute, SUCCESS); 145 fclose(fptr); 146 remove(ptr); 147 fptr = NULL; 148 ptr = NULL; 149} 150 151/** 152 * @tc.name : access_0800 153 * @tc.desc : The file attribute specified by the parameter filename is not executable, 154 * the parameter amode is R_OK,function returns failure. 155 * @tc.level : Level 2 156 */ 157void access_0800(void) 158{ 159 const char *ptr = "accesstest.txt"; 160 FILE *fptr = fopen(ptr, "w"); 161 EXPECT_PTRNE("access_0800", fptr, NULL); 162 int isExecute = access(ptr, X_OK); 163 EXPECT_EQ("access_0800", isExecute, FAILED); 164 fclose(fptr); 165 remove(ptr); 166 fptr = NULL; 167 ptr = NULL; 168} 169 170TEST_FUN G_Fun_Array[] = { 171 access_0100, 172 access_0200, 173 access_0300, 174 access_0400, 175 access_0500, 176 access_0600, 177 access_0700, 178 access_0800, 179}; 180 181int main(int argc, char *argv[]) 182{ 183 int num = sizeof(G_Fun_Array) / sizeof(TEST_FUN); 184 for (int pos = 0; pos < num; ++pos) { 185 G_Fun_Array[pos](); 186 } 187 return t_status; 188}