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 #include <string>
16 #include <sys/stat.h>
17 #include <fcntl.h>
18 #include <cinttypes>
19 #include "gtest/gtest.h"
20 #include "avcodec_errors.h"
21 #include "avcodec_info.h"
22 #include "media_description.h"
23 #include "file_fd_source_plugin_unit_test.h"
24
25 using namespace OHOS;
26 using namespace OHOS::Media;
27 using namespace std;
28 using namespace testing::ext;
29
30 namespace OHOS {
31 namespace Media {
32 namespace Plugins {
33 namespace FileFdSource {
34 const std::string MEDIA_ROOT = "file:///data/test/media/";
35 const std::string VIDEO_FILE1 = MEDIA_ROOT + "camera_info_parser.mp4";
SetUpTestCase(void)36 void OHOS::Media::Plugins::FileFdSource::FileFdSourceUnitTest::SetUpTestCase(void)
37 {
38 }
39
TearDownTestCase(void)40 void FileFdSourceUnitTest::TearDownTestCase(void)
41 {
42 }
43
SetUp(void)44 void FileFdSourceUnitTest::SetUp(void)
45 {
46 fileFdSourcePlugin_ = std::make_shared<FileFdSourcePlugin>("testPlugin");
47 size_t bufferSize = 1024;
48 std::shared_ptr<RingBuffer> ringBuffer = std::make_shared<RingBuffer>(bufferSize);
49 fileFdSourcePlugin_->ringBuffer_ = ringBuffer;
50 }
51
TearDown(void)52 void FileFdSourceUnitTest::TearDown(void)
53 {
54 fileFdSourcePlugin_->ringBuffer_ = nullptr;
55 fileFdSourcePlugin_ = nullptr;
56 }
57
58 class SourceCallback : public Plugins::Callback {
59 public:
OnEvent(const Plugins::PluginEvent & event)60 void OnEvent(const Plugins::PluginEvent &event) override
61 {
62 (void)event;
63 }
64
SetSelectBitRateFlag(bool flag,uint32_t desBitRate)65 void SetSelectBitRateFlag(bool flag, uint32_t desBitRate) override
66 {
67 (void)flag;
68 (void)desBitRate;
69 }
70
CanAutoSelectBitRate()71 bool CanAutoSelectBitRate() override
72 {
73 return true;
74 }
75 };
76
77 /**
78 * @tc.name: FileFdSource_SetSource_0100
79 * @tc.desc: SetSource
80 * @tc.type: FUNC
81 */
82 HWTEST_F(FileFdSourceUnitTest, FileFdSource_SetSource_0100, TestSize.Level1)
83 {
84 std::shared_ptr<MediaSource> mediaSource = std::make_shared<MediaSource>(VIDEO_FILE1);
85 EXPECT_NE(Status::OK, fileFdSourcePlugin_->SetSource(mediaSource));
86 }
87 /**
88 * @tc.name: FileFdSource_NotifyBufferingStart_0100
89 * @tc.desc: FileFdSource_NotifyBufferingStart_0100
90 * @tc.type: FUNC
91 */
92 HWTEST_F(FileFdSourceUnitTest, FileFdSource_NotifyBufferingStart_0100, TestSize.Level1)
93 {
94 Plugins::Callback* sourceCallback = new SourceCallback();
95 fileFdSourcePlugin_->isInterrupted_ = false;
96 fileFdSourcePlugin_->NotifyBufferingStart();
97 EXPECT_EQ(Status::OK, fileFdSourcePlugin_->SetCallback(sourceCallback));
98 fileFdSourcePlugin_->isInterrupted_ = true;
99 fileFdSourcePlugin_->NotifyBufferingStart();
100
101 fileFdSourcePlugin_->SetBundleName("TestFileFdSource");
102 fileFdSourcePlugin_->NotifyBufferingStart();
103 EXPECT_EQ(Status::OK, fileFdSourcePlugin_->Stop());
104 delete sourceCallback;
105 sourceCallback = nullptr;
106 }
107 /**
108 * @tc.name: FileFdSource_NotifyReadFail_0100
109 * @tc.desc: FileFdSource_NotifyReadFail_0100
110 * @tc.type: FUNC
111 */
112 HWTEST_F(FileFdSourceUnitTest, FileFdSource_NotifyReadFail_0100, TestSize.Level1)
113 {
114 fileFdSourcePlugin_->NotifyReadFail();
115 Plugins::Callback* sourceCallback = new SourceCallback();
116 EXPECT_EQ(Status::OK, fileFdSourcePlugin_->SetCallback(sourceCallback));
117 fileFdSourcePlugin_->NotifyReadFail();
118 EXPECT_EQ(Status::OK, fileFdSourcePlugin_->Stop());
119 fileFdSourcePlugin_->NotifyReadFail();
120 delete sourceCallback;
121 sourceCallback = nullptr;
122 }
123 /**
124 * @tc.name: FileFdSource_read_0100
125 * @tc.desc: FileFdSource_read_0100
126 * @tc.type: FUNC
127 */
128 HWTEST_F(FileFdSourceUnitTest, FileFdSource_read_0100, TestSize.Level1)
129 {
130 fileFdSourcePlugin_->NotifyBufferingStart();
131 std::shared_ptr<Buffer> buffer = std::make_shared<Buffer>();
132 EXPECT_NE(Status::OK, fileFdSourcePlugin_->Read(buffer, 0, 1024));
133 }
134 /**
135 * @tc.name: FileFdSource_read_0200
136 * @tc.desc: FileFdSource_read_0200
137 * @tc.type: FUNC
138 */
139 HWTEST_F(FileFdSourceUnitTest, FileFdSource_read_0200, TestSize.Level1)
140 {
141 std::shared_ptr<Buffer> buffer = nullptr;
142 EXPECT_NE(Status::OK, fileFdSourcePlugin_->Read(buffer, 0, 1024));
143 }
144 /**
145 * @tc.name: FileFdSource_ParseUriInfo_0100
146 * @tc.desc: FileFdSource_ParseUriInfo_0100
147 * @tc.type: FUNC
148 */
149 HWTEST_F(FileFdSourceUnitTest, FileFdSource_ParseUriInfo_0100, TestSize.Level1)
150 {
151 std::string uri = "";
152 std::shared_ptr<MediaSource> source = std::make_shared<MediaSource>(uri);
153 fileFdSourcePlugin_->SetSource(source);
154 EXPECT_EQ(Status::OK, fileFdSourcePlugin_->Reset());
155 }
156 /**
157 * @tc.name: FileFdSource_Reset_0100
158 * @tc.desc: FileFdSource_Reset_0100
159 * @tc.type: FUNC
160 */
161 HWTEST_F(FileFdSourceUnitTest, FileFdSource_Reset_0100, TestSize.Level1)
162 {
163 EXPECT_EQ(Status::OK, fileFdSourcePlugin_->Reset());
164 }
165 /**
166 * @tc.name: FileFdSource_SetBundleName_0100
167 * @tc.desc: FileFdSource_SetBundleName_0100
168 * @tc.type: FUNC
169 */
170 HWTEST_F(FileFdSourceUnitTest, FileFdSource_SetBundleName_0100, TestSize.Level1)
171 {
172 fileFdSourcePlugin_->Stop();
173 fileFdSourcePlugin_->SetBundleName("TestFileFdSource");
174 EXPECT_EQ(Status::OK, fileFdSourcePlugin_->Stop());
175 }
176 /**
177 * @tc.name: FileFdSource_PauseDownloadTask_0100
178 * @tc.desc: FileFdSource_PauseDownloadTask_0100
179 * @tc.type: FUNC
180 */
181 HWTEST_F(FileFdSourceUnitTest, FileFdSource_PauseDownloadTask_0100, TestSize.Level1)
182 {
183 fileFdSourcePlugin_->downloadTask_ = nullptr;
184 fileFdSourcePlugin_->PauseDownloadTask(true);
185 fileFdSourcePlugin_->downloadTask_ = std::shared_ptr<Task>();
186 fileFdSourcePlugin_->PauseDownloadTask(true);
187 fileFdSourcePlugin_->PauseDownloadTask(false);
188 }
189 } // namespace FileSource
190 } // namespace Plugins
191 } // namespace Media
192 } // namespace OHOS