1 /*
2 * Copyright (c) 2023-2023 Huawei Device Co., Ltd. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification,
5 * are permitted provided that the following conditions are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright notice, this list of
8 * conditions and the following disclaimer.
9 *
10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11 * of conditions and the following disclaimer in the documentation and/or other materials
12 * provided with the distribution.
13 *
14 * 3. Neither the name of the copyright holder nor the names of its contributors may be used
15 * to endorse or promote products derived from this software without specific prior written
16 * permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
20 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
22 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31 #include "posix_fs_test.h"
32 #include "vfs_config.h"
33
34 #define TEST_FILE1 TEST_ROOT"/file1.txt"
35 #define TEST_FILE2 TEST_ROOT"/file2.txt"
36 #define TEST_FILE3 TEST_ROOT"/file3.txt"
37 #define TEST_FILE4 TEST_ROOT"/file4.txt"
38
39 /* *
40 * @tc.number SUB_KERNEL_FS_RENAME_OK
41 * @tc.name rename
42 * @tc.desc [C- SOFTWARE -0200]
43 */
44 LITE_TEST_CASE(PosixFsFuncTestSuite, TestFsRenameOK, Function | MediumTest | Level1)
45 {
46 int32_t ret;
47 const char fileNameOld[TEST_BUF_SIZE] = { TEST_FILE1 };
48 const char fileNameNew[TEST_BUF_SIZE] = { TEST_FILE2 };
49
50 int32_t fd = open(fileNameOld, O_CREAT | O_RDWR);
51 ICUNIT_ASSERT_NOT_EQUAL(fd, POSIX_FS_IS_ERROR, fd);
52
53 ret = close(fd);
54 ICUNIT_ASSERT_NOT_EQUAL(ret, POSIX_FS_IS_ERROR, ret);
55
56 ret = rename(fileNameOld, fileNameNew);
57 ICUNIT_ASSERT_NOT_EQUAL(ret, POSIX_FS_IS_ERROR, ret);
58
59 ret = unlink(fileNameNew);
60 ICUNIT_ASSERT_NOT_EQUAL(ret, POSIX_FS_IS_ERROR, ret);
61
62 return POSIX_FS_NO_ERROR;
63 }
64
65 /* *
66 * @tc.number SUB_KERNEL_FS_RENAME_EINVAL001
67 * @tc.name rename
68 * @tc.desc [C- SOFTWARE -0200]
69 */
70 LITE_TEST_CASE(PosixFsFuncTestSuite, TestFsRenameEINVAL001, Function | MediumTest | Level1)
71 {
72 const char *fileNameOld = NULL;
73 const char fileNameNew[TEST_BUF_SIZE] = { TEST_FILE3 };
74
75 int32_t ret = rename(fileNameOld, fileNameNew);
76 ICUNIT_ASSERT_EQUAL(errno, EINVAL, POSIX_FS_IS_ERROR);
77 ICUNIT_ASSERT_EQUAL(ret, POSIX_FS_IS_ERROR, ret);
78
79 return POSIX_FS_NO_ERROR;
80 }
81
82 /* *
83 * @tc.number SUB_KERNEL_FS_RENAME_EINVAL002
84 * @tc.name rename
85 * @tc.desc [C- SOFTWARE -0200]
86 */
87 LITE_TEST_CASE(PosixFsFuncTestSuite, TestFsRenameEINVAL002, Function | MediumTest | Level1)
88 {
89 const char fileNameOld[TEST_BUF_SIZE] = { TEST_FILE4 };
90 const char *fileNameNew = NULL;
91
92 int32_t ret = rename(fileNameOld, fileNameNew);
93 ICUNIT_ASSERT_EQUAL(errno, EINVAL, POSIX_FS_IS_ERROR);
94 ICUNIT_ASSERT_EQUAL(ret, POSIX_FS_IS_ERROR, ret);
95
96 return POSIX_FS_NO_ERROR;
97 }
98
99 /* *
100 * @tc.number SUB_KERNEL_FS_RENAME_EINVAL003
101 * @tc.name rename
102 * @tc.desc [C- SOFTWARE -0200]
103 */
104 LITE_TEST_CASE(PosixFsFuncTestSuite, TestFsRenameEINVAL003, Function | MediumTest | Level1)
105 {
106 int32_t ret;
107 const char fileNameOld[TEST_BUF_SIZE] = { TEST_FILE3 };
108 const char fileNameNew[TEST_BUF_SIZE] = { TEST_FILE4 };
109
110 struct MountPoint *mountBak = g_mountPoints;
111 g_mountPoints = NULL;
112 ret = rename(fileNameOld, fileNameNew);
113 g_mountPoints = mountBak;
114 ICUNIT_ASSERT_EQUAL(errno, EINVAL, POSIX_FS_IS_ERROR);
115 ICUNIT_ASSERT_EQUAL(ret, POSIX_FS_IS_ERROR, ret);
116
117 return POSIX_FS_NO_ERROR;
118 }
119
PosixFsRenameTest(void)120 void PosixFsRenameTest(void)
121 {
122 RUN_ONE_TESTCASE(TestFsRenameOK);
123 RUN_ONE_TESTCASE(TestFsRenameEINVAL001);
124 RUN_ONE_TESTCASE(TestFsRenameEINVAL002);
125 RUN_ONE_TESTCASE(TestFsRenameEINVAL003);
126 }
127