1 /*
2 * Copyright (c) 2021-2021 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 <gtest/gtest.h>
17
18 #define private public
19 #define protected public
20
21 #include "plugin/core/plugin_manager.h"
22
23 #include "plugins/UtSourceTest1.h"
24 #include "plugins/UtSourceTest2.h"
25
26 namespace OHOS {
27 namespace Media {
28 namespace Test {
29 using namespace OHOS::Media::Plugin;
30
TEST(TestPluginManager,ListPlugins_case3)31 TEST(TestPluginManager, ListPlugins_case3)
32 {
33 UtSourceTest1::available = true;
34 UtSourceTest2::available = true;
35 std::set<std::string> plugins = PluginManager::Instance().ListPlugins(PluginType::SOURCE);
36 ASSERT_TRUE(plugins.size() > 1);
37 for (const auto & plugin : plugins) {
38 ASSERT_NE(plugin, "");
39 }
40 }
41
TEST(TestPluginManager,ListPlugins_case4)42 TEST(TestPluginManager, ListPlugins_case4)
43 {
44 std::set<std::string> plugins = PluginManager::Instance().ListPlugins(PluginType::DEMUXER);
45 ASSERT_TRUE(plugins.size() > 1);
46 for (const auto & plugin : plugins) {
47 ASSERT_NE(plugin, "");
48 }
49 }
50
TEST(TestPluginManager,ListPlugins_case5)51 TEST(TestPluginManager, ListPlugins_case5)
52 {
53 std::set<std::string> plugins = PluginManager::Instance().ListPlugins(PluginType::CODEC);
54 ASSERT_TRUE(plugins.size() > 1);
55 for (const auto & plugin : plugins) {
56 ASSERT_NE(plugin, "");
57 }
58 }
59
TEST(TestPluginManager,ListPlugins_case6)60 TEST(TestPluginManager, ListPlugins_case6)
61 {
62 std::set<std::string> plugins = PluginManager::Instance().ListPlugins(PluginType::AUDIO_SINK);
63 ASSERT_TRUE(plugins.size() > 1);
64 for (const auto & plugin : plugins) {
65 ASSERT_NE(plugin, "");
66 }
67 }
68
TEST(TestPluginManager,ListPlugins_case7)69 TEST(TestPluginManager, ListPlugins_case7)
70 {
71 ASSERT_TRUE(PluginManager::Instance().ListPlugins(PluginType::INVALID_TYPE).empty());
72 }
73
TEST(TestPluginManager,ListPlugins_case8)74 TEST(TestPluginManager, ListPlugins_case8)
75 {
76 ASSERT_TRUE(PluginManager::Instance().ListPlugins(PluginType(256)).empty());
77 }
78
TEST(TestPluginManager,GetPluginInfo_case1)79 TEST(TestPluginManager, GetPluginInfo_case1)
80 {
81 std::shared_ptr<PluginInfo> info = PluginManager::Instance().GetPluginInfo(
82 PluginType::SOURCE, "UtSourceTest1");
83 ASSERT_TRUE(info != nullptr);
84 ASSERT_EQ(info->name, "UtSourceTest1");
85 }
86
TEST(TestPluginManager,GetPluginInfo_case2)87 TEST(TestPluginManager, GetPluginInfo_case2)
88 {
89 ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType::SOURCE, "UtSourceTest3") == nullptr);
90 }
91
TEST(TestPluginManager,GetPluginInfo_case3)92 TEST(TestPluginManager, GetPluginInfo_case3)
93 {
94 ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType::SOURCE, "") == nullptr);
95 }
96
TEST(TestPluginManager,GetPluginInfo_case4)97 TEST(TestPluginManager, GetPluginInfo_case4)
98 {
99 ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType::INVALID_TYPE, "") == nullptr);
100 }
101
TEST(TestPluginManager,GetPluginInfo_case5)102 TEST(TestPluginManager, GetPluginInfo_case5)
103 {
104 ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType(256), "") == nullptr);
105 }
106
TEST(TestPluginManager,CreateSourcePlugin_case1)107 TEST(TestPluginManager, CreateSourcePlugin_case1)
108 {
109 ASSERT_TRUE(PluginManager::Instance().CreateSourcePlugin("UtSourceTest1") != nullptr);
110 }
111
TEST(TestPluginManager,CreateSourcePlugin_case2)112 TEST(TestPluginManager, CreateSourcePlugin_case2)
113 {
114 ASSERT_TRUE(PluginManager::Instance().CreateSourcePlugin("UtSourceTest3") == nullptr);
115 }
116
TEST(TestPluginManager,CreateSourcePlugin_case3)117 TEST(TestPluginManager, CreateSourcePlugin_case3)
118 {
119 ASSERT_TRUE(PluginManager::Instance().CreateSourcePlugin("") == nullptr);
120 }
121
TEST(TestPluginManager,CreateDemuxerPlugin_case1)122 TEST(TestPluginManager, CreateDemuxerPlugin_case1)
123 {
124 ASSERT_TRUE(PluginManager::Instance().CreateDemuxerPlugin("UtDemuxerTest1") != nullptr);
125 }
126
TEST(TestPluginManager,CreateDemuxerPlugin_case2)127 TEST(TestPluginManager, CreateDemuxerPlugin_case2)
128 {
129 ASSERT_TRUE(PluginManager::Instance().CreateDemuxerPlugin("UtDemuxerTest3") == nullptr);
130 }
131
TEST(TestPluginManager,CreateDemuxerPlugin_case3)132 TEST(TestPluginManager, CreateDemuxerPlugin_case3)
133 {
134 ASSERT_TRUE(PluginManager::Instance().CreateDemuxerPlugin("") == nullptr);
135 }
136
TEST(TestPluginManager,CreateCodecPlugin_case1)137 TEST(TestPluginManager, CreateCodecPlugin_case1)
138 {
139 ASSERT_TRUE(PluginManager::Instance().CreateCodecPlugin("UtCodecTest1") != nullptr);
140 }
141
TEST(TestPluginManager,CreateCodecPlugin_case2)142 TEST(TestPluginManager, CreateCodecPlugin_case2)
143 {
144 ASSERT_TRUE(PluginManager::Instance().CreateCodecPlugin("UtCodecTest3") == nullptr);
145 }
146
TEST(TestPluginManager,CreateCodecPlugin_case3)147 TEST(TestPluginManager, CreateCodecPlugin_case3)
148 {
149 ASSERT_TRUE(PluginManager::Instance().CreateCodecPlugin("") == nullptr);
150 }
151
TEST(TestPluginManager,CreateAudioSinkPlugin_case1)152 TEST(TestPluginManager, CreateAudioSinkPlugin_case1)
153 {
154 ASSERT_TRUE(PluginManager::Instance().CreateAudioSinkPlugin("UtAudioSinkTest1") != nullptr);
155 }
156
TEST(TestPluginManager,CreateAudioSinkPlugin_case2)157 TEST(TestPluginManager, CreateAudioSinkPlugin_case2)
158 {
159 ASSERT_TRUE(PluginManager::Instance().CreateAudioSinkPlugin("UtAudioSinkTest3") == nullptr);
160 }
161
TEST(TestPluginManager,CreateAudioSinkPlugin_case3)162 TEST(TestPluginManager, CreateAudioSinkPlugin_case3)
163 {
164 ASSERT_TRUE(PluginManager::Instance().CreateAudioSinkPlugin("") == nullptr);
165 }
166
167 class UtDataSourceHelperTest1 : public DataSourceHelper {
168 public:
169 ~UtDataSourceHelperTest1() override = default;
170
ReadAt(int64_t offset,std::shared_ptr<Buffer> & buffer,size_t expectedLen)171 Status ReadAt(int64_t offset, std::shared_ptr<Buffer> &buffer, size_t expectedLen) override
172 {
173 buffer->GetMemory()->Write(reinterpret_cast<const uint8_t *>("UtPlugin"), 8);
174 return Status::OK;
175 }
176
GetSize(size_t & size)177 Status GetSize(size_t &size) override
178 {
179 return Status::OK;
180 }
181
GetSeekable()182 OHOS::Media::Plugin::Seekable GetSeekable() override
183 {
184 return OHOS::Media::Plugin::Seekable::SEEKABLE;
185 }
186 };
187
188 class UtDataSourceHelperTest2 : public DataSourceHelper {
189 public:
190 ~UtDataSourceHelperTest2() override = default;
191
ReadAt(int64_t offset,std::shared_ptr<Buffer> & buffer,size_t expectedLen)192 Status ReadAt(int64_t offset, std::shared_ptr<Buffer> &buffer, size_t expectedLen) override
193 {
194 buffer->GetMemory()->Write(reinterpret_cast<const uint8_t *>("12345678"), 8);
195 return Status::OK;
196 }
197
GetSize(size_t & size)198 Status GetSize(size_t &size) override
199 {
200 return Status::OK;
201 }
202
GetSeekable()203 OHOS::Media::Plugin::Seekable GetSeekable() override
204 {
205 return OHOS::Media::Plugin::Seekable::SEEKABLE;
206 }
207 };
208
209
TEST(TestPluginManager,Sniffer_case1)210 TEST(TestPluginManager, Sniffer_case1)
211 {
212 ASSERT_TRUE(PluginManager::Instance().Sniffer("UtDemuxerTest1",
213 std::make_shared<UtDataSourceHelperTest1>()) > 0);
214 }
215
TEST(TestPluginManager,Sniffer_case2)216 TEST(TestPluginManager, Sniffer_case2)
217 {
218 ASSERT_TRUE(PluginManager::Instance().Sniffer("UtDemuxerTest1",
219 std::make_shared<UtDataSourceHelperTest2>()) == 0);
220 }
221
TEST(TestPluginManager,Sniffer_case3)222 TEST(TestPluginManager, Sniffer_case3)
223 {
224 ASSERT_TRUE(PluginManager::Instance().Sniffer("UtDemuxerTest3",
225 std::make_shared<UtDataSourceHelperTest1>()) == 0);
226 }
227
TEST(TestPluginManager,Sniffer_case4)228 TEST(TestPluginManager, Sniffer_case4)
229 {
230 ASSERT_TRUE(PluginManager::Instance().Sniffer("UtDemuxerTest1", nullptr) == 0);
231 }
232 } // namespace Test
233 } // namespace Media
234 } // namespace OHOS
235