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