• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2025 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 "rmdir_core.h"
17 
18 #include <filesystem>
19 #include <fstream>
20 #include <gtest/gtest.h>
21 
22 
23 namespace OHOS::FileManagement::ModuleFileIO::Test {
24 using namespace testing;
25 using namespace testing::ext;
26 using namespace std;
27 
28 class RmdirCoreTest : public testing::Test {
29 public:
30     static void SetUpTestCase(void);
31     static void TearDownTestCase(void);
32     void SetUp();
33     void TearDown();
34 };
35 
SetUpTestCase(void)36 void RmdirCoreTest::SetUpTestCase(void)
37 {
38     GTEST_LOG_(INFO) << "SetUpTestCase";
39 }
40 
TearDownTestCase(void)41 void RmdirCoreTest::TearDownTestCase(void)
42 {
43     GTEST_LOG_(INFO) << "TearDownTestCase";
44 }
45 
SetUp(void)46 void RmdirCoreTest::SetUp(void)
47 {
48     GTEST_LOG_(INFO) << "SetUp";
49 }
50 
TearDown(void)51 void RmdirCoreTest::TearDown(void)
52 {
53     GTEST_LOG_(INFO) << "TearDown";
54 }
55 
56 /**
57  * @tc.name: RmdirCoreTest_DoRmdirent_001
58  * @tc.desc: Test function of RmdirCore::DoRmdirent interface for Failed.
59  * @tc.size: MEDIUM
60  * @tc.type: FUNC
61  * @tc.level Level 1
62  */
63 HWTEST_F(RmdirCoreTest, RmdirCoreTest_DoRmdirent_001, testing::ext::TestSize.Level1)
64 {
65     GTEST_LOG_(INFO) << "RmdirCoreTest-begin RmdirCoreTest_DoRmdirent_001";
66     std::string fpath;
67     auto res = RmdirentCore::DoRmdirent(fpath);
68 
69     EXPECT_EQ(res.IsSuccess(), false);
70 
71     GTEST_LOG_(INFO) << "RmdirCoreTest-end RmdirCoreTest_DoRmdirent_001";
72 }
73 
74 /**
75  * @tc.name: RmdirCoreTest_DoRmdirent_002
76  * @tc.desc: Test function of RmdirCore::DoRmdirent interface for Failed.
77  * @tc.size: MEDIUM
78  * @tc.type: FUNC
79  * @tc.level Level 1
80  */
81 HWTEST_F(RmdirCoreTest, RmdirCoreTest_DoRmdirent_002, testing::ext::TestSize.Level1)
82 {
83     GTEST_LOG_(INFO) << "RmdirCoreTest-begin RmdirCoreTest_DoRmdirent_002";
84     std::string fpath = "invalid?path";
85     auto res = RmdirentCore::DoRmdirent(fpath);
86 
87     EXPECT_EQ(res.IsSuccess(), false);
88 
89     GTEST_LOG_(INFO) << "RmdirCoreTest-end RmdirCoreTest_DoRmdirent_002";
90 }
91 
92 /**
93  * @tc.name: RmdirCoreTest_DoRmdirent_003
94  * @tc.desc: Test function of RmdirCore::DoRmdirent interface for Failed.
95  * @tc.size: MEDIUM
96  * @tc.type: FUNC
97  * @tc.level Level 1
98  */
99 HWTEST_F(RmdirCoreTest, RmdirCoreTest_DoRmdirent_003, testing::ext::TestSize.Level1)
100 {
101     GTEST_LOG_(INFO) << "RmdirCoreTest-begin RmdirCoreTest_DoRmdirent_003";
102     std::string fpath = "/dir";
103     auto res = RmdirentCore::DoRmdirent(fpath);
104 
105     EXPECT_EQ(res.IsSuccess(), false);
106 
107     GTEST_LOG_(INFO) << "RmdirCoreTest-end RmdirCoreTest_DoRmdirent_003";
108 }
109 
110 /**
111  * @tc.name: RmdirCoreTest_DoRmdirent_004
112  * @tc.desc: Test function of RmdirCore::DoRmdirent interface for Failed.
113  * @tc.size: MEDIUM
114  * @tc.type: FUNC
115  * @tc.level Level 1
116  */
117 HWTEST_F(RmdirCoreTest, RmdirCoreTest_DoRmdirent_004, testing::ext::TestSize.Level1)
118 {
119     GTEST_LOG_(INFO) << "RmdirCoreTest-begin RmdirCoreTest_DoRmdirent_004";
120 
121     std::filesystem::create_directories("test_dir");
122     std::ofstream("test_dir/test_file.txt") << "test";
123 
124     std::filesystem::permissions("test_dir",
125         std::filesystem::perms::owner_write | std::filesystem::perms::owner_exec,
126         std::filesystem::perm_options::replace);
127 
128     auto res = RmdirentCore::DoRmdirent("test_dir");
129     EXPECT_EQ(res.IsSuccess(), true);
130 
131     try {
132         std::filesystem::permissions("test_dir",
133             std::filesystem::perms::owner_all,
134             std::filesystem::perm_options::replace);
135     } catch (...) {}
136     std::filesystem::remove_all("test_dir");
137 
138     GTEST_LOG_(INFO) << "RmdirCoreTest-end RmdirCoreTest_DoRmdirent_004";
139 }
140 
141 /**
142  * @tc.name: RmdirCoreTest_DoRmdirent_005
143  * @tc.desc: Test function of RmdirCore::DoRmdirent interface for SUCCESS.
144  * @tc.size: MEDIUM
145  * @tc.type: FUNC
146  * @tc.level Level 1
147  */
148 HWTEST_F(RmdirCoreTest, RmdirCoreTest_DoRmdirent_005, testing::ext::TestSize.Level1)
149 {
150     GTEST_LOG_(INFO) << "RmdirCoreTest-begin RmdirCoreTest_DoRmdirent_005";
151 
152     std::filesystem::create_directories("test_dir");
153     std::ofstream("test_dir/test_file.txt") << "test";
154 
155     auto res = RmdirentCore::DoRmdirent("test_dir");
156     EXPECT_EQ(res.IsSuccess(), true);
157 
158     try {
159         std::filesystem::permissions("test_dir",
160             std::filesystem::perms::owner_all,
161             std::filesystem::perm_options::replace);
162         } catch (...) {}
163     std::filesystem::remove_all("test_dir");
164 
165     GTEST_LOG_(INFO) << "RmdirCoreTest-end RmdirCoreTest_DoRmdirent_005";
166 }
167 
168 } // namespace OHOS::FileManagement::ModuleFileIO::Test