• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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