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 35 HWTEST(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 44 HWTEST(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 53 HWTEST(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 59 HWTEST(TestPluginManager, ListPlugins_case7, TestSize.Level1) 60 { 61 ASSERT_TRUE(PluginManager::Instance().ListPlugins(PluginType::INVALID_TYPE).empty()); 62 } 63 64 HWTEST(TestPluginManager, ListPlugins_case8, TestSize.Level1) 65 { 66 ASSERT_TRUE(PluginManager::Instance().ListPlugins(PluginType(256)).empty()); 67 } 68 69 HWTEST(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 76 HWTEST(TestPluginManager, GetPluginInfo_case2, TestSize.Level1) 77 { 78 ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType::SOURCE, "UtSourceTest3") == nullptr); 79 } 80 81 HWTEST(TestPluginManager, GetPluginInfo_case3, TestSize.Level1) 82 { 83 ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType::SOURCE, "") == nullptr); 84 } 85 86 HWTEST(TestPluginManager, GetPluginInfo_case4, TestSize.Level1) 87 { 88 ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType::INVALID_TYPE, "") == nullptr); 89 } 90 91 HWTEST(TestPluginManager, GetPluginInfo_case5, TestSize.Level1) 92 { 93 ASSERT_TRUE(PluginManager::Instance().GetPluginInfo(PluginType(256), "") == nullptr); 94 } 95 96 HWTEST(TestPluginManager, CreateSourcePlugin_case2, TestSize.Level1) 97 { 98 ASSERT_TRUE(PluginManager::Instance().CreateSourcePlugin("UtSourceTest3") == nullptr); 99 } 100 101 HWTEST(TestPluginManager, CreateSourcePlugin_case3, TestSize.Level1) 102 { 103 ASSERT_TRUE(PluginManager::Instance().CreateSourcePlugin("") == nullptr); 104 } 105 106 HWTEST(TestPluginManager, CreateDemuxerPlugin_case2, TestSize.Level1) 107 { 108 ASSERT_TRUE(PluginManager::Instance().CreateDemuxerPlugin("UtDemuxerTest3") == nullptr); 109 } 110 111 HWTEST(TestPluginManager, CreateDemuxerPlugin_case3, TestSize.Level1) 112 { 113 ASSERT_TRUE(PluginManager::Instance().CreateDemuxerPlugin("") == nullptr); 114 } 115 116 HWTEST(TestPluginManager, CreateCodecPlugin_case2, TestSize.Level1) 117 { 118 ASSERT_TRUE(PluginManager::Instance().CreateCodecPlugin("UtCodecTest3", PluginType::AUDIO_DECODER) == nullptr); 119 } 120 121 HWTEST(TestPluginManager, CreateCodecPlugin_case3, TestSize.Level1) 122 { 123 ASSERT_TRUE(PluginManager::Instance().CreateCodecPlugin("", PluginType::AUDIO_DECODER) == nullptr); 124 } 125 126 HWTEST(TestPluginManager, CreateAudioSinkPlugin_case2, TestSize.Level1) 127 { 128 ASSERT_TRUE(PluginManager::Instance().CreateAudioSinkPlugin("UtAudioSinkTest3") == nullptr); 129 } 130 131 HWTEST(TestPluginManager, CreateAudioSinkPlugin_case3, TestSize.Level1) 132 { 133 ASSERT_TRUE(PluginManager::Instance().CreateAudioSinkPlugin("") == nullptr); 134 } 135 136 class UtDataSourceHelperTest1 : public DataSourceHelper { 137 public: 138 ~UtDataSourceHelperTest1() override = default; 139 ReadAt(int64_t offset,std::shared_ptr<Buffer> & buffer,size_t expectedLen)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 GetSize(uint64_t & size)146 Status GetSize(uint64_t &size) override 147 { 148 return Status::OK; 149 } 150 GetSeekable()151 OHOS::Media::Plugin::Seekable GetSeekable() override 152 { 153 return OHOS::Media::Plugin::Seekable::SEEKABLE; 154 } 155 }; 156 157 class UtDataSourceHelperTest2 : public DataSourceHelper { 158 public: 159 ~UtDataSourceHelperTest2() override = default; 160 ReadAt(int64_t offset,std::shared_ptr<Buffer> & buffer,size_t expectedLen)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 GetSize(uint64_t & size)167 Status GetSize(uint64_t &size) override 168 { 169 return Status::OK; 170 } 171 GetSeekable()172 OHOS::Media::Plugin::Seekable GetSeekable() override 173 { 174 return OHOS::Media::Plugin::Seekable::SEEKABLE; 175 } 176 }; 177 178 HWTEST(TestPluginManager, Sniffer_case2, TestSize.Level1) 179 { 180 ASSERT_TRUE(PluginManager::Instance().Sniffer("UtDemuxerTest1", 181 std::make_shared<UtDataSourceHelperTest2>()) == 0); 182 } 183 184 HWTEST(TestPluginManager, Sniffer_case3, TestSize.Level1) 185 { 186 ASSERT_TRUE(PluginManager::Instance().Sniffer("UtDemuxerTest3", 187 std::make_shared<UtDataSourceHelperTest1>()) == 0); 188 } 189 190 HWTEST(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