1fa7767c5Sopenharmony_ci/* 2fa7767c5Sopenharmony_ci * Copyright (c) 2023-2023 Huawei Device Co., Ltd. 3fa7767c5Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4fa7767c5Sopenharmony_ci * you may not use this file except in compliance with the License. 5fa7767c5Sopenharmony_ci * You may obtain a copy of the License at 6fa7767c5Sopenharmony_ci * 7fa7767c5Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8fa7767c5Sopenharmony_ci * 9fa7767c5Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10fa7767c5Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11fa7767c5Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12fa7767c5Sopenharmony_ci * See the License for the specific language governing permissions and 13fa7767c5Sopenharmony_ci * limitations under the License. 14fa7767c5Sopenharmony_ci */ 15fa7767c5Sopenharmony_ci 16fa7767c5Sopenharmony_ci#include "gtest/gtest.h" 17fa7767c5Sopenharmony_ci#include "plugin_manager.h" 18fa7767c5Sopenharmony_ci#include "plugin_types.h" 19fa7767c5Sopenharmony_ci 20fa7767c5Sopenharmony_ci#define private public 21fa7767c5Sopenharmony_ci#define protected public 22fa7767c5Sopenharmony_ci 23fa7767c5Sopenharmony_ci#include "plugins/UtSourceTest1.h" 24fa7767c5Sopenharmony_ci#include "plugins/UtSourceTest2.h" 25fa7767c5Sopenharmony_ci 26fa7767c5Sopenharmony_ciusing namespace std; 27fa7767c5Sopenharmony_ciusing namespace testing::ext; 28fa7767c5Sopenharmony_ciusing namespace OHOS::Media::Plugin; 29fa7767c5Sopenharmony_ci 30fa7767c5Sopenharmony_cinamespace OHOS { 31fa7767c5Sopenharmony_cinamespace Media { 32fa7767c5Sopenharmony_cinamespace Test { 33fa7767c5Sopenharmony_ciusing namespace OHOS::Media::Plugin; 34fa7767c5Sopenharmony_ci 35fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, ListPlugins_case4, TestSize.Level1) 36fa7767c5Sopenharmony_ci{ 37fa7767c5Sopenharmony_ci std::vector<std::string> plugins = PluginManager::Instance().ListPlugins(PluginType::DEMUXER); 38fa7767c5Sopenharmony_ci ASSERT_TRUE(plugins.size() > 1); 39fa7767c5Sopenharmony_ci for (const auto & plugin : plugins) { 40fa7767c5Sopenharmony_ci ASSERT_NE(plugin, ""); 41fa7767c5Sopenharmony_ci } 42fa7767c5Sopenharmony_ci} 43fa7767c5Sopenharmony_ci 44fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, ListPlugins_case5, TestSize.Level1) 45fa7767c5Sopenharmony_ci{ 46fa7767c5Sopenharmony_ci std::vector<std::string> plugins = PluginManager::Instance().ListPlugins(PluginType::AUDIO_DECODER); 47fa7767c5Sopenharmony_ci ASSERT_TRUE(plugins.size() > 1); 48fa7767c5Sopenharmony_ci for (const auto & plugin : plugins) { 49fa7767c5Sopenharmony_ci ASSERT_NE(plugin, ""); 50fa7767c5Sopenharmony_ci } 51fa7767c5Sopenharmony_ci} 52fa7767c5Sopenharmony_ci 53fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, ListPlugins_case6, TestSize.Level1) 54fa7767c5Sopenharmony_ci{ 55fa7767c5Sopenharmony_ci std::vector<std::string> plugins = PluginManager::Instance().ListPlugins(PluginType::AUDIO_SINK); 56fa7767c5Sopenharmony_ci ASSERT_FALSE(plugins.size() > 1); 57fa7767c5Sopenharmony_ci} 58fa7767c5Sopenharmony_ci 59fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, ListPlugins_case7, TestSize.Level1) 60fa7767c5Sopenharmony_ci{ 61fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().ListPlugins(PluginType::INVALID_TYPE).empty()); 62fa7767c5Sopenharmony_ci} 63fa7767c5Sopenharmony_ci 64fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, ListPlugins_case8, TestSize.Level1) 65fa7767c5Sopenharmony_ci{ 66fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().ListPlugins(PluginType(256)).empty()); 67fa7767c5Sopenharmony_ci} 68fa7767c5Sopenharmony_ci 69fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, GetPluginInfo_case1, TestSize.Level1) 70fa7767c5Sopenharmony_ci{ 71fa7767c5Sopenharmony_ci std::shared_ptr<PluginInfo> info = PluginManager::Instance().GetPluginInfo( 72fa7767c5Sopenharmony_ci PluginType::SOURCE, "UtSourceTest1"); 73fa7767c5Sopenharmony_ci ASSERT_FALSE(info != nullptr); 74fa7767c5Sopenharmony_ci} 75fa7767c5Sopenharmony_ci 76fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, GetPluginInfo_case2, TestSize.Level1) 77fa7767c5Sopenharmony_ci{ 78fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType::SOURCE, "UtSourceTest3") == nullptr); 79fa7767c5Sopenharmony_ci} 80fa7767c5Sopenharmony_ci 81fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, GetPluginInfo_case3, TestSize.Level1) 82fa7767c5Sopenharmony_ci{ 83fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType::SOURCE, "") == nullptr); 84fa7767c5Sopenharmony_ci} 85fa7767c5Sopenharmony_ci 86fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, GetPluginInfo_case4, TestSize.Level1) 87fa7767c5Sopenharmony_ci{ 88fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType::INVALID_TYPE, "") == nullptr); 89fa7767c5Sopenharmony_ci} 90fa7767c5Sopenharmony_ci 91fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, GetPluginInfo_case5, TestSize.Level1) 92fa7767c5Sopenharmony_ci{ 93fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType(256), "") == nullptr); 94fa7767c5Sopenharmony_ci} 95fa7767c5Sopenharmony_ci 96fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, CreateSourcePlugin_case2, TestSize.Level1) 97fa7767c5Sopenharmony_ci{ 98fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().CreateSourcePlugin("UtSourceTest3") == nullptr); 99fa7767c5Sopenharmony_ci} 100fa7767c5Sopenharmony_ci 101fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, CreateSourcePlugin_case3, TestSize.Level1) 102fa7767c5Sopenharmony_ci{ 103fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().CreateSourcePlugin("") == nullptr); 104fa7767c5Sopenharmony_ci} 105fa7767c5Sopenharmony_ci 106fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, CreateDemuxerPlugin_case2, TestSize.Level1) 107fa7767c5Sopenharmony_ci{ 108fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().CreateDemuxerPlugin("UtDemuxerTest3") == nullptr); 109fa7767c5Sopenharmony_ci} 110fa7767c5Sopenharmony_ci 111fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, CreateDemuxerPlugin_case3, TestSize.Level1) 112fa7767c5Sopenharmony_ci{ 113fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().CreateDemuxerPlugin("") == nullptr); 114fa7767c5Sopenharmony_ci} 115fa7767c5Sopenharmony_ci 116fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, CreateCodecPlugin_case2, TestSize.Level1) 117fa7767c5Sopenharmony_ci{ 118fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().CreateCodecPlugin("UtCodecTest3", PluginType::AUDIO_DECODER) == nullptr); 119fa7767c5Sopenharmony_ci} 120fa7767c5Sopenharmony_ci 121fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, CreateCodecPlugin_case3, TestSize.Level1) 122fa7767c5Sopenharmony_ci{ 123fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().CreateCodecPlugin("", PluginType::AUDIO_DECODER) == nullptr); 124fa7767c5Sopenharmony_ci} 125fa7767c5Sopenharmony_ci 126fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, CreateAudioSinkPlugin_case2, TestSize.Level1) 127fa7767c5Sopenharmony_ci{ 128fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().CreateAudioSinkPlugin("UtAudioSinkTest3") == nullptr); 129fa7767c5Sopenharmony_ci} 130fa7767c5Sopenharmony_ci 131fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, CreateAudioSinkPlugin_case3, TestSize.Level1) 132fa7767c5Sopenharmony_ci{ 133fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().CreateAudioSinkPlugin("") == nullptr); 134fa7767c5Sopenharmony_ci} 135fa7767c5Sopenharmony_ci 136fa7767c5Sopenharmony_ciclass UtDataSourceHelperTest1 : public DataSourceHelper { 137fa7767c5Sopenharmony_cipublic: 138fa7767c5Sopenharmony_ci ~UtDataSourceHelperTest1() override = default; 139fa7767c5Sopenharmony_ci 140fa7767c5Sopenharmony_ci Status ReadAt(int64_t offset, std::shared_ptr<Buffer> &buffer, size_t expectedLen) override 141fa7767c5Sopenharmony_ci { 142fa7767c5Sopenharmony_ci buffer->GetMemory()->Write(reinterpret_cast<const uint8_t *>("UtPlugin"), 8); 143fa7767c5Sopenharmony_ci return Status::OK; 144fa7767c5Sopenharmony_ci } 145fa7767c5Sopenharmony_ci 146fa7767c5Sopenharmony_ci Status GetSize(uint64_t &size) override 147fa7767c5Sopenharmony_ci { 148fa7767c5Sopenharmony_ci return Status::OK; 149fa7767c5Sopenharmony_ci } 150fa7767c5Sopenharmony_ci 151fa7767c5Sopenharmony_ci OHOS::Media::Plugin::Seekable GetSeekable() override 152fa7767c5Sopenharmony_ci { 153fa7767c5Sopenharmony_ci return OHOS::Media::Plugin::Seekable::SEEKABLE; 154fa7767c5Sopenharmony_ci } 155fa7767c5Sopenharmony_ci}; 156fa7767c5Sopenharmony_ci 157fa7767c5Sopenharmony_ciclass UtDataSourceHelperTest2 : public DataSourceHelper { 158fa7767c5Sopenharmony_cipublic: 159fa7767c5Sopenharmony_ci ~UtDataSourceHelperTest2() override = default; 160fa7767c5Sopenharmony_ci 161fa7767c5Sopenharmony_ci Status ReadAt(int64_t offset, std::shared_ptr<Buffer> &buffer, size_t expectedLen) override 162fa7767c5Sopenharmony_ci { 163fa7767c5Sopenharmony_ci buffer->GetMemory()->Write(reinterpret_cast<const uint8_t *>("12345678"), 8); 164fa7767c5Sopenharmony_ci return Status::OK; 165fa7767c5Sopenharmony_ci } 166fa7767c5Sopenharmony_ci 167fa7767c5Sopenharmony_ci Status GetSize(uint64_t &size) override 168fa7767c5Sopenharmony_ci { 169fa7767c5Sopenharmony_ci return Status::OK; 170fa7767c5Sopenharmony_ci } 171fa7767c5Sopenharmony_ci 172fa7767c5Sopenharmony_ci OHOS::Media::Plugin::Seekable GetSeekable() override 173fa7767c5Sopenharmony_ci { 174fa7767c5Sopenharmony_ci return OHOS::Media::Plugin::Seekable::SEEKABLE; 175fa7767c5Sopenharmony_ci } 176fa7767c5Sopenharmony_ci}; 177fa7767c5Sopenharmony_ci 178fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, Sniffer_case2, TestSize.Level1) 179fa7767c5Sopenharmony_ci{ 180fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().Sniffer("UtDemuxerTest1", 181fa7767c5Sopenharmony_ci std::make_shared<UtDataSourceHelperTest2>()) == 0); 182fa7767c5Sopenharmony_ci} 183fa7767c5Sopenharmony_ci 184fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, Sniffer_case3, TestSize.Level1) 185fa7767c5Sopenharmony_ci{ 186fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().Sniffer("UtDemuxerTest3", 187fa7767c5Sopenharmony_ci std::make_shared<UtDataSourceHelperTest1>()) == 0); 188fa7767c5Sopenharmony_ci} 189fa7767c5Sopenharmony_ci 190fa7767c5Sopenharmony_ciHWTEST(TestPluginManager, Sniffer_case4, TestSize.Level1) 191fa7767c5Sopenharmony_ci{ 192fa7767c5Sopenharmony_ci ASSERT_TRUE(PluginManager::Instance().Sniffer("UtDemuxerTest1", nullptr) == 0); 193fa7767c5Sopenharmony_ci} 194fa7767c5Sopenharmony_ci} // namespace Test 195fa7767c5Sopenharmony_ci} // namespace Media 196fa7767c5Sopenharmony_ci} // namespace OHOS 197