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}