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 <gtest/gtest.h>
17 #include <algorithm>
18 #include <iostream>
19 #include <fstream>
20 #include <sys/types.h>
21 #include <sys/stat.h>
22 #include <fcntl.h>
23
24 #include "file_ex.h"
25
26 using namespace testing::ext;
27 using namespace std;
28
29 namespace OHOS {
30 namespace {
31 class UtilsFileTest : public testing::Test {
32 public:
33 static constexpr char CONTENT_STR[] = "TTtt@#$%^&*()_+~`";
34 static constexpr char FILE_PATH[] = "./tmp.txt";
35 static constexpr char NULL_STR[] = "";
36 static constexpr int MAX_FILE_LENGTH = 32 * 1024 * 1024;
37 static void SetUpTestCase(void);
38 static void TearDownTestCase(void);
39 void SetUp();
40 void TearDown();
41 };
42
SetUpTestCase(void)43 void UtilsFileTest::SetUpTestCase(void)
44 {
45 }
46
TearDownTestCase(void)47 void UtilsFileTest::TearDownTestCase(void)
48 {
49 }
50
SetUp(void)51 void UtilsFileTest::SetUp(void)
52 {
53 }
54
TearDown(void)55 void UtilsFileTest::TearDown(void)
56 {
57 }
58
CreateTestFile(const std::string & path,const std::string & content)59 bool CreateTestFile(const std::string& path, const std::string& content)
60 {
61 ofstream out(path, ios_base::out | ios_base::trunc);
62 if (out.is_open()) {
63 out << content;
64 return true;
65 }
66
67 std::cout << "open file failed!" << path << std::endl;
68 return false;
69 }
70
RemoveTestFile(const std::string & path)71 int RemoveTestFile(const std::string& path)
72 {
73 return unlink(path.c_str());
74 }
75
76 /*
77 * @tc.name: testLoadStringFromFile001
78 * @tc.desc: Test loading an existed file 'meminfo'
79 */
80 HWTEST_F(UtilsFileTest, testLoadStringFromFile001, TestSize.Level0)
81 {
82 string str;
83 string filename = "/proc/meminfo";
84 EXPECT_TRUE(LoadStringFromFile(filename, str));
85
86 string str2;
87 int fd = open(filename.c_str(), O_RDONLY);
88 EXPECT_TRUE(LoadStringFromFd(fd, str2));
89 close(fd);
90 EXPECT_EQ(str.size(), str2.size());
91
92 vector<char> buff;
93 bool ret = LoadBufferFromFile(filename, buff);
94 EXPECT_TRUE(ret);
95 EXPECT_EQ(str2.size(), buff.size());
96 }
97
98 /*
99 * @tc.name: testLoadStringFromFile002
100 * @tc.desc: Test loading a non-existed file
101 */
102 HWTEST_F(UtilsFileTest, testLoadStringFromFile002, TestSize.Level0)
103 {
104 string str;
105 string filename = NULL_STR;
106 EXPECT_FALSE(LoadStringFromFile(filename, str));
107 EXPECT_TRUE(str.empty());
108 }
109
110 /*
111 * @tc.name: testLoadStringFromFile003
112 * @tc.desc: Test loading a newly created file with null contents
113 */
114 HWTEST_F(UtilsFileTest, testLoadStringFromFile003, TestSize.Level0)
115 {
116 string str;
117 string filename = FILE_PATH;
118 string content = NULL_STR;
119 CreateTestFile(filename, content);
120 EXPECT_TRUE(LoadStringFromFile(filename, str));
121 RemoveTestFile(filename);
122 EXPECT_TRUE(str == content);
123 }
124
125 /*
126 * @tc.name: testLoadStringFromFile004
127 * @tc.desc: Test loading a newly created file with contents
128 */
129 HWTEST_F(UtilsFileTest, testLoadStringFromFile004, TestSize.Level0)
130 {
131 string str;
132 string filename = FILE_PATH;
133 string content = CONTENT_STR;
134 CreateTestFile(filename, content);
135 EXPECT_TRUE(LoadStringFromFile(filename, str));
136 RemoveTestFile(filename);
137 EXPECT_TRUE(str == content);
138 }
139
140 /*
141 * @tc.name: testLoadStringFromFile005
142 * @tc.desc: Test loading a newly created file, whose contents are of maximum length
143 */
144 HWTEST_F(UtilsFileTest, testLoadStringFromFile005, TestSize.Level1)
145 {
146 string str;
147 string filename = FILE_PATH;
148 string content(MAX_FILE_LENGTH, 't');
149 CreateTestFile(filename, content);
150 EXPECT_TRUE(LoadStringFromFile(filename, str));
151 RemoveTestFile(filename);
152 EXPECT_TRUE(str == content);
153 }
154
155 /*
156 * @tc.name: testLoadStringFromFile006
157 * @tc.desc: Test loading a newly created file, whose contents exceeds maximum length
158 */
159 HWTEST_F(UtilsFileTest, testLoadStringFromFile006, TestSize.Level1)
160 {
161 string str;
162 string filename = FILE_PATH;
163 string content(MAX_FILE_LENGTH + 1, 't');
164 CreateTestFile(filename, content);
165 EXPECT_FALSE(LoadStringFromFile(filename, str));
166 RemoveTestFile(filename);
167 EXPECT_TRUE(str.empty());
168 }
169
170 /*
171 * @tc.name: testLoadStringFromFd001
172 * @tc.desc: Test loading a file by a invalid fd -1
173 */
174 HWTEST_F(UtilsFileTest, testLoadStringFromFd001, TestSize.Level0)
175 {
176 string result;
177 EXPECT_FALSE(LoadStringFromFd(-1, result));
178 EXPECT_EQ(result, "");
179 }
180
181 /*
182 * @tc.name: testLoadStringFromFd002
183 * @tc.desc: Test loading a newly created file without contents by its fd
184 */
185 HWTEST_F(UtilsFileTest, testLoadStringFromFd002, TestSize.Level0)
186 {
187 string result;
188 string filename = FILE_PATH;
189 string content = NULL_STR;
190 CreateTestFile(filename, content);
191 int fd = open(filename.c_str(), O_RDONLY);
192 EXPECT_TRUE(LoadStringFromFd(fd, result));
193 close(fd);
194 RemoveTestFile(filename);
195 EXPECT_TRUE(result == content);
196 }
197
198 /*
199 * @tc.name: testLoadStringFromFd003
200 * @tc.desc: Test loading a newly created file with contents by its fd
201 */
202 HWTEST_F(UtilsFileTest, testLoadStringFromFd003, TestSize.Level0)
203 {
204 string result;
205 string filename = FILE_PATH;
206 string content = CONTENT_STR;
207 CreateTestFile(filename, content);
208 int fd = open(filename.c_str(), O_RDONLY);
209 EXPECT_TRUE(LoadStringFromFd(fd, result));
210 close(fd);
211 RemoveTestFile(filename);
212 EXPECT_TRUE(result == content);
213 }
214
215 /*
216 * @tc.name: testLoadStringFromFd004
217 * @tc.desc: Test loading a newly created file by fd, whose contents are of maximum length
218 */
219 HWTEST_F(UtilsFileTest, testLoadStringFromFd004, TestSize.Level1)
220 {
221 string result;
222 string filename = FILE_PATH;
223 string content(MAX_FILE_LENGTH, 't');
224 CreateTestFile(filename, content);
225 int fd = open(filename.c_str(), O_RDONLY);
226 EXPECT_TRUE(LoadStringFromFd(fd, result));
227 close(fd);
228 RemoveTestFile(filename);
229 EXPECT_TRUE(result == content);
230 }
231
232 /*
233 * @tc.name: testLoadStringFromFd005
234 * @tc.desc: Test loading a newly created file by fd, whose contents exceeds maximum length
235 */
236 HWTEST_F(UtilsFileTest, testLoadStringFromFd005, TestSize.Level1)
237 {
238 string result;
239 string filename = FILE_PATH;
240 string content(MAX_FILE_LENGTH + 1, 't');
241 CreateTestFile(filename, content);
242 int fd = open(filename.c_str(), O_RDONLY);
243 EXPECT_FALSE(LoadStringFromFd(fd, result));
244 close(fd);
245 RemoveTestFile(filename);
246 EXPECT_NE(result, content);
247 }
248
249 /*
250 * @tc.name: testLoadStringFromFd006
251 * @tc.desc: Test loading a newly created file by fd, which is closed ahead of loading.
252 */
253 HWTEST_F(UtilsFileTest, testLoadStringFromFd006, TestSize.Level0)
254 {
255 string result;
256 string filename = FILE_PATH;
257 string content = CONTENT_STR;
258 CreateTestFile(filename, content);
259 int fd = open(filename.c_str(), O_RDONLY);
260 close(fd);
261 EXPECT_FALSE(LoadStringFromFd(fd, result));
262 RemoveTestFile(filename);
263 EXPECT_EQ(result, "");
264 }
265
266 /*
267 * @tc.name: testSaveStringToFile001
268 * @tc.desc: singleton template
269 */
270 HWTEST_F(UtilsFileTest, testSaveStringToFile001, TestSize.Level0)
271 {
272 string path = FILE_PATH;
273 string content = CONTENT_STR;
274 string newContent;
275 CreateTestFile(path, content);
276 bool ret = SaveStringToFile(path, newContent);
277 EXPECT_EQ(ret, true);
278
279 string loadResult;
280 EXPECT_TRUE(LoadStringFromFile(path, loadResult));
281 RemoveTestFile(path);
282 EXPECT_EQ(loadResult, content);
283 }
284
285 /*
286 * @tc.name: testSaveStringToFile002
287 * @tc.desc: singleton template
288 */
289 HWTEST_F(UtilsFileTest, testSaveStringToFile002, TestSize.Level0)
290 {
291 string path = FILE_PATH;
292 string content = "Before truncated!";
293 CreateTestFile(path, content);
294
295 string newContent = CONTENT_STR;
296 EXPECT_TRUE(SaveStringToFile(path, newContent));
297
298 string loadResult;
299 EXPECT_TRUE(LoadStringFromFile(path, loadResult));
300 RemoveTestFile(path);
301 EXPECT_EQ(loadResult, newContent);
302 }
303
304 /*
305 * @tc.name: testSaveStringToFile003
306 * @tc.desc: Test writting an empty string to a file in truncate mode
307 */
308 HWTEST_F(UtilsFileTest, testSaveStringToFile003, TestSize.Level0)
309 {
310 string path = FILE_PATH;
311 string content = "Before truncated!";
312 CreateTestFile(path, content);
313
314 string newContent;
315 bool ret = SaveStringToFile(path, newContent, true);
316 EXPECT_EQ(ret, true);
317
318 string loadResult;
319 ret = LoadStringFromFile(path, loadResult);
320 RemoveTestFile(path);
321 EXPECT_EQ(ret, true);
322 EXPECT_STREQ(loadResult.c_str(), content.c_str());
323 }
324
325 /*
326 * @tc.name: testSaveStringToFile004
327 * @tc.desc: Test writting an empty string to a file in append mode
328 */
329 HWTEST_F(UtilsFileTest, testSaveStringToFile004, TestSize.Level0)
330 {
331 string newContent;
332 string path = FILE_PATH;
333 string content = "Before appended!";
334 CreateTestFile(path, content);
335 bool ret = SaveStringToFile(path, newContent, false);
336 EXPECT_EQ(ret, true);
337
338 string loadResult;
339 ret = LoadStringFromFile(path, loadResult);
340 RemoveTestFile(path);
341 EXPECT_EQ(ret, true);
342 EXPECT_STREQ(loadResult.c_str(), content.c_str());
343 }
344
345 /*
346 * @tc.name: testSaveStringToFile005
347 * @tc.desc: Test writting a string to a file in append mode
348 */
349 HWTEST_F(UtilsFileTest, testSaveStringToFile005, TestSize.Level0)
350 {
351 string path = FILE_PATH;
352 string content = "Before appended!";
353 CreateTestFile(path, content);
354
355 string newContent = CONTENT_STR;
356 bool ret = SaveStringToFile(path, newContent, false);
357 EXPECT_EQ(ret, true);
358
359 string loadResult;
360 ret = LoadStringFromFile(path, loadResult);
361 RemoveTestFile(path);
362 EXPECT_EQ(ret, true);
363 EXPECT_EQ(loadResult, content + newContent);
364 }
365
366 /*
367 * @tc.name: testSaveStringToFd001
368 * @tc.desc: Test writting an empty string to files with invalid fds
369 */
370 HWTEST_F(UtilsFileTest, testSaveStringToFd001, TestSize.Level0)
371 {
372 string content;
373 bool ret = SaveStringToFd(0, content);
374 EXPECT_EQ(ret, false);
375 ret = SaveStringToFd(-1, content);
376 EXPECT_EQ(ret, false);
377
378 content = CONTENT_STR;
379 ret = SaveStringToFd(0, content);
380 EXPECT_EQ(ret, false);
381 ret = SaveStringToFd(-1, content);
382 EXPECT_EQ(ret, false);
383 }
384
385 /*
386 * @tc.name: testSaveStringToFd002
387 * @tc.desc: Test writting an empty string to a file specified by its fd
388 */
389 HWTEST_F(UtilsFileTest, testSaveStringToFd002, TestSize.Level0)
390 {
391 string content;
392 string filename = FILE_PATH;
393 int fd = open(filename.c_str(), O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
394 bool ret = SaveStringToFd(fd, content);
395 close(fd);
396 EXPECT_EQ(ret, true);
397
398 string loadResult;
399 fd = open(filename.c_str(), O_RDONLY);
400 ret = LoadStringFromFd(fd, loadResult);
401 close(fd);
402 RemoveTestFile(filename);
403 EXPECT_EQ(ret, true);
404 EXPECT_EQ(loadResult, "");
405 }
406
407 /*
408 * @tc.name: testSaveStringToFd003
409 * @tc.desc: Test loading a non-empty string to a file specified by its fd
410 */
411 HWTEST_F(UtilsFileTest, testSaveStringToFd003, TestSize.Level0)
412 {
413 string content = CONTENT_STR;
414 string filename = FILE_PATH;
415 int fd = open(filename.c_str(), O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
416 bool ret = SaveStringToFd(fd, content);
417 close(fd);
418 EXPECT_EQ(ret, true);
419
420 string loadResult;
421 fd = open(filename.c_str(), O_RDONLY);
422 ret = LoadStringFromFd(fd, loadResult);
423 close(fd);
424 RemoveTestFile(filename);
425 EXPECT_EQ(ret, true);
426 EXPECT_EQ(loadResult, content);
427 }
428
429 /*
430 * @tc.name: testSaveStringToFd004
431 * @tc.desc: Test loading a non-empty string to a file without write-authority specified by its fd
432 */
433 HWTEST_F(UtilsFileTest, testSaveStringToFd004, TestSize.Level0)
434 {
435 string content = CONTENT_STR;
436 string filename = FILE_PATH;
437 int fd = open(filename.c_str(), O_RDONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
438 bool ret = SaveStringToFd(fd, content);
439 close(fd);
440 EXPECT_EQ(ret, false);
441
442 string loadResult;
443 fd = open(filename.c_str(), O_RDONLY);
444 ret = LoadStringFromFd(fd, loadResult);
445 close(fd);
446 RemoveTestFile(filename);
447 EXPECT_EQ(ret, true);
448 EXPECT_EQ(loadResult, "");
449 }
450
451 /*
452 * @tc.name: testLoadBufferFromFile001
453 * @tc.desc: singleton template
454 */
455 HWTEST_F(UtilsFileTest, testLoadBufferFromFile001, TestSize.Level0)
456 {
457 vector<char> buff;
458 string filename = "";
459 bool ret = LoadBufferFromFile(filename, buff);
460 EXPECT_FALSE(ret);
461 EXPECT_EQ(0, static_cast<int>(buff.size()));
462 }
463
464 /*
465 * @tc.name: testLoadBufferFromFile002
466 * @tc.desc: singleton template
467 */
468 HWTEST_F(UtilsFileTest, testLoadBufferFromFile002, TestSize.Level0)
469 {
470 vector<char> buff;
471 string filename = FILE_PATH;
472 string content;
473 CreateTestFile(filename, content);
474 bool ret = LoadBufferFromFile(filename, buff);
475 RemoveTestFile(filename);
476 EXPECT_TRUE(ret);
477 EXPECT_EQ(0, static_cast<int>(buff.size()));
478 }
479
480 /*
481 * @tc.name: testLoadBufferFromFile003
482 * @tc.desc: singleton template
483 */
484 HWTEST_F(UtilsFileTest, testLoadBufferFromFile003, TestSize.Level0)
485 {
486 vector<char> buff;
487 string filename = FILE_PATH;
488 string content = "TXB";
489 CreateTestFile(filename, content);
490 bool ret = LoadBufferFromFile(filename, buff);
491 RemoveTestFile(filename);
492 EXPECT_TRUE(ret);
493 EXPECT_EQ(3, (int)buff.size());
494 EXPECT_EQ('T', buff[0]);
495 EXPECT_EQ('X', buff[1]);
496 EXPECT_EQ('B', buff[2]);
497 }
498
499 /*
500 * @tc.name: testLoadBufferFromFile004
501 * @tc.desc: singleton template
502 */
503 HWTEST_F(UtilsFileTest, testLoadBufferFromFile004, TestSize.Level1)
504 {
505 vector<char> buff;
506 string filename = FILE_PATH;
507 string content(32 * 1024 * 1024 + 1, 't');
508 CreateTestFile(filename, content);
509 bool ret = LoadBufferFromFile(filename, buff);
510 RemoveTestFile(filename);
511 EXPECT_EQ(ret, false);
512 EXPECT_EQ(0, static_cast<int>(buff.size()));
513 }
514
515 /*
516 * @tc.name: testSaveBufferToFile001
517 * @tc.desc: singleton template
518 */
519 HWTEST_F(UtilsFileTest, testSaveBufferToFile001, TestSize.Level0)
520 {
521 vector<char> buff;
522 string path = FILE_PATH;
523 string content = "ttxx";
524 CreateTestFile(path, content);
525 bool ret = SaveBufferToFile(path, buff, false);
526 EXPECT_EQ(ret, true);
527
528 string loadResult;
529 ret = LoadStringFromFile(path, loadResult);
530 RemoveTestFile(path);
531 EXPECT_EQ(ret, true);
532 EXPECT_EQ(loadResult, content);
533 }
534
535 /*
536 * @tc.name: testSaveBufferToFile002
537 * @tc.desc: singleton template
538 */
539 HWTEST_F(UtilsFileTest, testSaveBufferToFile002, TestSize.Level0)
540 {
541 string path = FILE_PATH;
542 string content = "ttxx";
543 CreateTestFile(path, content);
544
545 vector<char> newContent = {'x', 'x', 't', 't'};
546 bool ret = SaveBufferToFile(path, newContent);
547 EXPECT_EQ(ret, true);
548
549 string loadResult;
550 ret = LoadStringFromFile(path, loadResult);
551 RemoveTestFile(path);
552 EXPECT_EQ(ret, true);
553 EXPECT_EQ(loadResult, std::string(newContent.begin(), newContent.end()));
554 }
555
556 /*
557 * @tc.name: testSaveBufferToFile003
558 * @tc.desc: singleton template
559 */
560 HWTEST_F(UtilsFileTest, testSaveBufferToFile003, TestSize.Level0)
561 {
562 string path = FILE_PATH;
563 string content = "ttxx";
564 CreateTestFile(path, content);
565
566 vector<char> newContent = {'x', 'x', 't', 't'};
567 bool ret = SaveBufferToFile(path, newContent, false);
568 EXPECT_EQ(ret, true);
569
570 string loadResult;
571 ret = LoadStringFromFile(path, loadResult);
572 RemoveTestFile(path);
573 EXPECT_EQ(ret, true);
574 EXPECT_EQ(loadResult, content + std::string(newContent.begin(), newContent.end()));
575 }
576
577 /*
578 * @tc.name: testStringExistsInFile001
579 * @tc.desc: singleton template
580 */
581 HWTEST_F(UtilsFileTest, testStringExistsInFile001, TestSize.Level0)
582 {
583 string str = "abc";
584 string filename = "";
585 EXPECT_FALSE(StringExistsInFile(filename, str, true));
586 EXPECT_FALSE(str.empty());
587 }
588
589 /*
590 * @tc.name: testStringExistsInFile002
591 * @tc.desc: singleton template
592 */
593 HWTEST_F(UtilsFileTest, testStringExistsInFile002, TestSize.Level0)
594 {
595 string str = NULL_STR;
596 string filename = FILE_PATH;
597 string content = "hello world!";
598 CreateTestFile(filename, content);
599 EXPECT_FALSE(StringExistsInFile(filename, str, true));
600 RemoveTestFile(filename);
601 }
602
603 /*
604 * @tc.name: testStringExistsInFile003
605 * @tc.desc: singleton template
606 */
607 HWTEST_F(UtilsFileTest, testStringExistsInFile003, TestSize.Level0)
608 {
609 string str = "world";
610 string filename = FILE_PATH;
611 string content = "hello world!";
612 CreateTestFile(filename, content);
613 EXPECT_TRUE(StringExistsInFile(filename, str, true));
614 RemoveTestFile(filename);
615 }
616
617 /*
618 * @tc.name: testStringExistsInFile004
619 * @tc.desc: singleton template
620 */
621 HWTEST_F(UtilsFileTest, testStringExistsInFile004, TestSize.Level1)
622 {
623 string str1(32 * 1024 * 1024 + 1, 't');
624 string str2(32 * 1024 * 1024, 't');
625 string filename = FILE_PATH;
626 string content(32 * 1024 * 1024, 't');
627 CreateTestFile(filename, content);
628 EXPECT_FALSE(StringExistsInFile(filename, str1, true));
629 EXPECT_TRUE(StringExistsInFile(filename, str2, true));
630 RemoveTestFile(filename);
631 }
632
633 /*
634 * @tc.name: testStringExistsInFile005
635 * @tc.desc: singleton template
636 */
637 HWTEST_F(UtilsFileTest, testStringExistsInFile005, TestSize.Level0)
638 {
639 string str = "woRld";
640 string filename = FILE_PATH;
641 string content = "hello world!";
642 CreateTestFile(filename, content);
643 EXPECT_TRUE(StringExistsInFile(filename, str, false));
644 EXPECT_FALSE(StringExistsInFile(filename, str, true));
645 RemoveTestFile(filename);
646 }
647
648 /*
649 * @tc.name: testStringExistsInFile006
650 * @tc.desc: singleton template
651 */
652 HWTEST_F(UtilsFileTest, testStringExistsInFile006, TestSize.Level0)
653 {
654 string str1 = "woRld!";
655 string str2 = "123";
656 string str3 = "llo ";
657 string str4 = "123 w";
658 string str5 = "hi";
659 string filename = FILE_PATH;
660 string content = "Test, hello 123 World!";
661 CreateTestFile(filename, content);
662 EXPECT_TRUE(StringExistsInFile(filename, str1, false));
663 EXPECT_FALSE(StringExistsInFile(filename, str1, true));
664
665 EXPECT_TRUE(StringExistsInFile(filename, str2, false));
666 EXPECT_TRUE(StringExistsInFile(filename, str2, true));
667
668 EXPECT_TRUE(StringExistsInFile(filename, str3, false));
669 EXPECT_TRUE(StringExistsInFile(filename, str3, true));
670
671 EXPECT_TRUE(StringExistsInFile(filename, str4, false));
672 EXPECT_FALSE(StringExistsInFile(filename, str4, true));
673
674 EXPECT_FALSE(StringExistsInFile(filename, str5, false));
675 EXPECT_FALSE(StringExistsInFile(filename, str5, true));
676 RemoveTestFile(filename);
677 }
678
679 /*
680 * @tc.name: testStringExistsInFile007
681 * @tc.desc: singleton template
682 */
683 HWTEST_F(UtilsFileTest, testStringExistsInFile007, TestSize.Level0)
684 {
685 string str1 = "is";
686 string str2 = "\n\ris";
687 string filename = FILE_PATH;
688 string content = "Test, special string\n\ris ok";
689 CreateTestFile(filename, content);
690 EXPECT_TRUE(StringExistsInFile(filename, str1, false));
691 EXPECT_TRUE(StringExistsInFile(filename, str1, true));
692
693 EXPECT_TRUE(StringExistsInFile(filename, str2, false));
694 EXPECT_TRUE(StringExistsInFile(filename, str2, true));
695 RemoveTestFile(filename);
696 }
697
698 /*
699 * @tc.name: testFileExist001
700 * @tc.desc: singleton template
701 */
702 HWTEST_F(UtilsFileTest, testFileExist001, TestSize.Level0)
703 {
704 string filepath = "/proc/meminfo";
705 string filepath1 = "/proc/meminfo1";
706
707 EXPECT_TRUE(FileExists(filepath));
708 EXPECT_FALSE(FileExists(filepath1));
709 }
710
711 /*
712 * @tc.name: testCountStrInFile001
713 * @tc.desc: singleton template
714 */
715 HWTEST_F(UtilsFileTest, testCountStrInFile001, TestSize.Level0)
716 {
717 string str = "abc";
718 string filename = "";
719 EXPECT_EQ(CountStrInFile(filename, str, true), -1);
720 EXPECT_FALSE(str.empty());
721 }
722
723 /*
724 * @tc.name: testCountStrInFile002
725 * @tc.desc: singleton template
726 */
727 HWTEST_F(UtilsFileTest, testCountStrInFile002, TestSize.Level0)
728 {
729 string str = NULL_STR;
730 string filename = FILE_PATH;
731 string content = "hello world!";
732 CreateTestFile(filename, content);
733 EXPECT_EQ(CountStrInFile(filename, str, true), -1);
734 RemoveTestFile(filename);
735 }
736
737 /*
738 * @tc.name: testCountStrInFile003
739 * @tc.desc: singleton template
740 */
741 HWTEST_F(UtilsFileTest, testCountStrInFile003, TestSize.Level1)
742 {
743 string str1(32 * 1024 * 1024 + 1, 't');
744 string str2(32 * 1024 * 1024, 't');
745 string filename = FILE_PATH;
746 string content(32 * 1024 * 1024, 't');
747 CreateTestFile(filename, content);
748 EXPECT_EQ(CountStrInFile(filename, str1, true), 0);
749 EXPECT_EQ(CountStrInFile(filename, str2, true), 1);
750 RemoveTestFile(filename);
751 }
752
753 /*
754 * @tc.name: testCountStrInFile004
755 * @tc.desc: singleton template
756 */
757 HWTEST_F(UtilsFileTest, testCountStrInFile004, TestSize.Level0)
758 {
759 string str1 = "very";
760 string str2 = "VERY";
761 string str3 = "abc";
762 string filename = FILE_PATH;
763 string content = "This is very very long string for test.\n Very Good,\r VERY HAPPY.";
764 CreateTestFile(filename, content);
765 EXPECT_EQ(CountStrInFile(filename, str1, true), 2);
766 EXPECT_EQ(CountStrInFile(filename, str1, false), 4);
767
768 EXPECT_EQ(CountStrInFile(filename, str2, true), 1);
769 EXPECT_EQ(CountStrInFile(filename, str2, false), 4);
770
771 EXPECT_EQ(CountStrInFile(filename, str3, true), 0);
772 RemoveTestFile(filename);
773 }
774
775 /*
776 * @tc.name: testCountStrInFile005
777 * @tc.desc: singleton template
778 */
779 HWTEST_F(UtilsFileTest, testCountStrInFile005, TestSize.Level0)
780 {
781 string str1 = "aba";
782 string filename = FILE_PATH;
783 string content = "This is abababaBABa.";
784 CreateTestFile(filename, content);
785 EXPECT_EQ(CountStrInFile(filename, str1, true), 2);
786 EXPECT_EQ(CountStrInFile(filename, str1, false), 3);
787 RemoveTestFile(filename);
788 }
789 } // namespace
790 } // namespace OHOS