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