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 26using namespace std; 27using namespace testing::ext; 28using namespace OHOS::Media::Plugin; 29 30namespace OHOS { 31namespace Media { 32namespace Test { 33using namespace OHOS::Media::Plugin; 34 35HWTEST(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 44HWTEST(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 53HWTEST(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 59HWTEST(TestPluginManager, ListPlugins_case7, TestSize.Level1) 60{ 61 ASSERT_TRUE(PluginManager::Instance().ListPlugins(PluginType::INVALID_TYPE).empty()); 62} 63 64HWTEST(TestPluginManager, ListPlugins_case8, TestSize.Level1) 65{ 66 ASSERT_TRUE(PluginManager::Instance().ListPlugins(PluginType(256)).empty()); 67} 68 69HWTEST(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 76HWTEST(TestPluginManager, GetPluginInfo_case2, TestSize.Level1) 77{ 78 ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType::SOURCE, "UtSourceTest3") == nullptr); 79} 80 81HWTEST(TestPluginManager, GetPluginInfo_case3, TestSize.Level1) 82{ 83 ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType::SOURCE, "") == nullptr); 84} 85 86HWTEST(TestPluginManager, GetPluginInfo_case4, TestSize.Level1) 87{ 88 ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType::INVALID_TYPE, "") == nullptr); 89} 90 91HWTEST(TestPluginManager, GetPluginInfo_case5, TestSize.Level1) 92{ 93 ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType(256), "") == nullptr); 94} 95 96HWTEST(TestPluginManager, CreateSourcePlugin_case2, TestSize.Level1) 97{ 98 ASSERT_TRUE(PluginManager::Instance().CreateSourcePlugin("UtSourceTest3") == nullptr); 99} 100 101HWTEST(TestPluginManager, CreateSourcePlugin_case3, TestSize.Level1) 102{ 103 ASSERT_TRUE(PluginManager::Instance().CreateSourcePlugin("") == nullptr); 104} 105 106HWTEST(TestPluginManager, CreateDemuxerPlugin_case2, TestSize.Level1) 107{ 108 ASSERT_TRUE(PluginManager::Instance().CreateDemuxerPlugin("UtDemuxerTest3") == nullptr); 109} 110 111HWTEST(TestPluginManager, CreateDemuxerPlugin_case3, TestSize.Level1) 112{ 113 ASSERT_TRUE(PluginManager::Instance().CreateDemuxerPlugin("") == nullptr); 114} 115 116HWTEST(TestPluginManager, CreateCodecPlugin_case2, TestSize.Level1) 117{ 118 ASSERT_TRUE(PluginManager::Instance().CreateCodecPlugin("UtCodecTest3", PluginType::AUDIO_DECODER) == nullptr); 119} 120 121HWTEST(TestPluginManager, CreateCodecPlugin_case3, TestSize.Level1) 122{ 123 ASSERT_TRUE(PluginManager::Instance().CreateCodecPlugin("", PluginType::AUDIO_DECODER) == nullptr); 124} 125 126HWTEST(TestPluginManager, CreateAudioSinkPlugin_case2, TestSize.Level1) 127{ 128 ASSERT_TRUE(PluginManager::Instance().CreateAudioSinkPlugin("UtAudioSinkTest3") == nullptr); 129} 130 131HWTEST(TestPluginManager, CreateAudioSinkPlugin_case3, TestSize.Level1) 132{ 133 ASSERT_TRUE(PluginManager::Instance().CreateAudioSinkPlugin("") == nullptr); 134} 135 136class UtDataSourceHelperTest1 : public DataSourceHelper { 137public: 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 157class UtDataSourceHelperTest2 : public DataSourceHelper { 158public: 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 178HWTEST(TestPluginManager, Sniffer_case2, TestSize.Level1) 179{ 180 ASSERT_TRUE(PluginManager::Instance().Sniffer("UtDemuxerTest1", 181 std::make_shared<UtDataSourceHelperTest2>()) == 0); 182} 183 184HWTEST(TestPluginManager, Sniffer_case3, TestSize.Level1) 185{ 186 ASSERT_TRUE(PluginManager::Instance().Sniffer("UtDemuxerTest3", 187 std::make_shared<UtDataSourceHelperTest1>()) == 0); 188} 189 190HWTEST(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