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 <fcntl.h>
17 #include <stdbool.h>
18 #include <stdio.h>
19 #include <stdlib.h>
20 #include "functionalext.h"
21
22 const int32_t INIT_LEN = 0;
23 const int32_t INCREASE_LEN = 1;
24 const int32_t CREAT_MODE = 666;
25
26 /**
27 * @tc.name : fopen_0100
28 * @tc.desc : Verify fopen("r") and fclose fread and fwrite, fopen success, fread success, fwrite failed
29 * @tc.level : level 0.
30 */
fopen_0100(void)31 void fopen_0100(void)
32 {
33 char abc[100] = {0};
34 const char *add = "this is tempory test!";
35 const char *wrstring = "to write";
36 const char *wstring = "this is tempory test!";
37 int ret = creat("tempory_test.txt", CREAT_MODE);
38 if (ret < 0) {
39 EXPECT_MT("fopen_0100", ret, 0);
40 return;
41 }
42 FILE *fptr = fopen("tempory_test.txt", "w");
43 if (fptr != NULL) {
44 size_t wrsize = fwrite(wstring, sizeof(char), strlen(wstring), fptr);
45 if (wrsize == INIT_LEN) {
46 EXPECT_EQ("fopen_0100", wrsize, INIT_LEN);
47 }
48 fclose(fptr);
49 }
50 fptr = fopen("tempory_test.txt", "r");
51 bool writeFailedFlag = false;
52 bool consistentFlag = false;
53 if (fptr != NULL) {
54 while (!feof(fptr)) {
55 int32_t rsize = fread(abc, sizeof(abc), 1, fptr);
56 EXPECT_EQ("pread_0100", rsize, 0);
57 }
58 if (!strncmp(abc, add, strlen(add))) {
59 consistentFlag = true;
60 }
61
62 size_t wrsize = fwrite(wrstring, sizeof(char), strlen(wrstring), fptr);
63 if (wrsize == INIT_LEN) {
64 writeFailedFlag = true;
65 }
66 fclose(fptr);
67 }
68
69 EXPECT_TRUE("fopen_0100", writeFailedFlag);
70 EXPECT_TRUE("fopen_0100", consistentFlag);
71 remove("tempory_test.txt");
72 }
73
74 /**
75 * @tc.name : fopen_0200
76 * @tc.desc : Verify fopen("r") and fclose and fopen failed
77 * @tc.level : level 2.
78 */
fopen_0200(void)79 void fopen_0200(void)
80 {
81 FILE *fptr = fopen("tempory_test1.txt", "r");
82 EXPECT_EQ("fopen_0200", fptr, NULL);
83 }
84
85 /**
86 * @tc.name : fopen_0300
87 * @tc.desc : Verify fopen("w") and fclose and fread and fwrite and fopen success, fread failed, fwrite success
88 * @tc.level : level 0.
89 */
fopen_0300(void)90 void fopen_0300(void)
91 {
92 int32_t rsize = 0;
93 char abc[100] = {0};
94 const char *wrstring = "to write";
95 FILE *fptr = fopen("tempory_test3.txt", "w");
96 bool writeSuccessFlag = false;
97
98 if (fptr != NULL) {
99 rsize = fread(abc, sizeof(abc), 1, fptr);
100 size_t wrsize = fwrite(wrstring, sizeof(char), strlen(wrstring), fptr);
101 if (wrsize == INIT_LEN) {
102 EXPECT_EQ("fopen_0300", wrsize, INIT_LEN);
103 ;
104 } else if (wrsize == strlen(wrstring)) {
105 writeSuccessFlag = true;
106 }
107 fclose(fptr);
108 }
109
110 EXPECT_EQ("fopen_0300", rsize, INIT_LEN);
111 EXPECT_TRUE("fopen_0300", writeSuccessFlag);
112 remove("tempory_test3.txt");
113 }
114
115 /**
116 * @tc.name : fopen_0400
117 * @tc.desc : Verify fopen("w") and fclose and fread and fwrite and fopen success, fread failed, fwrite success
118 * @tc.level : level 1.
119 */
fopen_0400(void)120 void fopen_0400(void)
121 {
122 int32_t rsize = 0;
123 char abc[100] = {0};
124 const char *wrstring = "to write";
125 FILE *fptr = fopen("tempory_test2.txt", "w");
126 bool writeSuccessFlag = false;
127
128 if (fptr != NULL) {
129 rsize = fread(abc, sizeof(abc), 1, fptr);
130
131 size_t wrsize = fwrite(wrstring, sizeof(char), strlen(wrstring), fptr);
132 if (wrsize == INIT_LEN) {
133 EXPECT_EQ("fopen_0400", wrsize, INIT_LEN);
134 } else if (wrsize == strlen(wrstring)) {
135 writeSuccessFlag = true;
136 }
137 fclose(fptr);
138 }
139
140 EXPECT_EQ("fopen_0400", rsize, INIT_LEN);
141 EXPECT_TRUE("fopen_0400", writeSuccessFlag);
142 remove("tempory_test2.txt");
143 }
144
145 /**
146 * @tc.name : fopen_0500
147 * @tc.desc : Verify fopen("a") and fclose and fread and fwrite and fopen success, fread success, fwrite success
148 * @tc.level : level 0.
149 */
fopen_0500(void)150 void fopen_0500(void)
151 {
152 char abc[100] = {0};
153 const char *add = "this is tempory test!to write";
154 const char *wrstring = "to write";
155 const char *wstring = "this is tempory test!";
156 int ret = creat("tempory_test5.txt", CREAT_MODE);
157 if (ret < 0) {
158 EXPECT_MT("fopen_0500", ret, 0);
159 return;
160 }
161 FILE *fptr = fopen("tempory_test5.txt", "w");
162 if (fptr != NULL) {
163 size_t wrsize = fwrite(wstring, sizeof(char), strlen(wstring), fptr);
164 if (wrsize == INIT_LEN) {
165 EXPECT_EQ("fopen_0500", wrsize, INIT_LEN);
166 }
167 fclose(fptr);
168 }
169
170 fptr = fopen("tempory_test5.txt", "a");
171 bool writeSuccessFlag = false;
172 bool consistentFlag = false;
173 if (fptr != NULL) {
174 fseek(fptr, 0, SEEK_SET);
175 size_t wrsize = fwrite(wrstring, sizeof(char), strlen(wrstring), fptr);
176 if (wrsize == INIT_LEN) {
177 EXPECT_EQ("fopen_0500", wrsize, INIT_LEN);
178 } else if (wrsize == strlen(wrstring)) {
179 writeSuccessFlag = true;
180 }
181 fclose(fptr);
182 }
183
184 fptr = fopen("tempory_test5.txt", "r");
185 if (fptr != NULL) {
186 while (!feof(fptr)) {
187 int32_t rsize = fread(abc, sizeof(abc), 1, fptr);
188 EXPECT_EQ("pread_0500", rsize, 0);
189 }
190 if (!strncmp(abc, add, strlen(add))) {
191 consistentFlag = true;
192 }
193 fclose(fptr);
194 }
195
196 EXPECT_TRUE("fopen_0500", writeSuccessFlag);
197 EXPECT_TRUE("fopen_0500", consistentFlag);
198 remove("tempory_test5.txt");
199 }
200
201 /**
202 * @tc.name : fopen_0600
203 * @tc.desc : Verify fopen("a") and fclose and fread and fwrite and fopen success, fread success, fwrite success
204 * @tc.level : level 1.
205 */
fopen_0600(void)206 void fopen_0600(void)
207 {
208 int32_t rsize = 0;
209 char abc[100] = {0};
210 const char *wrstring = "to write";
211 FILE *fptr = fopen("tempory_test6.txt", "w");
212 bool writeSuccessFlag = false;
213
214 if (fptr != NULL) {
215 rsize = fread(abc, sizeof(abc), 1, fptr);
216
217 size_t wrsize = fwrite(wrstring, sizeof(char), strlen(wrstring), fptr);
218 if (wrsize == INIT_LEN) {
219 EXPECT_EQ("fopen_0600", wrsize, INIT_LEN);
220 ;
221 } else if (wrsize == strlen(wrstring)) {
222 writeSuccessFlag = true;
223 }
224 fclose(fptr);
225 }
226
227 EXPECT_EQ("fopen_0600", rsize, INIT_LEN);
228 EXPECT_TRUE("fopen_0600", writeSuccessFlag);
229 remove("tempory_test6.txt");
230 }
231
232 /**
233 * @tc.name : fopen_0700
234 * @tc.desc : Verify fopen("b") and fclose and fread and fwrite and fopen failed
235 * @tc.level : level 2.
236 */
fopen_0700(void)237 void fopen_0700(void)
238 {
239 FILE *fptr = fopen("./tempory_test.txt", "b");
240 int32_t flag = INIT_LEN;
241 if (fptr == NULL) {
242 EXPECT_EQ("fopen_0700", errno, EINVAL);
243 } else {
244 flag++;
245 EXPECT_EQ("fopen_0700", flag, INCREASE_LEN);
246 }
247 }
248
249 /**
250 * @tc.name : fopen_0800
251 * @tc.desc : Verify fopen("a") and fclose and fread and fwrite and fopen failed
252 * @tc.level : level 2.
253 */
fopen_0800(void)254 void fopen_0800(void)
255 {
256 FILE *fptr = fopen("./tmp/tempory_test.txt", "a");
257 EXPECT_EQ("fopen_0800", fptr, NULL);
258 }
259
260 /**
261 * @tc.name : fopen_0900
262 * @tc.desc : Verify fopen("ae") and fclose and fread and fwrite and fopen success, fread success, fwrite success
263 * @tc.level : level 0.
264 */
fopen_0900(void)265 void fopen_0900(void)
266 {
267 char abc[100] = {0};
268 const char *add = "this is tempory test!to write";
269 const char *wrstring = "to write";
270 const char *wstring = "this is tempory test!";
271 int ret = creat("tempory_test9.txt", CREAT_MODE);
272 if (ret < 0) {
273 EXPECT_MT("fopen_0900", ret, 0);
274 return;
275 }
276 FILE *fptr = fopen("tempory_test9.txt", "w");
277 if (fptr != NULL) {
278 size_t wrsize = fwrite(wstring, sizeof(char), strlen(wstring), fptr);
279 if (wrsize == INIT_LEN) {
280 EXPECT_EQ("fopen_0900", wrsize, INIT_LEN);
281 ;
282 }
283 fclose(fptr);
284 }
285
286 fptr = fopen("tempory_test9.txt", "ae");
287 bool writeSuccessFlag = false;
288 bool consistentFlag = false;
289 if (fptr != NULL) {
290 size_t wrsize = fwrite(wrstring, sizeof(char), strlen(wrstring), fptr);
291 if (wrsize == INIT_LEN) {
292 EXPECT_EQ("fopen_0900", wrsize, INIT_LEN);
293 ;
294 } else if (wrsize == strlen(wrstring)) {
295 writeSuccessFlag = true;
296 }
297 fclose(fptr);
298 }
299
300 fptr = fopen("tempory_test9.txt", "r");
301 if (fptr != NULL) {
302 while (!feof(fptr)) {
303 int32_t rsize = fread(abc, sizeof(abc), 1, fptr);
304 EXPECT_EQ("pread_0900", rsize, 0);
305 }
306 if (!strncmp(abc, add, strlen(add))) {
307 consistentFlag = true;
308 }
309 fclose(fptr);
310 }
311 remove("tempory_test9.txt");
312
313 EXPECT_TRUE("fopen_0900", writeSuccessFlag);
314 EXPECT_TRUE("fopen_0900", consistentFlag);
315 }
316
main(void)317 int main(void)
318 {
319 fopen_0100();
320 fopen_0200();
321 fopen_0300();
322 fopen_0400();
323 fopen_0500();
324 fopen_0600();
325 fopen_0700();
326 fopen_0800();
327 fopen_0900();
328 return t_status;
329 }
330