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