1 /* 2 * Copyright (c) 2022 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 #include <gtest/gtest.h> 16 #include <osal_mem.h> 17 #include "codec_callback_if.h" 18 #include "codec_component_manager.h" 19 using namespace std; 20 using namespace testing::ext; 21 namespace { 22 class CodecHdiManagerTest : public testing::Test { 23 public: SetUpTestCase()24 static void SetUpTestCase() 25 {} TearDownTestCase()26 static void TearDownTestCase() 27 {} SetUp()28 void SetUp() 29 { 30 manager_ = GetCodecComponentManager(); 31 } TearDown()32 void TearDown() 33 { 34 CodecComponentManagerRelease(); 35 manager_ = nullptr; 36 } 37 38 public: 39 struct CodecComponentManager *manager_ = nullptr; 40 }; 41 /** 42 * @tc.name HdfCodecHdiGetComponentNumTest 43 * @tc.number SUB_Driver_Codec_CodecHdi_0200 44 * @tc.desc Obtain the total number of codec HDI2.0 capability sets 45 */ 46 HWTEST_F(CodecHdiManagerTest, SUB_Driver_Codec_CodecHdi_0200, Function | MediumTest | Level3) 47 { 48 ASSERT_TRUE(manager_ != nullptr); 49 auto count = manager_->GetComponentNum(); 50 EXPECT_TRUE(count >= 0); 51 } 52 /** 53 * @tc.name HdfCodecHdiGetCapabilityListTest_001 54 * @tc.number SUB_Driver_Codec_CodecHdi_0300 55 * @tc.desc Obtains the capability data of the codec capability and prints the data to the Hilog 56 */ 57 HWTEST_F(CodecHdiManagerTest, SUB_Driver_Codec_CodecHdi_0300, Function | MediumTest | Level3) 58 { 59 ASSERT_TRUE(manager_ != nullptr); 60 auto count = manager_->GetComponentNum(); 61 ASSERT_TRUE(count > 0); 62 CodecCompCapability *capList = (CodecCompCapability *)OsalMemAlloc(sizeof(CodecCompCapability) * count); 63 ASSERT_TRUE(capList != nullptr); 64 auto err = manager_->GetComponentCapabilityList(capList, count); 65 EXPECT_EQ(err, HDF_SUCCESS); 66 OsalMemFree(capList); 67 capList = nullptr; 68 } 69 /** 70 * @tc.name HdfCodecHdiCreateComponentTest_001 71 * @tc.number SUB_Driver_Codec_CodecHdi_0400 72 * @tc.desc Open the OpenMax component based on a name that does not exist 73 */ 74 HWTEST_F(CodecHdiManagerTest, SUB_Driver_Codec_CodecHdi_0400, Function | MediumTest | Level3) 75 { 76 struct CodecCallbackType *callback = CodecCallbackTypeGet(nullptr); 77 ASSERT_TRUE(callback != nullptr); 78 ASSERT_TRUE(manager_ != nullptr); 79 struct CodecComponentType *component = nullptr; 80 uint32_t componentId = 0; 81 int32_t ret = manager_->CreateComponent(&component, &componentId, nullptr, (int64_t)this, callback); 82 EXPECT_NE(ret, HDF_SUCCESS); 83 EXPECT_EQ(component, nullptr); 84 CodecCallbackTypeRelease(callback); 85 callback = nullptr; 86 } 87 /** 88 * @tc.name HdfCodecHdiCreateComponentTest_002 89 * @tc.number SUB_Driver_Codec_CodecHdi_0500 90 * @tc.desc When a component is opened, the name of the component is transferred to a null pointer 91 */ 92 HWTEST_F(CodecHdiManagerTest, SUB_Driver_Codec_CodecHdi_0500, Function | MediumTest | Level3) 93 { 94 ASSERT_TRUE(manager_ != nullptr); 95 std::string compName(""); 96 auto count = manager_->GetComponentNum(); 97 ASSERT_TRUE(count > 0); 98 CodecCompCapability *capList = (CodecCompCapability *)OsalMemAlloc(sizeof(CodecCompCapability) * count); 99 ASSERT_TRUE(capList != nullptr); 100 auto err = manager_->GetComponentCapabilityList(capList, count); 101 ASSERT_TRUE(err == HDF_SUCCESS); 102 compName = capList[0].compName; 103 OsalMemFree(capList); 104 capList = nullptr; 105 106 ASSERT_FALSE(compName.empty()); 107 struct CodecCallbackType *callback = CodecCallbackTypeGet(nullptr); 108 struct CodecComponentType *component = nullptr; 109 uint32_t componentId = 0; 110 ASSERT_TRUE(callback != nullptr); 111 auto ret = manager_->CreateComponent(&component, &componentId, compName.data(), (int64_t)this, callback); 112 ASSERT_EQ(ret, HDF_SUCCESS); 113 ret = manager_->DestroyComponent(componentId); 114 CodecCallbackTypeRelease(callback); 115 callback = nullptr; 116 } 117 /** 118 * @tc.name HdfCodecHdiDestoryComponentTest_001 119 * @tc.number SUB_Driver_Codec_CodecHdi_7400 120 * @tc.desc Releasing Components 121 */ 122 HWTEST_F(CodecHdiManagerTest, SUB_Driver_Codec_CodecHdi_7400, Function | MediumTest | Level3) 123 { 124 ASSERT_TRUE(manager_ != nullptr); 125 auto ret = manager_->DestroyComponent(0); 126 EXPECT_EQ(ret, HDF_SUCCESS); 127 } 128 } // namespace