132a6e48fSopenharmony_ci/* 232a6e48fSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 332a6e48fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 432a6e48fSopenharmony_ci * you may not use this file except in compliance with the License. 532a6e48fSopenharmony_ci * You may obtain a copy of the License at 632a6e48fSopenharmony_ci * 732a6e48fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 832a6e48fSopenharmony_ci * 932a6e48fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1032a6e48fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1132a6e48fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1232a6e48fSopenharmony_ci * See the License for the specific language governing permissions and 1332a6e48fSopenharmony_ci * limitations under the License. 1432a6e48fSopenharmony_ci */ 1532a6e48fSopenharmony_ci 1632a6e48fSopenharmony_ci#include <gtest/gtest.h> 1732a6e48fSopenharmony_ci 1832a6e48fSopenharmony_ci#include "metadata_helper.h" 1932a6e48fSopenharmony_ci#include "surface_buffer_impl.h" 2032a6e48fSopenharmony_ci 2132a6e48fSopenharmony_ciusing namespace testing::ext; 2232a6e48fSopenharmony_ciusing namespace OHOS::HDI::Display::Graphic::Common::V1_0; 2332a6e48fSopenharmony_ci 2432a6e48fSopenharmony_cinamespace OHOS { 2532a6e48fSopenharmony_ciclass MetadataManagerTest : public testing::Test { 2632a6e48fSopenharmony_cipublic: 2732a6e48fSopenharmony_ci static void SetUpTestCase(); 2832a6e48fSopenharmony_ci static void TearDownTestCase() {} 2932a6e48fSopenharmony_ci 3032a6e48fSopenharmony_ci static inline BufferRequestConfig requestConfig = { 3132a6e48fSopenharmony_ci .width = 0x100, 3232a6e48fSopenharmony_ci .height = 0x100, 3332a6e48fSopenharmony_ci .strideAlignment = 0x8, 3432a6e48fSopenharmony_ci .format = GRAPHIC_PIXEL_FMT_RGBA_8888, 3532a6e48fSopenharmony_ci .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA, 3632a6e48fSopenharmony_ci .timeout = 0, 3732a6e48fSopenharmony_ci .colorGamut = GraphicColorGamut::GRAPHIC_COLOR_GAMUT_SRGB, 3832a6e48fSopenharmony_ci }; 3932a6e48fSopenharmony_ci static inline sptr<SurfaceBuffer> buffer_ = nullptr; 4032a6e48fSopenharmony_ci static inline sptr<SurfaceBuffer> nullBuffer_ = nullptr; 4132a6e48fSopenharmony_ci}; 4232a6e48fSopenharmony_ci 4332a6e48fSopenharmony_civoid MetadataManagerTest::SetUpTestCase() 4432a6e48fSopenharmony_ci{ 4532a6e48fSopenharmony_ci buffer_ = new SurfaceBufferImpl(0); 4632a6e48fSopenharmony_ci auto ret = buffer_->Alloc(requestConfig); 4732a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 4832a6e48fSopenharmony_ci} 4932a6e48fSopenharmony_ci 5032a6e48fSopenharmony_ci/* 5132a6e48fSopenharmony_ci* Function: MetadataManagerTest 5232a6e48fSopenharmony_ci* Type: Function 5332a6e48fSopenharmony_ci* Rank: Important(2) 5432a6e48fSopenharmony_ci* EnvConditions: N/A 5532a6e48fSopenharmony_ci* CaseDescription: test ConvertMetadataToVec 5632a6e48fSopenharmony_ci*/ 5732a6e48fSopenharmony_ciHWTEST_F(MetadataManagerTest, ConvertMetadataToVecTest, Function | SmallTest | Level2) 5832a6e48fSopenharmony_ci{ 5932a6e48fSopenharmony_ci uint32_t metadata = 0; 6032a6e48fSopenharmony_ci std::vector<uint8_t> vec; 6132a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::ConvertMetadataToVec(metadata, vec), GSERROR_OK); 6232a6e48fSopenharmony_ci 6332a6e48fSopenharmony_ci ASSERT_EQ(vec.size(), 4); 6432a6e48fSopenharmony_ci for (uint32_t i = 0; i < vec.size(); ++i) { 6532a6e48fSopenharmony_ci ASSERT_EQ(vec[i], 0); 6632a6e48fSopenharmony_ci } 6732a6e48fSopenharmony_ci} 6832a6e48fSopenharmony_ci 6932a6e48fSopenharmony_ci/* 7032a6e48fSopenharmony_ci* Function: MetadataManagerTest 7132a6e48fSopenharmony_ci* Type: Function 7232a6e48fSopenharmony_ci* Rank: Important(2) 7332a6e48fSopenharmony_ci* EnvConditions: N/A 7432a6e48fSopenharmony_ci* CaseDescription: test ConvertVecToMetadata 7532a6e48fSopenharmony_ci*/ 7632a6e48fSopenharmony_ciHWTEST_F(MetadataManagerTest, ConvertVecToMetadataTest, Function | SmallTest | Level2) 7732a6e48fSopenharmony_ci{ 7832a6e48fSopenharmony_ci std::vector<uint8_t> vec; 7932a6e48fSopenharmony_ci uint32_t metadata = 1; 8032a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::ConvertVecToMetadata(vec, metadata), GSERROR_NOT_SUPPORT); 8132a6e48fSopenharmony_ci 8232a6e48fSopenharmony_ci vec.assign(4, 0); 8332a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::ConvertVecToMetadata(vec, metadata), GSERROR_OK); 8432a6e48fSopenharmony_ci ASSERT_EQ(metadata, 0); 8532a6e48fSopenharmony_ci} 8632a6e48fSopenharmony_ci 8732a6e48fSopenharmony_ci/* 8832a6e48fSopenharmony_ci* Function: MetadataManagerTest 8932a6e48fSopenharmony_ci* Type: Function 9032a6e48fSopenharmony_ci* Rank: Important(2) 9132a6e48fSopenharmony_ci* EnvConditions: N/A 9232a6e48fSopenharmony_ci* CaseDescription: test ConvertColorSpaceTypeToInfo 9332a6e48fSopenharmony_ci*/ 9432a6e48fSopenharmony_ciHWTEST_F(MetadataManagerTest, ConvertColorSpaceTypeToInfoTest, Function | SmallTest | Level2) 9532a6e48fSopenharmony_ci{ 9632a6e48fSopenharmony_ci CM_ColorSpaceInfo colorSpaceInfo; 9732a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::ConvertColorSpaceTypeToInfo(CM_SRGB_FULL, colorSpaceInfo), GSERROR_OK); 9832a6e48fSopenharmony_ci 9932a6e48fSopenharmony_ci ASSERT_EQ(colorSpaceInfo.primaries, COLORPRIMARIES_SRGB); 10032a6e48fSopenharmony_ci ASSERT_EQ(colorSpaceInfo.transfunc, TRANSFUNC_SRGB); 10132a6e48fSopenharmony_ci ASSERT_EQ(colorSpaceInfo.matrix, MATRIX_BT601_N); 10232a6e48fSopenharmony_ci ASSERT_EQ(colorSpaceInfo.range, RANGE_FULL); 10332a6e48fSopenharmony_ci} 10432a6e48fSopenharmony_ci 10532a6e48fSopenharmony_ci/* 10632a6e48fSopenharmony_ci* Function: MetadataManagerTest 10732a6e48fSopenharmony_ci* Type: Function 10832a6e48fSopenharmony_ci* Rank: Important(2) 10932a6e48fSopenharmony_ci* EnvConditions: N/A 11032a6e48fSopenharmony_ci* CaseDescription: test ConvertColorSpaceInfoToType 11132a6e48fSopenharmony_ci*/ 11232a6e48fSopenharmony_ciHWTEST_F(MetadataManagerTest, ConvertColorSpaceInfoToTypeTest, Function | SmallTest | Level2) 11332a6e48fSopenharmony_ci{ 11432a6e48fSopenharmony_ci CM_ColorSpaceInfo colorSpaceInfo = { 11532a6e48fSopenharmony_ci .primaries = COLORPRIMARIES_SRGB, 11632a6e48fSopenharmony_ci .transfunc = TRANSFUNC_SRGB, 11732a6e48fSopenharmony_ci .matrix = MATRIX_BT601_N, 11832a6e48fSopenharmony_ci .range = RANGE_FULL, 11932a6e48fSopenharmony_ci }; 12032a6e48fSopenharmony_ci CM_ColorSpaceType colorSpaceType; 12132a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::ConvertColorSpaceInfoToType(colorSpaceInfo, colorSpaceType), GSERROR_OK); 12232a6e48fSopenharmony_ci 12332a6e48fSopenharmony_ci ASSERT_EQ(colorSpaceType, CM_SRGB_FULL); 12432a6e48fSopenharmony_ci} 12532a6e48fSopenharmony_ci 12632a6e48fSopenharmony_ci/* 12732a6e48fSopenharmony_ci* Function: MetadataManagerTest 12832a6e48fSopenharmony_ci* Type: Function 12932a6e48fSopenharmony_ci* Rank: Important(2) 13032a6e48fSopenharmony_ci* EnvConditions: N/A 13132a6e48fSopenharmony_ci* CaseDescription: test SetColorSpaceInfo and GetColorSpaceInfo 13232a6e48fSopenharmony_ci*/ 13332a6e48fSopenharmony_ciHWTEST_F(MetadataManagerTest, ColorSpaceInfoTest, Function | SmallTest | Level2) 13432a6e48fSopenharmony_ci{ 13532a6e48fSopenharmony_ci CM_ColorSpaceInfo infoSet = { 13632a6e48fSopenharmony_ci .primaries = COLORPRIMARIES_SRGB, 13732a6e48fSopenharmony_ci .transfunc = TRANSFUNC_SRGB, 13832a6e48fSopenharmony_ci .matrix = MATRIX_BT709, 13932a6e48fSopenharmony_ci .range = RANGE_FULL, 14032a6e48fSopenharmony_ci }; 14132a6e48fSopenharmony_ci 14232a6e48fSopenharmony_ci auto retSet = MetadataHelper::SetColorSpaceInfo(buffer_, infoSet); 14332a6e48fSopenharmony_ci ASSERT_TRUE(retSet == GSERROR_OK || retSet == GSERROR_HDI_ERROR); 14432a6e48fSopenharmony_ci 14532a6e48fSopenharmony_ci CM_ColorSpaceInfo infoGet; 14632a6e48fSopenharmony_ci auto retGet = MetadataHelper::GetColorSpaceInfo(buffer_, infoGet); 14732a6e48fSopenharmony_ci ASSERT_TRUE(retGet == GSERROR_OK || retSet == GSERROR_HDI_ERROR); 14832a6e48fSopenharmony_ci 14932a6e48fSopenharmony_ci if (retSet == GSERROR_OK && retGet == GSERROR_OK) { 15032a6e48fSopenharmony_ci ASSERT_EQ(infoSet.primaries, infoGet.primaries); 15132a6e48fSopenharmony_ci ASSERT_EQ(infoSet.transfunc, infoGet.transfunc); 15232a6e48fSopenharmony_ci ASSERT_EQ(infoSet.matrix, infoGet.matrix); 15332a6e48fSopenharmony_ci ASSERT_EQ(infoSet.range, infoGet.range); 15432a6e48fSopenharmony_ci } 15532a6e48fSopenharmony_ci 15632a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::SetColorSpaceInfo(nullBuffer_, infoSet), GSERROR_NO_BUFFER); 15732a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::GetColorSpaceInfo(nullBuffer_, infoGet), GSERROR_NO_BUFFER); 15832a6e48fSopenharmony_ci} 15932a6e48fSopenharmony_ci 16032a6e48fSopenharmony_ci/* 16132a6e48fSopenharmony_ci* Function: MetadataManagerTest 16232a6e48fSopenharmony_ci* Type: Function 16332a6e48fSopenharmony_ci* Rank: Important(2) 16432a6e48fSopenharmony_ci* EnvConditions: N/A 16532a6e48fSopenharmony_ci* CaseDescription: test SetColorSpaceType and GetColorSpaceType 16632a6e48fSopenharmony_ci*/ 16732a6e48fSopenharmony_ciHWTEST_F(MetadataManagerTest, ColorSpaceTypeTest, Function | SmallTest | Level2) 16832a6e48fSopenharmony_ci{ 16932a6e48fSopenharmony_ci auto retSet = MetadataHelper::SetColorSpaceType(buffer_, CM_SRGB_FULL); 17032a6e48fSopenharmony_ci ASSERT_TRUE(retSet == GSERROR_OK || retSet == GSERROR_HDI_ERROR); 17132a6e48fSopenharmony_ci 17232a6e48fSopenharmony_ci CM_ColorSpaceType colorSpaceType; 17332a6e48fSopenharmony_ci auto retGet = MetadataHelper::GetColorSpaceType(buffer_, colorSpaceType); 17432a6e48fSopenharmony_ci ASSERT_TRUE(retGet == GSERROR_OK || retSet == GSERROR_HDI_ERROR); 17532a6e48fSopenharmony_ci 17632a6e48fSopenharmony_ci if (retSet == GSERROR_OK && retGet == GSERROR_OK) { 17732a6e48fSopenharmony_ci ASSERT_EQ(colorSpaceType, CM_SRGB_FULL); 17832a6e48fSopenharmony_ci } 17932a6e48fSopenharmony_ci 18032a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::SetColorSpaceType(nullBuffer_, CM_SRGB_FULL), GSERROR_NO_BUFFER); 18132a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::GetColorSpaceType(nullBuffer_, colorSpaceType), GSERROR_NO_BUFFER); 18232a6e48fSopenharmony_ci} 18332a6e48fSopenharmony_ci 18432a6e48fSopenharmony_ci/* 18532a6e48fSopenharmony_ci* Function: MetadataManagerTest 18632a6e48fSopenharmony_ci* Type: Function 18732a6e48fSopenharmony_ci* Rank: Important(2) 18832a6e48fSopenharmony_ci* EnvConditions: N/A 18932a6e48fSopenharmony_ci* CaseDescription: test SetHDRMetadataType and GetHDRMetadataType 19032a6e48fSopenharmony_ci*/ 19132a6e48fSopenharmony_ciHWTEST_F(MetadataManagerTest, HDRMetadataTypeTest, Function | SmallTest | Level2) 19232a6e48fSopenharmony_ci{ 19332a6e48fSopenharmony_ci auto retSet = MetadataHelper::SetHDRMetadataType(buffer_, CM_VIDEO_HDR_VIVID); 19432a6e48fSopenharmony_ci ASSERT_TRUE(retSet == GSERROR_OK || retSet == GSERROR_HDI_ERROR); 19532a6e48fSopenharmony_ci 19632a6e48fSopenharmony_ci CM_HDR_Metadata_Type hdrMetadataType; 19732a6e48fSopenharmony_ci auto retGet = MetadataHelper::GetHDRMetadataType(buffer_, hdrMetadataType); 19832a6e48fSopenharmony_ci ASSERT_TRUE(retGet == GSERROR_OK || retSet == GSERROR_HDI_ERROR); 19932a6e48fSopenharmony_ci 20032a6e48fSopenharmony_ci if (retSet == GSERROR_OK && retGet == GSERROR_OK) { 20132a6e48fSopenharmony_ci ASSERT_EQ(hdrMetadataType, CM_VIDEO_HDR_VIVID); 20232a6e48fSopenharmony_ci } 20332a6e48fSopenharmony_ci 20432a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::SetHDRMetadataType(nullBuffer_, CM_VIDEO_HDR_VIVID), GSERROR_NO_BUFFER); 20532a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::GetHDRMetadataType(nullBuffer_, hdrMetadataType), GSERROR_NO_BUFFER); 20632a6e48fSopenharmony_ci} 20732a6e48fSopenharmony_ci 20832a6e48fSopenharmony_ci/* 20932a6e48fSopenharmony_ci* Function: MetadataManagerTest 21032a6e48fSopenharmony_ci* Type: Function 21132a6e48fSopenharmony_ci* Rank: Important(2) 21232a6e48fSopenharmony_ci* EnvConditions: N/A 21332a6e48fSopenharmony_ci* CaseDescription: test SetHDRStaticMetadata and GetHDRStaticMetadata 21432a6e48fSopenharmony_ci*/ 21532a6e48fSopenharmony_ciHWTEST_F(MetadataManagerTest, HDRStaticMetadataTest, Function | SmallTest | Level2) 21632a6e48fSopenharmony_ci{ 21732a6e48fSopenharmony_ci HdrStaticMetadata metadataSet = { 21832a6e48fSopenharmony_ci .smpte2086 = { 21932a6e48fSopenharmony_ci .displayPrimaryRed = {0.1f, 0.1f}, 22032a6e48fSopenharmony_ci .displayPrimaryGreen = {0.2f, 0.2f}, 22132a6e48fSopenharmony_ci .displayPrimaryBlue = {0.3f, 0.3f}, 22232a6e48fSopenharmony_ci .whitePoint = {0.4f, 0.4f}, 22332a6e48fSopenharmony_ci .maxLuminance = 1000.0f, 22432a6e48fSopenharmony_ci .minLuminance = 0.1f, 22532a6e48fSopenharmony_ci }, 22632a6e48fSopenharmony_ci .cta861 = { 22732a6e48fSopenharmony_ci .maxContentLightLevel = 500.0f, 22832a6e48fSopenharmony_ci .maxFrameAverageLightLevel = 300.0f, 22932a6e48fSopenharmony_ci }, 23032a6e48fSopenharmony_ci }; 23132a6e48fSopenharmony_ci 23232a6e48fSopenharmony_ci auto retSet = MetadataHelper::SetHDRStaticMetadata(buffer_, metadataSet); 23332a6e48fSopenharmony_ci ASSERT_TRUE(retSet == GSERROR_OK || retSet == GSERROR_HDI_ERROR); 23432a6e48fSopenharmony_ci 23532a6e48fSopenharmony_ci HdrStaticMetadata metadataGet; 23632a6e48fSopenharmony_ci auto retGet = MetadataHelper::GetHDRStaticMetadata(buffer_, metadataGet); 23732a6e48fSopenharmony_ci ASSERT_TRUE(retGet == GSERROR_OK || retSet == GSERROR_HDI_ERROR); 23832a6e48fSopenharmony_ci 23932a6e48fSopenharmony_ci if (retSet == GSERROR_OK && retGet == GSERROR_OK) { 24032a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.smpte2086.displayPrimaryRed.x, metadataGet.smpte2086.displayPrimaryRed.x); 24132a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.smpte2086.displayPrimaryRed.y, metadataGet.smpte2086.displayPrimaryRed.y); 24232a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.smpte2086.displayPrimaryGreen.x, metadataGet.smpte2086.displayPrimaryGreen.x); 24332a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.smpte2086.displayPrimaryGreen.y, metadataGet.smpte2086.displayPrimaryGreen.y); 24432a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.smpte2086.displayPrimaryBlue.x, metadataGet.smpte2086.displayPrimaryBlue.x); 24532a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.smpte2086.displayPrimaryBlue.y, metadataGet.smpte2086.displayPrimaryBlue.y); 24632a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.smpte2086.whitePoint.x, metadataGet.smpte2086.whitePoint.x); 24732a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.smpte2086.whitePoint.y, metadataGet.smpte2086.whitePoint.y); 24832a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.smpte2086.maxLuminance, metadataGet.smpte2086.maxLuminance); 24932a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.smpte2086.minLuminance, metadataGet.smpte2086.minLuminance); 25032a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.cta861.maxContentLightLevel, metadataGet.cta861.maxContentLightLevel); 25132a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.cta861.maxFrameAverageLightLevel, metadataGet.cta861.maxFrameAverageLightLevel); 25232a6e48fSopenharmony_ci } 25332a6e48fSopenharmony_ci 25432a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::SetHDRStaticMetadata(nullBuffer_, metadataSet), GSERROR_NO_BUFFER); 25532a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::GetHDRStaticMetadata(nullBuffer_, metadataGet), GSERROR_NO_BUFFER); 25632a6e48fSopenharmony_ci} 25732a6e48fSopenharmony_ci 25832a6e48fSopenharmony_ci/* 25932a6e48fSopenharmony_ci* Function: MetadataManagerTest 26032a6e48fSopenharmony_ci* Type: Function 26132a6e48fSopenharmony_ci* Rank: Important(2) 26232a6e48fSopenharmony_ci* EnvConditions: N/A 26332a6e48fSopenharmony_ci* CaseDescription: test SetHDRDynamicMetadata and GetHDRDynamicMetadata 26432a6e48fSopenharmony_ci*/ 26532a6e48fSopenharmony_ciHWTEST_F(MetadataManagerTest, HDRDynamicMetadataTest, Function | SmallTest | Level2) 26632a6e48fSopenharmony_ci{ 26732a6e48fSopenharmony_ci std::vector<uint8_t> metadataSet{1, 18, 119, 33, 196, 253, 112, 171, 74, 230, 99, 23, 0, 244, 82, 138, 13, 158, 100, 26832a6e48fSopenharmony_ci 41, 50, 189, 111, 144, 3, 153, 75, 210, 243, 237, 19, 12, 128}; 26932a6e48fSopenharmony_ci 27032a6e48fSopenharmony_ci auto retSet = MetadataHelper::SetHDRDynamicMetadata(buffer_, metadataSet); 27132a6e48fSopenharmony_ci ASSERT_TRUE(retSet == GSERROR_OK || retSet == GSERROR_HDI_ERROR); 27232a6e48fSopenharmony_ci 27332a6e48fSopenharmony_ci std::vector<uint8_t> metadataGet; 27432a6e48fSopenharmony_ci auto retGet = MetadataHelper::GetHDRDynamicMetadata(buffer_, metadataGet); 27532a6e48fSopenharmony_ci ASSERT_TRUE(retGet == GSERROR_OK || retSet == GSERROR_HDI_ERROR); 27632a6e48fSopenharmony_ci 27732a6e48fSopenharmony_ci if (retSet == GSERROR_OK && retGet == GSERROR_OK) { 27832a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.size(), metadataGet.size()); 27932a6e48fSopenharmony_ci for (uint32_t i = 0; i < metadataSet.size(); i++) { 28032a6e48fSopenharmony_ci ASSERT_EQ(metadataSet[i], metadataGet[i]); 28132a6e48fSopenharmony_ci } 28232a6e48fSopenharmony_ci } 28332a6e48fSopenharmony_ci 28432a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::SetHDRDynamicMetadata(nullBuffer_, metadataSet), GSERROR_NO_BUFFER); 28532a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::GetHDRDynamicMetadata(nullBuffer_, metadataGet), GSERROR_NO_BUFFER); 28632a6e48fSopenharmony_ci} 28732a6e48fSopenharmony_ci 28832a6e48fSopenharmony_ci/* 28932a6e48fSopenharmony_ci* Function: MetadataManagerTest 29032a6e48fSopenharmony_ci* Type: Function 29132a6e48fSopenharmony_ci* Rank: Important(2) 29232a6e48fSopenharmony_ci* EnvConditions: N/A 29332a6e48fSopenharmony_ci* CaseDescription: test SetHDRStaticMetadata and GetHDRStaticMetadata 29432a6e48fSopenharmony_ci*/ 29532a6e48fSopenharmony_ciHWTEST_F(MetadataManagerTest, HDRStaticMetadataVecTest, Function | SmallTest | Level2) 29632a6e48fSopenharmony_ci{ 29732a6e48fSopenharmony_ci HdrStaticMetadata metadata = { 29832a6e48fSopenharmony_ci .smpte2086 = { 29932a6e48fSopenharmony_ci .displayPrimaryRed = {0.1f, 0.1f}, 30032a6e48fSopenharmony_ci .displayPrimaryGreen = {0.2f, 0.2f}, 30132a6e48fSopenharmony_ci .displayPrimaryBlue = {0.3f, 0.3f}, 30232a6e48fSopenharmony_ci .whitePoint = {0.4f, 0.4f}, 30332a6e48fSopenharmony_ci .maxLuminance = 1000.0f, 30432a6e48fSopenharmony_ci .minLuminance = 0.1f, 30532a6e48fSopenharmony_ci }, 30632a6e48fSopenharmony_ci .cta861 = { 30732a6e48fSopenharmony_ci .maxContentLightLevel = 500.0f, 30832a6e48fSopenharmony_ci .maxFrameAverageLightLevel = 300.0f, 30932a6e48fSopenharmony_ci }, 31032a6e48fSopenharmony_ci }; 31132a6e48fSopenharmony_ci 31232a6e48fSopenharmony_ci std::vector<uint8_t> metadataSet; 31332a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::ConvertMetadataToVec(metadata, metadataSet), GSERROR_OK); 31432a6e48fSopenharmony_ci 31532a6e48fSopenharmony_ci auto retSet = MetadataHelper::SetHDRStaticMetadata(buffer_, metadataSet); 31632a6e48fSopenharmony_ci ASSERT_TRUE(retSet == GSERROR_OK || retSet == GSERROR_HDI_ERROR); 31732a6e48fSopenharmony_ci 31832a6e48fSopenharmony_ci std::vector<uint8_t> metadataGet; 31932a6e48fSopenharmony_ci auto retGet = MetadataHelper::GetHDRStaticMetadata(buffer_, metadataGet); 32032a6e48fSopenharmony_ci ASSERT_TRUE(retGet == GSERROR_OK || retSet == GSERROR_HDI_ERROR); 32132a6e48fSopenharmony_ci 32232a6e48fSopenharmony_ci if (retSet == GSERROR_OK && retGet == GSERROR_OK) { 32332a6e48fSopenharmony_ci ASSERT_EQ(metadataSet.size(), metadataGet.size()); 32432a6e48fSopenharmony_ci for (uint32_t i = 0; i < metadataSet.size(); i++) { 32532a6e48fSopenharmony_ci ASSERT_EQ(metadataSet[i], metadataGet[i]); 32632a6e48fSopenharmony_ci } 32732a6e48fSopenharmony_ci } 32832a6e48fSopenharmony_ci 32932a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::SetHDRStaticMetadata(nullBuffer_, metadataSet), GSERROR_NO_BUFFER); 33032a6e48fSopenharmony_ci ASSERT_EQ(MetadataHelper::GetHDRStaticMetadata(nullBuffer_, metadataGet), GSERROR_NO_BUFFER); 33132a6e48fSopenharmony_ci} 33232a6e48fSopenharmony_ci}