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