1570af302Sopenharmony_ci/* 2570af302Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3570af302Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4570af302Sopenharmony_ci * you may not use this file except in compliance with the License. 5570af302Sopenharmony_ci * You may obtain a copy of the License at 6570af302Sopenharmony_ci * 7570af302Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8570af302Sopenharmony_ci * 9570af302Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10570af302Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11570af302Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12570af302Sopenharmony_ci * See the License for the specific language governing permissions and 13570af302Sopenharmony_ci * limitations under the License. 14570af302Sopenharmony_ci */ 15570af302Sopenharmony_ci 16570af302Sopenharmony_ci#include <fcntl.h> 17570af302Sopenharmony_ci#include "functionalext.h" 18570af302Sopenharmony_ci 19570af302Sopenharmony_ci/** 20570af302Sopenharmony_ci * @tc.name : rename_0100 21570af302Sopenharmony_ci * @tc.desc : Each parameter is valid, and the file name can be changed. 22570af302Sopenharmony_ci * @tc.level : Level 0 23570af302Sopenharmony_ci */ 24570af302Sopenharmony_civoid rename_0100(void) 25570af302Sopenharmony_ci{ 26570af302Sopenharmony_ci const char *oldname = "oldfile.txt"; 27570af302Sopenharmony_ci const char *newname = "newfile.txt"; 28570af302Sopenharmony_ci int fd = open(oldname, O_RDONLY | O_CREAT, TEST_MODE); 29570af302Sopenharmony_ci EXPECT_TRUE("rename_0100", fd != -1); 30570af302Sopenharmony_ci close(fd); 31570af302Sopenharmony_ci 32570af302Sopenharmony_ci int ret = rename(oldname, newname); 33570af302Sopenharmony_ci EXPECT_EQ("rename_0100", ret, 0); 34570af302Sopenharmony_ci fd = open(oldname, O_RDONLY); 35570af302Sopenharmony_ci EXPECT_EQ("rename_0100", fd, -1); 36570af302Sopenharmony_ci fd = open(newname, O_RDONLY); 37570af302Sopenharmony_ci EXPECT_NE("rename_0100", fd, -1); 38570af302Sopenharmony_ci close(fd); 39570af302Sopenharmony_ci remove(newname); 40570af302Sopenharmony_ci} 41570af302Sopenharmony_ci 42570af302Sopenharmony_ci/** 43570af302Sopenharmony_ci * @tc.name : rename_0200 44570af302Sopenharmony_ci * @tc.desc : Parameter 1 is invalid, the file name cannot be changed. 45570af302Sopenharmony_ci * @tc.level : Level 2 46570af302Sopenharmony_ci */ 47570af302Sopenharmony_civoid rename_0200(void) 48570af302Sopenharmony_ci{ 49570af302Sopenharmony_ci const char *oldname = "oldfile.txt"; 50570af302Sopenharmony_ci const char *newname = "newfile.txt"; 51570af302Sopenharmony_ci int ret = rename(oldname, newname); 52570af302Sopenharmony_ci EXPECT_EQ("rename_0200", ret, -1); 53570af302Sopenharmony_ci} 54570af302Sopenharmony_ci 55570af302Sopenharmony_ci/** 56570af302Sopenharmony_ci * @tc.name : rename_0300 57570af302Sopenharmony_ci * @tc.desc : Newpath already exists, the file name can be changed. 58570af302Sopenharmony_ci * @tc.level : Level 1 59570af302Sopenharmony_ci */ 60570af302Sopenharmony_civoid rename_0300(void) 61570af302Sopenharmony_ci{ 62570af302Sopenharmony_ci const char *oldname = "oldfile.txt"; 63570af302Sopenharmony_ci const char *newname = "newfile.txt"; 64570af302Sopenharmony_ci int fd_old = open(oldname, O_RDWR | O_CREAT, TEST_MODE); 65570af302Sopenharmony_ci EXPECT_TRUE("rename_0300", fd_old != -1); 66570af302Sopenharmony_ci 67570af302Sopenharmony_ci char str_old[] = "old"; 68570af302Sopenharmony_ci int ret_old = write(fd_old, str_old, sizeof(str_old)); 69570af302Sopenharmony_ci EXPECT_TRUE("rename_0300", ret_old > 0); 70570af302Sopenharmony_ci close(fd_old); 71570af302Sopenharmony_ci 72570af302Sopenharmony_ci int fd_new = open(newname, O_RDWR | O_CREAT, TEST_MODE); 73570af302Sopenharmony_ci EXPECT_TRUE("rename_0100", fd_new != -1); 74570af302Sopenharmony_ci 75570af302Sopenharmony_ci char str_new[] = "new"; 76570af302Sopenharmony_ci int ret_new = write(fd_old, str_new, sizeof(str_new)); 77570af302Sopenharmony_ci EXPECT_TRUE("rename_0300", ret_new > 0); 78570af302Sopenharmony_ci close(fd_new); 79570af302Sopenharmony_ci 80570af302Sopenharmony_ci int result = rename(oldname, newname); 81570af302Sopenharmony_ci EXPECT_EQ("rename_0300", result, 0); 82570af302Sopenharmony_ci 83570af302Sopenharmony_ci int fd = open(newname, O_RDONLY); 84570af302Sopenharmony_ci EXPECT_TRUE("rename_0300", fd != -1); 85570af302Sopenharmony_ci 86570af302Sopenharmony_ci char buf[10]; 87570af302Sopenharmony_ci memset(buf, 0, sizeof(buf)); 88570af302Sopenharmony_ci int nread = read(fd, buf, sizeof(buf)); 89570af302Sopenharmony_ci EXPECT_TRUE("rename_0300", nread > 0); 90570af302Sopenharmony_ci EXPECT_TRUE("rename_0300", strcmp(buf, "old") == 0); 91570af302Sopenharmony_ci 92570af302Sopenharmony_ci remove(newname); 93570af302Sopenharmony_ci} 94570af302Sopenharmony_ci 95570af302Sopenharmony_ciint main(int argc, char *argv[]) 96570af302Sopenharmony_ci{ 97570af302Sopenharmony_ci rename_0100(); 98570af302Sopenharmony_ci rename_0200(); 99570af302Sopenharmony_ci rename_0300(); 100570af302Sopenharmony_ci return t_status; 101570af302Sopenharmony_ci}