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