1 /*
2 * Copyright (C) 2024 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 "ringtone_file_utils_test.h"
17
18 #include <algorithm>
19
20 #include "ringtone_db_const.h"
21 #include "ringtone_errno.h"
22 #include "ringtone_file_utils.h"
23 #include "ringtone_log.h"
24
25 using std::string;
26 using namespace testing::ext;
27
28 namespace OHOS {
29 namespace Media {
30 const string PATH = "ringtone/audio";
31 const string DEFAULT_STR = "";
32
SetUpTestCase()33 void RingtoneFileUtilsTest::SetUpTestCase() {}
TearDownTestCase()34 void RingtoneFileUtilsTest::TearDownTestCase() {}
SetUp()35 void RingtoneFileUtilsTest::SetUp()
36 {
37 system("mkdir /data/local/tmp/test");
38 }
TearDown(void)39 void RingtoneFileUtilsTest::TearDown(void)
40 {
41 system("rm -rf /data/local/tmp/test");
42 }
43
44 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_SplitByChar_Test_001, TestSize.Level0)
45 {
46 const char SLASH_CHAR = '/';
47 auto str = RingtoneFileUtils::SplitByChar(PATH, SLASH_CHAR);
48 ASSERT_EQ(str, "audio");
49 }
50
51 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_SplitByChar_Test_002, TestSize.Level0)
52 {
53 const char star = '*';
54 auto str = RingtoneFileUtils::SplitByChar(PATH, star);
55 ASSERT_EQ(str, DEFAULT_STR);
56 }
57
58 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_GetExtensionFromPath_Test_001, TestSize.Level0)
59 {
60 const string path = "ringtone/audio.mp3";
61 const string extension = "mp3";
62 auto str = RingtoneFileUtils::GetExtensionFromPath(path);
63 ASSERT_EQ(str, extension);
64 }
65
66 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_GetExtensionFromPath_Test_002, TestSize.Level0)
67 {
68 auto str = RingtoneFileUtils::GetExtensionFromPath(PATH);
69 ASSERT_EQ(str, DEFAULT_STR);
70 }
71
72 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_OpenFile_Test_001, TestSize.Level0)
73 {
74 const string path = "/storage/media/100";
75 auto ret = RingtoneFileUtils::OpenFile(path, RINGTONE_FILEMODE_WRITEONLY);
76 ASSERT_EQ(ret, E_INVALID_PATH);
77 ret = RingtoneFileUtils::OpenFile(path, "v");
78 ASSERT_EQ(ret, E_INVALID_PATH);
79 const int32_t count = 5200;
80 string filePath = string(count, 'a') + ".ogg";
81 ret = RingtoneFileUtils::OpenFile(filePath, RINGTONE_FILEMODE_WRITEONLY);
82 ASSERT_EQ(ret, E_ERR);
83 filePath = "ringtoneFileUtils_OpenFile_Test_001.ogg";
84 ret = RingtoneFileUtils::OpenFile(filePath, "z");
85 ASSERT_EQ(ret, E_ERR);
86 }
87
88 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_MilliSecond_Test_001, TestSize.Level0)
89 {
90 struct timespec t;
91 clock_gettime(CLOCK_REALTIME, &t);
92 int64_t MilliSecondTime = RingtoneFileUtils::Timespec2Millisecond(t);
93 ASSERT_EQ(MilliSecondTime, RingtoneFileUtils::UTCTimeMilliSeconds());
94 }
95
96 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_StartsWith_Test_001, TestSize.Level0)
97 {
98 const std::string prefix = "audio";
99 auto str = RingtoneFileUtils::StartsWith(PATH, prefix);
100 ASSERT_EQ(str, false);
101 }
102
103 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_StartsWith_Test_002, TestSize.Level0)
104 {
105 const std::string prefix = "ringtone/audio";
106 auto str = RingtoneFileUtils::StartsWith(PATH, prefix);
107 ASSERT_EQ(str, true);
108 }
109
110 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_IsFileExists_Test_001, TestSize.Level0)
111 {
112 const string filePath = "/data/test/isfileexists_001";
113 EXPECT_EQ(RingtoneFileUtils::IsFileExists(filePath), false);
114 }
115
116 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_CreateFile_Test_001, TestSize.Level0)
117 {
118 const string filePath = "/data/local/tmp/test/createfile_001.ogg";
119 EXPECT_EQ(RingtoneFileUtils::CreateFile(filePath), E_SUCCESS);
120 }
121
122 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_CreateFile_Test_002, TestSize.Level0)
123 {
124 string filePath = DEFAULT_STR;
125 EXPECT_EQ(RingtoneFileUtils::CreateFile(filePath), E_VIOLATION_PARAMETERS);
126 // invalid extension
127 filePath = "/data/local/tmp/test/createfile_002.com";
128 EXPECT_EQ(RingtoneFileUtils::CreateFile(filePath), E_INVALID_PATH);
129 }
130
131 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_CreateFile_Test_003, TestSize.Level0)
132 {
133 const string filePath = "/data/local/tmp/test/createfile_003.ogg";
134 EXPECT_EQ(RingtoneFileUtils::CreateFile(filePath), E_SUCCESS);
135 EXPECT_EQ(RingtoneFileUtils::CreateFile(filePath), E_FILE_EXIST);
136 }
137
138 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_CreateFile_Test_004, TestSize.Level0)
139 {
140 const string filePath = "/data/local/tmp/test/test/test/test/createfile_004.ogg";
141 EXPECT_EQ(RingtoneFileUtils::CreateFile(filePath), E_ERR);
142 }
143
144 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_GetFileNameFromPath_Test_001, TestSize.Level0)
145 {
146 string filePath = "/ringtoneFileUtils_GetFileNameFromPath_Test_001/createfile_001.ogg";
147 auto ret = RingtoneFileUtils::GetFileNameFromPath(filePath);
148 EXPECT_EQ(ret, "createfile_001.ogg");
149 filePath = "/";
150 ret = RingtoneFileUtils::GetFileNameFromPath(filePath);
151 EXPECT_EQ(ret, "");
152 filePath = "";
153 ret = RingtoneFileUtils::GetFileNameFromPath(filePath);
154 EXPECT_EQ(ret, "");
155 }
156
157 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_GetBaseNameFromPath_Test_001, TestSize.Level0)
158 {
159 string filePath = "data/createfile_001.";
160 auto ret = RingtoneFileUtils::GetBaseNameFromPath(filePath);
161 EXPECT_EQ(ret, "createfile_001");
162 filePath = "createfile_001./";
163 ret = RingtoneFileUtils::GetBaseNameFromPath(filePath);
164 EXPECT_EQ(ret, "");
165 }
166
167 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_IsSameFile_Test_001, TestSize.Level0)
168 {
169 const string srcPath = "/data/local/tmp/test/createfile_Test_001.ogg";
170 const string dstPath = "/data/local/tmp/test/createfile_Test_001.ogg";
171 auto ret = RingtoneFileUtils::IsSameFile(srcPath, dstPath);
172 EXPECT_EQ(ret, false);
173 EXPECT_EQ(RingtoneFileUtils::CreateFile(srcPath), E_SUCCESS);
174 ret = RingtoneFileUtils::IsSameFile(srcPath, dstPath);
175 EXPECT_EQ(ret, true);
176 }
177
178 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_RemoveDirectory_Test_001, TestSize.Level0)
179 {
180 const string filePath = "/data/local/tmp/test/createfile_003.ogg";
181 EXPECT_EQ(RingtoneFileUtils::CreateFile(filePath), E_SUCCESS);
182 auto ret = RingtoneFileUtils::RemoveDirectory(filePath);
183 EXPECT_EQ(ret, E_SUCCESS);
184 }
185
186 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_Mkdir_Test_001, TestSize.Level0)
187 {
188 const string path = "ringtoneFileUtils_RemoveDirectory_Test_001";
189 std::shared_ptr<int> errCodePtr;
190 auto ret = RingtoneFileUtils::Mkdir(path);
191 EXPECT_EQ(ret, true);
192 }
193
194 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_IsDirectory_Test_001, TestSize.Level0)
195 {
196 const string path = "ringtoneFileUtils_RemoveDirectory_Test_001";
197 std::shared_ptr<int> errCodePtr;
198 auto ret = RingtoneFileUtils::IsDirectory(path, errCodePtr);
199 EXPECT_EQ(ret, true);
200 const string pathDir = "/data/ringtone/ringtoneFileUtils_RemoveDirectory_Test_001";
201 ret = RingtoneFileUtils::IsDirectory(pathDir, errCodePtr);
202 EXPECT_EQ(ret, false);
203 std::shared_ptr<int> errCode = std::make_shared<int>(1);
204 ret = RingtoneFileUtils::IsDirectory(pathDir, errCode);
205 EXPECT_EQ(ret, false);
206 }
207
208 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_CreateDirectory_Test_001, TestSize.Level0)
209 {
210 string dirPath = "/data/test/isdirempty_002";
211 string subPath = dirPath + "/isdirempty_002";
212 EXPECT_EQ(RingtoneFileUtils::CreateDirectory(subPath), true);
213 }
214
215 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_MoveFile_Test_001, TestSize.Level0)
216 {
217 string oldPath = "/data/local/tmp/test/movefile_001.ogg";
218 string newPath = "/data/local/tmp/test/movefile_001_move.ogg";
219 EXPECT_EQ(RingtoneFileUtils::CreateFile(oldPath), E_SUCCESS);
220 EXPECT_EQ(RingtoneFileUtils::MoveFile(oldPath, newPath), true);
221 }
222
223 HWTEST_F(RingtoneFileUtilsTest, ringtoneFileUtils_CopyFileUtil_Test_001, TestSize.Level0)
224 {
225 string oldPath = "/data/local/tmp/test/movefile_001.ogg";
226 string newPath = "/data/local/tmp/test/movefile_001_move.ogg";
227 EXPECT_EQ(RingtoneFileUtils::CreateFile(oldPath), E_SUCCESS);
228 EXPECT_EQ(RingtoneFileUtils::CopyFileUtil(oldPath, newPath), true);
229 const string filePath("a", 5200);
230 RingtoneFileUtils::CopyFileUtil(filePath, newPath);
231 }
232 } // namespace Media
233 } // namespace OHOS
234