1 /*
2 * Copyright (C) 2025 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 "media_errors.h"
17 #include "avmetadatahelper_impl_unittest.h"
18
19 using namespace std;
20 using namespace testing;
21 using namespace testing::ext;
22 using namespace OHOS::HDI::Display::Graphic::Common::V1_0;
23
24 const static int32_t WIDTH = 100;
25 const static int32_t HEIGHT = 100;
26 const static size_t SIZE = WIDTH * HEIGHT * 2;
27 const static int32_t INVALID_SCALE_MODE = -1;
28
29 namespace OHOS {
30 namespace Media {
SetUpTestCase(void)31 void AVMetadataHelperImplUnitTest::SetUpTestCase(void)
32 {
33 }
34
TearDownTestCase(void)35 void AVMetadataHelperImplUnitTest::TearDownTestCase(void)
36 {
37 }
38
SetUp(void)39 void AVMetadataHelperImplUnitTest::SetUp(void)
40 {
41 metadataHelperImpl_ = std::make_shared<AVMetadataHelperImpl>();
42 }
43
TearDown(void)44 void AVMetadataHelperImplUnitTest::TearDown(void)
45 {
46 metadataHelperImpl_ = nullptr;
47 }
48
49 /**
50 * @tc.name : Test DumpPixelMap
51 * @tc.number: DumpPixelMap_001
52 * @tc.desc : Test DumpPixelMap surfaceBuffer == nullptr
53 */
54 HWTEST_F(AVMetadataHelperImplUnitTest, DumpPixelMap_001, TestSize.Level1)
55 {
56 std::shared_ptr<MockPixelMap> pixelMap = std::make_shared<MockPixelMap>();
57 EXPECT_CALL(*pixelMap, GetWidth()).WillOnce(Return(WIDTH));
58 EXPECT_CALL(*pixelMap, GetHeight()).WillOnce(Return(HEIGHT));
59 EXPECT_CALL(*pixelMap, GetPixelFormat()).WillOnce(Return(PixelFormat::RGB_565));
60 EXPECT_CALL(*pixelMap, GetAllocatorType()).WillOnce(Return(AllocatorType::DMA_ALLOC));
61 EXPECT_CALL(*pixelMap, GetFd()).WillOnce(Return(nullptr));
62
63 int32_t ret = metadataHelperImpl_->DumpPixelMap(true, pixelMap, ".dump");
64 EXPECT_EQ(ret, MSERR_INVALID_VAL);
65 }
66
67 /**
68 * @tc.name : Test DumpAVBuffer
69 * @tc.number: DumpAVBuffer_001
70 * @tc.desc : Test DumpAVBuffer surfaceBuffer == nullptr
71 */
72 HWTEST_F(AVMetadataHelperImplUnitTest, DumpAVBuffer_001, TestSize.Level1)
73 {
74 std::shared_ptr<AVBuffer> frameBuffer = std::make_shared<AVBuffer>();
75 frameBuffer->meta_ = std::make_shared<Meta>();
76 auto mockAVMemory = std::make_shared<MockAVMemory>();
77 frameBuffer->memory_ = mockAVMemory;
78 EXPECT_CALL(*(mockAVMemory), GetSurfaceBuffer()).WillOnce(Return(nullptr));
79 EXPECT_CALL(*(mockAVMemory), GetAddr()).WillOnce(Return(nullptr));
80 EXPECT_CALL(*(mockAVMemory), GetSize()).WillOnce(Return(SIZE));
81
82 int32_t ret = metadataHelperImpl_->DumpAVBuffer(true, frameBuffer, ".dump");
83 EXPECT_EQ(ret, MSERR_INVALID_VAL);
84 }
85
86 /**
87 * @tc.name : Test DumpAVBuffer
88 * @tc.number: DumpAVBuffer_002
89 * @tc.desc : Test DumpAVBuffer surfaceBuffer != nullptr
90 */
91 HWTEST_F(AVMetadataHelperImplUnitTest, DumpAVBuffer_002, TestSize.Level1)
92 {
93 std::shared_ptr<AVBuffer> frameBuffer = std::make_shared<AVBuffer>();
94 frameBuffer->meta_ = std::make_shared<Meta>();
95 auto mockAVMemory = std::make_shared<MockAVMemory>();
96 frameBuffer->memory_ = mockAVMemory;
97 auto mockSurfaceBuffer = new MockSurfaceBuffer();
98 sptr<SurfaceBuffer> surfaceBuffer(mockSurfaceBuffer);
99 EXPECT_CALL(*(mockAVMemory), GetSurfaceBuffer()).WillOnce(Return(surfaceBuffer));
100 EXPECT_CALL(*(mockSurfaceBuffer), GetVirAddr()).WillOnce(Return(nullptr));
101 EXPECT_CALL(*(mockSurfaceBuffer), GetSize()).WillOnce(Return(SIZE));
102
103 int32_t ret = metadataHelperImpl_->DumpAVBuffer(true, frameBuffer, ".dump");
104 EXPECT_EQ(ret, MSERR_INVALID_VAL);
105 }
106
107 /**
108 * @tc.name : Test FormatColorSpaceInfo
109 * @tc.number: FormatColorSpaceInfo_001
110 * @tc.desc : Test FormatColorSpaceInfo colorSpaceInfo.primaries
111 * == CM_ColorSpacePrimaries::COLORPRIMARIES_P3_D65
112 */
113 HWTEST_F(AVMetadataHelperImplUnitTest, FormatColorSpaceInfo_001, TestSize.Level1)
114 {
115 // Test colorSpaceInfo.matrix == CM_Matrix::MATRIX_BT601_P
116 CM_ColorSpaceInfo colorSpaceInfo {
117 .primaries = CM_ColorPrimaries::COLORPRIMARIES_P3_D65,
118 .matrix = CM_Matrix::MATRIX_BT601_P
119 };
120 metadataHelperImpl_->FormatColorSpaceInfo(colorSpaceInfo);
121 EXPECT_EQ(colorSpaceInfo.matrix, CM_Matrix::MATRIX_P3);
122
123 // Test colorSpaceInfo.matrix != CM_Matrix::MATRIX_BT601_P
124 colorSpaceInfo.matrix = CM_Matrix::MATRIX_BT601_N;
125 metadataHelperImpl_->FormatColorSpaceInfo(colorSpaceInfo);
126 EXPECT_EQ(colorSpaceInfo.matrix, CM_Matrix::MATRIX_BT601_N);
127 }
128
129 /**
130 * @tc.name : Test FormatColorSpaceInfo
131 * @tc.number: FormatColorSpaceInfo_002
132 * @tc.desc : Test FormatColorSpaceInfo colorSpaceInfo.primaries
133 * == CM_ColorSpacePrimaries::COLORPRIMARIES_BT601_P
134 */
135 HWTEST_F(AVMetadataHelperImplUnitTest, FormatColorSpaceInfo_002, TestSize.Level1)
136 {
137 // Test colorSpaceInfo.matrix == CM_Matrix::MATRIX_BT601_N
138 CM_ColorSpaceInfo colorSpaceInfo {
139 .primaries = CM_ColorPrimaries::COLORPRIMARIES_BT601_P,
140 .matrix = CM_Matrix::MATRIX_BT601_N
141 };
142 metadataHelperImpl_->FormatColorSpaceInfo(colorSpaceInfo);
143 EXPECT_EQ(colorSpaceInfo.matrix, CM_Matrix::MATRIX_BT601_P);
144
145 // Test colorSpaceInfo.matrix == CM_Matrix::MATRIX_P3
146 colorSpaceInfo.matrix = CM_Matrix::MATRIX_P3;
147 metadataHelperImpl_->FormatColorSpaceInfo(colorSpaceInfo);
148 EXPECT_EQ(colorSpaceInfo.matrix, CM_Matrix::MATRIX_BT601_P);
149
150 // Test colorSpaceInfo.matrix != CM_Matrix::MATRIX_BT601_N
151 // && colorSpaceInfo.matrix != CM_Matrix::MATRIX_P3
152 colorSpaceInfo.matrix = CM_Matrix::MATRIX_BT709;
153 metadataHelperImpl_->FormatColorSpaceInfo(colorSpaceInfo);
154 EXPECT_EQ(colorSpaceInfo.matrix, CM_Matrix::MATRIX_BT709);
155 }
156
157 /**
158 * @tc.name : Test ScalePixelMapByMode
159 * @tc.number: ScalePixelMapByMode_001
160 * @tc.desc : Test ScalePixelMapByMode scaleMode = default
161 */
162 HWTEST_F(AVMetadataHelperImplUnitTest, ScalePixelMapByMode_001, TestSize.Level1)
163 {
164 std::shared_ptr<PixelMap> pixelMap = nullptr;
165 AVMetadataHelperImpl::PixelMapInfo pixelMapInfo;
166 PixelMapParams param;
167 int32_t scaleMode = INVALID_SCALE_MODE;
168 AVMetadataHelperImpl::ScalePixelMapByMode(pixelMap, pixelMapInfo, param, scaleMode);
169 EXPECT_EQ(pixelMap, nullptr);
170 }
171 } // namespace Media
172 } // namespace OHOS