• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021-2022 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 "mediascanner_unit_test.h"
17 
18 #include "medialibrary_errno.h"
19 #include "medialibrary_unittest_utils.h"
20 #include "media_log.h"
21 #include "media_scanner_manager.h"
22 #include "scanner_utils.h"
23 
24 using namespace std;
25 using namespace OHOS;
26 using namespace testing::ext;
27 
28 namespace OHOS {
29 namespace Media {
30 namespace {
31     shared_ptr<MediaScannerManager> mediaScannerManager = nullptr;
32 } // namespace
33 
SetUpTestCase(void)34 void MediaScannerUnitTest::SetUpTestCase(void)
35 {
36     MediaLibraryUnitTestUtils::Init();
37 
38     mediaScannerManager = MediaScannerManager::GetInstance();
39 }
40 
TearDownTestCase(void)41 void MediaScannerUnitTest::TearDownTestCase(void) {}
42 
43 // SetUp:Execute before each test case
SetUp()44 void MediaScannerUnitTest::SetUp()
45 {
46     MediaLibraryUnitTestUtils::CleanTestFiles();
47     MediaLibraryUnitTestUtils::InitRootDirs();
48 }
49 
TearDown(void)50 void MediaScannerUnitTest::TearDown(void) {}
51 
52 /**
53  * @tc.number    : MediaScanner_ScanDir_test_001
54  * @tc.name      : scan root dir
55  * @tc.desc      : scan root dir with six dirs
56  */
57 HWTEST_F(MediaScannerUnitTest,  MediaScanner_ScanDir_test_001, TestSize.Level1)
58 {
59     ASSERT_NE(mediaScannerManager, nullptr);
60     auto scannerCallback = make_shared<TestScannerCallback>();
61     int result = mediaScannerManager->ScanDir(ROOT_MEDIA_DIR, scannerCallback);
62     EXPECT_EQ(result, E_OK);
63 
64     if (result == 0) {
65         MediaLibraryUnitTestUtils::WaitForCallback(scannerCallback);
66         EXPECT_EQ(scannerCallback->status_, E_OK);
67     }
68 }
69 
70 /**
71  * @tc.number    : MediaScanner_ScanImage_Test_001
72  * @tc.name      : scan jpg file
73  * @tc.desc      : 1.create jpg file Scanner_Image1.jpg
74  *                 2.scan this file
75  */
76 HWTEST_F(MediaScannerUnitTest, MediaScanner_ScanImage_Test_001, TestSize.Level1)
77 {
78     ASSERT_NE(mediaScannerManager, nullptr);
79     string path = ROOT_MEDIA_DIR + "Pictures/Scanner_Image1.jpg";
80     EXPECT_EQ(MediaLibraryUnitTestUtils::CreateFileFS(path), true);
81 
82     auto scannerCallback = make_shared<TestScannerCallback>();
83     int result = mediaScannerManager->ScanFile(path, scannerCallback);
84     EXPECT_EQ(result, E_OK);
85 
86     if (result == 0) {
87         MediaLibraryUnitTestUtils::WaitForCallback(scannerCallback);
88         EXPECT_EQ(scannerCallback->status_, E_OK);
89     }
90 }
91 
92 /**
93  * @tc.number    : MediaScanner_ScanImage_Test_002
94  * @tc.name      : scan png file
95  * @tc.desc      : 1.create png file Scanner_Image2.png
96  *                 2.scan this file
97  */
98 HWTEST_F(MediaScannerUnitTest, MediaScanner_ScanImage_Test_002, TestSize.Level1)
99 {
100     ASSERT_NE(mediaScannerManager, nullptr);
101     string path = ROOT_MEDIA_DIR + "Pictures/Scanner_Image2.png";
102     EXPECT_EQ(MediaLibraryUnitTestUtils::CreateFileFS(path), true);
103 
104     auto scannerCallback = make_shared<TestScannerCallback>();
105     int result = mediaScannerManager->ScanFile(path, scannerCallback);
106     EXPECT_EQ(result, E_OK);
107 
108     if (result == 0) {
109         MediaLibraryUnitTestUtils::WaitForCallback(scannerCallback);
110         EXPECT_EQ(scannerCallback->status_, E_OK);
111     }
112 }
113 
114 /**
115  * @tc.number    : MediaScanner_ScanImage_Test_003
116  * @tc.name      : scan jpeg file
117  * @tc.desc      : 1.create jpeg file Scanner_Image3.jpeg
118  *                 2.scan this file
119  */
120 HWTEST_F(MediaScannerUnitTest, MediaScanner_ScanImage_Test_003, TestSize.Level1)
121 {
122     ASSERT_NE(mediaScannerManager, nullptr);
123     string path = ROOT_MEDIA_DIR + "Pictures/Scanner_Image3.jpeg";
124     EXPECT_EQ(MediaLibraryUnitTestUtils::CreateFileFS(path), true);
125 
126     auto scannerCallback = make_shared<TestScannerCallback>();
127     int result = mediaScannerManager->ScanFile(path, scannerCallback);
128     EXPECT_EQ(result, E_OK);
129 
130     if (result == 0) {
131         MediaLibraryUnitTestUtils::WaitForCallback(scannerCallback);
132         EXPECT_EQ(scannerCallback->status_, E_OK);
133     }
134 }
135 
136 /**
137  * @tc.number    : MediaScanner_ScanTextFile_Test_001
138  * @tc.name      : scan text file
139  * @tc.desc      : 1.create text file Scanner_Text1.txt
140  *                 2.scan this text file
141  */
142 HWTEST_F(MediaScannerUnitTest, MediaScanner_ScanTextFile_Test_001, TestSize.Level1)
143 {
144     ASSERT_NE(mediaScannerManager, nullptr);
145 
146     string path = ROOT_MEDIA_DIR + "Docs/Documents/Scanner_Text1.txt";
147     EXPECT_EQ(MediaLibraryUnitTestUtils::CreateFileFS(path), true);
148 
149     auto scannerCallback = make_shared<TestScannerCallback>();
150     int result = mediaScannerManager->ScanFile(path, scannerCallback);
151     EXPECT_EQ(result, E_OK);
152 
153     if (result == 0) {
154         MediaLibraryUnitTestUtils::WaitForCallback(scannerCallback);
155         EXPECT_EQ(scannerCallback->status_, E_OK);
156     }
157 }
158 
159 /**
160  * @tc.number    : MediaScanner_ScanHiddenFile_Test_001
161  * @tc.name      : scan hidden file
162  * @tc.desc      : 1.create hidden file .HiddenFile
163  *                 2.scan this hidden file
164  *                 3.expect return error
165  */
166 HWTEST_F(MediaScannerUnitTest, MediaScanner_ScanHiddenFile_Test_001, TestSize.Level1)
167 {
168     ASSERT_NE(mediaScannerManager, nullptr);
169     string path = ROOT_MEDIA_DIR + "Docs/Download/.HiddenFile";
170     EXPECT_EQ(MediaLibraryUnitTestUtils::CreateFileFS(path), true);
171 
172     auto scannerCallback = make_shared<TestScannerCallback>();
173     int result = mediaScannerManager->ScanFile(path, scannerCallback);
174     EXPECT_EQ(result, E_OK);
175 
176     if (result == 0) {
177         MediaLibraryUnitTestUtils::WaitForCallback(scannerCallback);
178         EXPECT_EQ(scannerCallback->status_, E_FILE_HIDDEN);
179     }
180 }
181 
182 /**
183  * @tc.number    : MediaScanner_ScanDir_CanonicalPathtest_001
184  * @tc.name      : scan dir with uncanonical path
185  * @tc.desc      : 1.pass dir's uncanonical path
186  */
187 HWTEST_F(MediaScannerUnitTest,  MediaScanner_ScanDir_CanonicalPathtest_001, TestSize.Level1)
188 {
189     ASSERT_NE(mediaScannerManager, nullptr);
190     string path = ROOT_MEDIA_DIR + "../files";
191     auto scannerCallback = make_shared<TestScannerCallback>();
192     int result = mediaScannerManager->ScanDir(path, scannerCallback);
193     EXPECT_EQ(result, E_OK);
194 
195     if (result == 0) {
196         MediaLibraryUnitTestUtils::WaitForCallback(scannerCallback);
197         EXPECT_EQ(scannerCallback->status_, E_OK);
198     }
199 }
200 
201 /**
202  * @tc.number    : MediaScanner_ScanFile_CanonicalPathtest_001
203  * @tc.name      : scan file with uncanonical path
204  * @tc.desc      : 1.create file
205  *                 2.pass file's uncanonical path
206  */
207 HWTEST_F(MediaScannerUnitTest,  MediaScanner_ScanFile_CanonicalPathtest_001, TestSize.Level1)
208 {
209     ASSERT_NE(mediaScannerManager, nullptr);
210     string path = ROOT_MEDIA_DIR + "../files/Pictures/Canonical1.jpg";
211     EXPECT_EQ(MediaLibraryUnitTestUtils::CreateFileFS(path), true);
212 
213     auto scannerCallback = make_shared<TestScannerCallback>();
214     int result = mediaScannerManager->ScanFile(path, scannerCallback);
215     EXPECT_EQ(result, E_OK);
216 
217     if (result == 0) {
218         MediaLibraryUnitTestUtils::WaitForCallback(scannerCallback);
219         EXPECT_EQ(scannerCallback->status_, E_OK);
220     }
221 }
222 
223 /**
224  * @tc.number    : MediaScanner_ScanFile_CanonicalPathtest_002
225  * @tc.name      : scan file with uncanonical path
226  * @tc.desc      : 1.create file
227  *                 2.pass file's uncanonical path
228  */
229 HWTEST_F(MediaScannerUnitTest,  MediaScanner_ScanFile_CanonicalPathtest_002, TestSize.Level1)
230 {
231     ASSERT_NE(mediaScannerManager, nullptr);
232     string path = ROOT_MEDIA_DIR + "../files/Docs/Documents/Canonical2.txt";
233     EXPECT_EQ(MediaLibraryUnitTestUtils::CreateFileFS(path), true);
234 
235     auto scannerCallback = make_shared<TestScannerCallback>();
236     int result = mediaScannerManager->ScanFile(path, scannerCallback);
237     EXPECT_EQ(result, E_OK);
238 
239     if (result == 0) {
240         MediaLibraryUnitTestUtils::WaitForCallback(scannerCallback);
241         EXPECT_EQ(scannerCallback->status_, E_OK);
242     }
243 }
244 } // namespace Media
245 } // namespace OHOS
246