1 /*
2 * Copyright (C) 2021 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 "pixelmap_native.h"
18 #include "pixelmap_native_impl.h"
19 #include "common_utils.h"
20 #include "image_source_native.h"
21 #include "securec.h"
22 #include "image_utils.h"
23 #include "native_color_space_manager.h"
24 #include "image_mime_type.h"
25
26 using namespace testing::ext;
27 using namespace OHOS::Media;
28
29 struct OH_Pixelmap_ImageInfo {
30 uint32_t width = 0;
31 uint32_t height = 0;
32 uint32_t rowStride = 0;
33 int32_t pixelFormat = PIXEL_FORMAT::PIXEL_FORMAT_UNKNOWN;
34 PIXELMAP_ALPHA_TYPE alphaType = PIXELMAP_ALPHA_TYPE::PIXELMAP_ALPHA_TYPE_UNKNOWN;
35 bool isHdr = false;
36 Image_MimeType mimeType;
37 };
38
39 namespace OHOS {
40 namespace Media {
41
42 constexpr int8_t ARGB_8888_BYTES = 4;
43
44 class PixelMapNdk2Test : public testing::Test {
45 public:
PixelMapNdk2Test()46 PixelMapNdk2Test() {}
~PixelMapNdk2Test()47 ~PixelMapNdk2Test() {}
48 };
49
50 const int32_t ZERO = 0;
51 const int32_t ONE = 1;
52 const int32_t TWO = 2;
53 const int32_t THREE = 3;
54 const float PRIMARIES = 0.1;
55 const int32_t VERSION_VALUE = 50;
56 constexpr int32_t bufferSize = 256;
57 static const std::string IMAGE_JPEG_PATH = "/data/local/tmp/image/test_jpeg_writeexifblob001.jpg";
58 static const std::string IMAGE_JPEG_PATH_TEST = "/data/local/tmp/image/test.jpg";
59 static const std::string IMAGE_JPEG_PATH_TEST_PICTURE = "/data/local/tmp/image/test_picture.jpg";
60
CompareImageInfo(OH_Pixelmap_ImageInfo * srcImageInfo,OH_Pixelmap_ImageInfo * dstImageInfo)61 static bool CompareImageInfo(OH_Pixelmap_ImageInfo* srcImageInfo, OH_Pixelmap_ImageInfo* dstImageInfo)
62 {
63 if (srcImageInfo == nullptr && dstImageInfo == nullptr) {
64 return true;
65 }
66
67 if ((srcImageInfo == nullptr) ^ (dstImageInfo == nullptr)) {
68 return false;
69 }
70
71 uint32_t srcWidth, srcHeight, srcRowStride = 0;
72 int32_t srcPixelFormat, srcAlphaType = 0;
73 bool srcIsHdr = false;
74 OH_PixelmapImageInfo_GetWidth(srcImageInfo, &srcWidth);
75 OH_PixelmapImageInfo_GetHeight(srcImageInfo, &srcHeight);
76 OH_PixelmapImageInfo_GetRowStride(srcImageInfo, &srcRowStride);
77 OH_PixelmapImageInfo_GetPixelFormat(srcImageInfo, &srcPixelFormat);
78 OH_PixelmapImageInfo_GetAlphaType(srcImageInfo, &srcAlphaType);
79 OH_PixelmapImageInfo_GetDynamicRange(srcImageInfo, &srcIsHdr);
80
81 uint32_t dstWidth, dstHeight, dstRowStride = 0;
82 int32_t dstPixelFormat, dstAlphaType = 0;
83 bool dstIsHdr = false;
84 OH_PixelmapImageInfo_GetWidth(dstImageInfo, &dstWidth);
85 OH_PixelmapImageInfo_GetHeight(dstImageInfo, &dstHeight);
86 OH_PixelmapImageInfo_GetRowStride(dstImageInfo, &dstRowStride);
87 OH_PixelmapImageInfo_GetPixelFormat(dstImageInfo, &dstPixelFormat);
88 OH_PixelmapImageInfo_GetAlphaType(dstImageInfo, &dstAlphaType);
89 OH_PixelmapImageInfo_GetDynamicRange(dstImageInfo, &dstIsHdr);
90
91 return srcWidth == dstWidth && srcHeight == dstHeight && srcRowStride == dstRowStride
92 && srcPixelFormat == dstPixelFormat && srcAlphaType == dstAlphaType && srcIsHdr == dstIsHdr;
93 }
94
CreatePixelmapNative(OH_PixelmapNative ** pixelmapNative)95 static void CreatePixelmapNative(OH_PixelmapNative** pixelmapNative)
96 {
97 std::string realPath;
98 if (!ImageUtils::PathToRealPath(IMAGE_JPEG_PATH_TEST_PICTURE.c_str(), realPath)) {
99 return;
100 }
101
102 char filePath[bufferSize];
103 if (strcpy_s(filePath, sizeof(filePath), realPath.c_str()) != EOK) {
104 return;
105 }
106
107 size_t length = realPath.size();
108 OH_ImageSourceNative *source = nullptr;
109 OH_ImageSourceNative_CreateFromUri(filePath, length, &source);
110
111 OH_DecodingOptions *opts = nullptr;
112 OH_DecodingOptions_Create(&opts);
113
114 OH_PixelmapNative *pixelmap = nullptr;
115 OH_ImageSourceNative_CreatePixelmap(source, opts, &pixelmap);
116 *pixelmapNative = pixelmap;
117 }
118
119 /**
120 * @tc.name: OH_PixelmapInitializationOptions_Create
121 * @tc.desc: OH_PixelmapInitializationOptions_Create
122 * @tc.type: FUNC
123 */
124 HWTEST_F(PixelMapNdk2Test, OH_PixelmapInitializationOptions_Create, TestSize.Level3)
125 {
126 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapInitializationOptions_Create start";
127 OH_Pixelmap_InitializationOptions *ops = nullptr;
128 Image_ErrorCode res = OH_PixelmapInitializationOptions_Create(&ops);
129 ASSERT_EQ(res, IMAGE_SUCCESS);
130 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapInitializationOptions_Create end";
131 }
132
133 /**
134 * @tc.name: OH_PixelmapInitializationOptions_SetGetWidth
135 * @tc.desc: OH_PixelmapInitializationOptions_SetGetWidth
136 * @tc.type: FUNC
137 */
138 HWTEST_F(PixelMapNdk2Test, OH_PixelmapInitializationOptions_SetGetWidth, TestSize.Level3)
139 {
140 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapInitializationOptions_GetWidth start";
141 OH_Pixelmap_InitializationOptions *ops = nullptr;
142 OH_PixelmapInitializationOptions_Create(&ops);
143 uint32_t width = 0;
144 OH_PixelmapInitializationOptions_SetWidth(ops, 1);
145 OH_PixelmapInitializationOptions_GetWidth(ops, &width);
146 ASSERT_EQ(width, 1);
147 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapInitializationOptions_GetWidth end";
148 }
149
150 /**
151 * @tc.name: OH_PixelmapInitializationOptions_SetGetHeight
152 * @tc.desc: OH_PixelmapInitializationOptions_SetGetHeight
153 * @tc.type: FUNC
154 */
155 HWTEST_F(PixelMapNdk2Test, OH_PixelmapInitializationOptions_SetGetHeight, TestSize.Level3)
156 {
157 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapInitializationOptions_SetGetHeight start";
158 OH_Pixelmap_InitializationOptions *ops = nullptr;
159 OH_PixelmapInitializationOptions_Create(&ops);
160 uint32_t height = 0;
161 OH_PixelmapInitializationOptions_SetHeight(ops, 1);
162 OH_PixelmapInitializationOptions_GetHeight(ops, &height);
163 ASSERT_EQ(height, 1);
164 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapInitializationOptions_SetGetHeight end";
165 }
166
167 /**
168 * @tc.name: OH_PixelmapInitializationOptions_SetGetPixelFormat
169 * @tc.desc: OH_PixelmapInitializationOptions_SetGetPixelFormat
170 * @tc.type: FUNC
171 */
172 HWTEST_F(PixelMapNdk2Test, OH_PixelmapInitializationOptions_SetGetPixelFormat, TestSize.Level3)
173 {
174 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_InitializationSetOptionsGetPixelFormat start";
175 OH_Pixelmap_InitializationOptions *ops = nullptr;
176 OH_PixelmapInitializationOptions_Create(&ops);
177 int32_t pixelFormat = 0;
178 OH_PixelmapInitializationOptions_SetPixelFormat(ops, 1);
179 OH_PixelmapInitializationOptions_GetPixelFormat(ops, &pixelFormat);
180 ASSERT_EQ(pixelFormat, 1);
181 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_InitializationSetOptionsGetPixelFormat end";
182 }
183
184 HWTEST_F(PixelMapNdk2Test, OH_PixelmapInitializationOptions_SetGetAlphaType, TestSize.Level3)
185 {
186 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapInitializationOptions_SetGetAlphaType start";
187 OH_Pixelmap_InitializationOptions *ops = nullptr;
188 OH_PixelmapInitializationOptions_Create(&ops);
189 int32_t alphaType = 0;
190 OH_PixelmapInitializationOptions_SetAlphaType(ops, 1);
191 OH_PixelmapInitializationOptions_GetAlphaType(ops, &alphaType);
192 ASSERT_EQ(alphaType, 1);
193 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapInitializationOptions_SetGetAlphaType end";
194 }
195
196 /**
197 * @tc.name: OH_PixelmapInitializationOptions_SetEditable
198 * @tc.desc: OH_PixelmapInitializationOptions_SetEditable
199 * @tc.type: FUNC
200 */
201 HWTEST_F(PixelMapNdk2Test, OH_PixelmapInitializationOptions_SetEditable, TestSize.Level3)
202 {
203 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapInitializationOptions_SetEditable start";
204 OH_Pixelmap_InitializationOptions *ops = nullptr;
205 OH_PixelmapInitializationOptions_Create(&ops);
206 bool editable = false;
207 OH_PixelmapInitializationOptions_GetEditable(ops, &editable);
208 ASSERT_EQ(editable, true);
209 OH_PixelmapInitializationOptions_SetEditable(ops, false);
210 OH_PixelmapInitializationOptions_GetEditable(ops, &editable);
211 ASSERT_EQ(editable, false);
212 ASSERT_EQ(OH_PixelmapInitializationOptions_SetEditable(nullptr, true), 401);
213 ASSERT_EQ(OH_PixelmapInitializationOptions_SetEditable(nullptr, false), 401);
214 ASSERT_EQ(OH_PixelmapInitializationOptions_GetEditable(nullptr, &editable), 401);
215 ASSERT_EQ(OH_PixelmapInitializationOptions_GetEditable(nullptr, &editable), 401);
216 OH_PixelmapInitializationOptions_Release(ops);
217 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapInitializationOptions_SetEditable end";
218 }
219
220 /**
221 * @tc.name: OH_PixelmapNative_Destroy
222 * @tc.desc: Test OH_PixelmapNative_Destroy with valid inputs
223 * @tc.type: FUNC
224 */
225 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_Destroy, TestSize.Level3)
226 {
227 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Destroy start";
228
229 size_t dataSize = ARGB_8888_BYTES;
230 uint8_t data[] = {0x01, 0x02, 0x03, 0xFF};
231 OH_Pixelmap_InitializationOptions *createOpts;
232 OH_PixelmapInitializationOptions_Create(&createOpts);
233 OH_PixelmapInitializationOptions_SetWidth(createOpts, 1);
234 OH_PixelmapInitializationOptions_SetHeight(createOpts, 1);
235 OH_PixelmapInitializationOptions_SetPixelFormat(createOpts, PIXEL_FORMAT_BGRA_8888);
236 OH_PixelmapNative *pixelMap = nullptr;
237 Image_ErrorCode errCode = OH_PixelmapNative_CreatePixelmap(data, dataSize, createOpts, &pixelMap);
238 ASSERT_EQ(errCode, IMAGE_SUCCESS);
239
240 OH_PixelmapNative_Destroy(&pixelMap);
241 ASSERT_EQ(pixelMap, nullptr);
242 ASSERT_EQ(OH_PixelmapNative_Destroy(nullptr), 401);
243 OH_PixelmapInitializationOptions_Release(createOpts);
244 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Destroy end";
245 }
246
247
248 /**
249 * @tc.name: OH_PixelmapInitializationOptions_Release
250 * @tc.desc: OH_PixelmapInitializationOptions_Release
251 * @tc.type: FUNC
252 */
253 HWTEST_F(PixelMapNdk2Test, OH_PixelmapInitializationOptions_Release, TestSize.Level3)
254 {
255 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapInitializationOptions_Release start";
256 OH_Pixelmap_InitializationOptions *ops = nullptr;
257 Image_ErrorCode ret = OH_PixelmapInitializationOptions_Release(ops);
258 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
259 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapInitializationOptions_Release end";
260 }
261
262 /**
263 * @tc.name: OH_PixelmapImageInfo_Create
264 * @tc.desc: OH_PixelmapImageInfo_Create
265 * @tc.type: FUNC
266 */
267 HWTEST_F(PixelMapNdk2Test, OH_PixelmapImageInfo_Create, TestSize.Level3)
268 {
269 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_Create start";
270 OH_Pixelmap_ImageInfo *ImageInfo = nullptr;
271 Image_ErrorCode ret = OH_PixelmapImageInfo_Create(&ImageInfo);
272 ASSERT_EQ(ret, IMAGE_SUCCESS);
273 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_Create end";
274 }
275
276 /**
277 * @tc.name: OH_PixelmapImageInfo_GetWidth
278 * @tc.desc: OH_PixelmapImageInfo_GetWidth
279 * @tc.type: FUNC
280 */
281 HWTEST_F(PixelMapNdk2Test, OH_PixelmapImageInfo_GetWidth, TestSize.Level3)
282 {
283 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetWidth start";
284 OH_Pixelmap_ImageInfo *ImageInfo = nullptr;
285 uint32_t width = 0;
286 Image_ErrorCode ret = OH_PixelmapImageInfo_GetWidth(ImageInfo, &width);
287 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
288 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetWidth end";
289 }
290
291 /**
292 * @tc.name: OH_PixelmapImageInfo_GetHeight
293 * @tc.desc: OH_PixelmapImageInfo_GetHeight
294 * @tc.type: FUNC
295 */
296 HWTEST_F(PixelMapNdk2Test, OH_PixelmapImageInfo_GetHeight, TestSize.Level3)
297 {
298 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetHeight start";
299 OH_Pixelmap_ImageInfo *ImageInfo = nullptr;
300 uint32_t height = 0;
301 Image_ErrorCode ret = OH_PixelmapImageInfo_GetHeight(ImageInfo, &height);
302 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
303 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetHeight end";
304 }
305
306 /**
307 * @tc.name: OH_PixelmapImageInfo_GetRowStride
308 * @tc.desc: OH_PixelmapImageInfo_GetRowStride
309 * @tc.type: FUNC
310 */
311 HWTEST_F(PixelMapNdk2Test, OH_PixelmapImageInfo_GetRowStride, TestSize.Level3)
312 {
313 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetRowStride start";
314 OH_Pixelmap_ImageInfo *ImageInfo = nullptr;
315 uint32_t rowSize = 0;
316 Image_ErrorCode ret = OH_PixelmapImageInfo_GetRowStride(ImageInfo, &rowSize);
317 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
318 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetRowStride end";
319 }
320
321 /**
322 * @tc.name: OH_PixelmapImageInfo_GetPixelFormat
323 * @tc.desc: OH_PixelmapImageInfo_GetPixelFormat
324 * @tc.type: FUNC
325 */
326 HWTEST_F(PixelMapNdk2Test, OH_PixelmapImageInfo_GetPixelFormat, TestSize.Level3)
327 {
328 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetPixelFormat start";
329 OH_Pixelmap_ImageInfo *ImageInfo = nullptr;
330 int32_t pixelFormat = 0;
331 Image_ErrorCode ret = OH_PixelmapImageInfo_GetPixelFormat(ImageInfo, &pixelFormat);
332 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
333 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetPixelFormat end";
334 }
335
336 /**
337 * @tc.name: OH_PixelmapImageInfo_GetAlphaType
338 * @tc.desc: OH_PixelmapImageInfo_GetAlphaType
339 * @tc.type: FUNC
340 */
341 HWTEST_F(PixelMapNdk2Test, OH_PixelmapImageInfo_GetAlphaType, TestSize.Level3)
342 {
343 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetAlphaType start";
344 OH_Pixelmap_ImageInfo *ImageInfo = nullptr;
345 int32_t density = 0;
346 Image_ErrorCode ret = OH_PixelmapImageInfo_GetAlphaType(ImageInfo, &density);
347 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
348 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetAlphaType end";
349 }
350
351 /**
352 * @tc.name: OH_PixelmapImageInfo_Release
353 * @tc.desc: OH_PixelmapImageInfo_Release
354 * @tc.type: FUNC
355 */
356 HWTEST_F(PixelMapNdk2Test, OH_PixelmapImageInfo_Release, TestSize.Level3)
357 {
358 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_Release start";
359 OH_Pixelmap_ImageInfo *ImageInfo = nullptr;
360 Image_ErrorCode ret = OH_PixelmapImageInfo_Release(ImageInfo);
361 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
362 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_Release end";
363 }
364
365 /**
366 * @tc.name: OH_PixelmapNative_CreatePixelMap
367 * @tc.desc: OH_PixelmapNative_CreatePixelMap
368 * @tc.type: FUNC
369 */
370 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_CreatePixelMap, TestSize.Level3)
371 {
372 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_CreatePixelMap start";
373 uint8_t *colors = nullptr;
374 size_t colorLength = 0;
375 OH_Pixelmap_InitializationOptions *opts = nullptr;
376 OH_PixelmapNative *pixelMap = nullptr;
377 Image_ErrorCode ret = OH_PixelmapNative_CreatePixelmap(colors, colorLength, opts, &pixelMap);
378 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
379 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_CreatePixelMap end";
380 }
381
382 /**
383 * @tc.name: OH_PixelmapNative_ConvertPixelmapNativeToNapi
384 * @tc.desc: test OH_PixelmapNative_ConvertPixelmapNativeToNapi
385 * @tc.type: FUNC
386 */
387 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_ConvertPixelmapNativeToNapi, TestSize.Level3)
388 {
389 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_ConvertPixelmapNativeToNapi start";
390 napi_env env = nullptr;
391 OH_PixelmapNative *pixelMap = nullptr;
392 napi_value res = nullptr;
393 Image_ErrorCode ret = OH_PixelmapNative_ConvertPixelmapNativeToNapi(env, pixelMap, &res);
394 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
395 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_ConvertPixelmapNativeToNapi end";
396 }
397
398 /**
399 * @tc.name: OH_PixelmapNative_ConvertPixelmapNativeFromNapi
400 * @tc.desc: test OH_PixelmapNative_ConvertPixelmapNativeFromNapi
401 * @tc.type: FUNC
402 */
403 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_ConvertPixelmapNativeFromNapi, TestSize.Level3)
404 {
405 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_ConvertPixelmapNativeFromNapi start";
406 napi_env env = nullptr;
407 napi_value source = nullptr;
408 OH_PixelmapNative *pixelMap = nullptr;
409 Image_ErrorCode ret = OH_PixelmapNative_ConvertPixelmapNativeFromNapi(env, source, &pixelMap);
410 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
411 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_ConvertPixelmapNativeFromNapi end";
412 }
413
414 /**
415 * @tc.name: OH_PixelmapNative_ReadPixels
416 * @tc.desc: OH_PixelmapNative_ReadPixels
417 * @tc.type: FUNC
418 */
419 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_ReadPixels, TestSize.Level3)
420 {
421 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_ReadPixels start";
422 OH_PixelmapNative *pixelMap = nullptr;
423 uint8_t *buffer = nullptr;
424 size_t *bufferSize = nullptr;
425 Image_ErrorCode ret = OH_PixelmapNative_ReadPixels(pixelMap, buffer, bufferSize);
426 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
427 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_ReadPixels end";
428 }
429
430 /**
431 * @tc.name: OH_PixelmapNative_WritePixels
432 * @tc.desc: OH_PixelmapNative_WritePixels
433 * @tc.type: FUNC
434 */
435 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_WritePixels, TestSize.Level3)
436 {
437 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_WritePixels start";
438 OH_PixelmapNative *pixelMap = nullptr;
439 uint8_t *source = nullptr;
440 size_t bufferSize = 0;
441 Image_ErrorCode ret = OH_PixelmapNative_WritePixels(pixelMap, source, bufferSize);
442 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
443 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_WritePixels end";
444 }
445
446 /**
447 * @tc.name: OH_PixelmapNative_GetArgbPixels_Test001
448 * @tc.desc: Test OH_PixelmapNative_GetArgbPixels with valid inputs
449 * @tc.type: FUNC
450 */
451 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_GetArgbPixels_Test001, TestSize.Level3)
452 {
453 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_GetArgbPixels_Test001 start";
454
455 size_t dataSize = ARGB_8888_BYTES;
456 uint8_t data[] = {0x01, 0x02, 0x03, 0xFF};
457 OH_Pixelmap_InitializationOptions *createOpts;
458 OH_PixelmapInitializationOptions_Create(&createOpts);
459 OH_PixelmapInitializationOptions_SetWidth(createOpts, 1);
460 OH_PixelmapInitializationOptions_SetHeight(createOpts, 1);
461 OH_PixelmapInitializationOptions_SetPixelFormat(createOpts, PIXEL_FORMAT_BGRA_8888);
462 OH_PixelmapNative *pixelMap = nullptr;
463 Image_ErrorCode errCode = OH_PixelmapNative_CreatePixelmap(data, dataSize, createOpts, &pixelMap);
464 ASSERT_EQ(errCode, IMAGE_SUCCESS);
465
466 uint8_t result[ARGB_8888_BYTES];
467 errCode = OH_PixelmapNative_GetArgbPixels(pixelMap, result, &dataSize);
468 ASSERT_EQ(errCode, IMAGE_SUCCESS);
469 ASSERT_EQ(result[0], data[3]);
470 ASSERT_EQ(result[1], data[2]);
471 ASSERT_EQ(result[2], data[1]);
472 ASSERT_EQ(result[3], data[0]);
473
474 OH_PixelmapNative_Release(pixelMap);
475 OH_PixelmapInitializationOptions_Release(createOpts);
476
477 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_GetArgbPixels_Test001 end";
478 }
479
480 /**
481 * @tc.name: OH_PixelmapNative_GetArgbPixels_Test002
482 * @tc.desc: Test OH_PixelmapNative_GetArgbPixels with invalid inputs
483 * @tc.type: FUNC
484 */
485 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_GetArgbPixels_Test002, TestSize.Level3)
486 {
487 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_GetArgbPixels_Test002 start";
488 OH_PixelmapNative *pixelMap = nullptr;
489 uint8_t *buffer = nullptr;
490 size_t *bufferSize = nullptr;
491 Image_ErrorCode errCode = OH_PixelmapNative_GetArgbPixels(pixelMap, buffer, bufferSize);
492 ASSERT_EQ(errCode, IMAGE_BAD_PARAMETER);
493 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_GetArgbPixels_Test002 end";
494 }
495
496 /**
497 * @tc.name: OH_PixelmapNative_GetImageInfo
498 * @tc.desc: OH_PixelmapNative_GetImageInfo
499 * @tc.type: FUNC
500 */
501 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_GetImageInfo, TestSize.Level3)
502 {
503 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_GetImageInfo start";
504 OH_PixelmapNative *pixelMap = nullptr;
505 OH_Pixelmap_ImageInfo *imageInfo = nullptr;
506 Image_ErrorCode ret = OH_PixelmapNative_GetImageInfo(pixelMap, imageInfo);
507 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
508 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_GetImageInfo end";
509 }
510
511 /**
512 * @tc.name: OH_PixelmapNative_Opacity
513 * @tc.desc: OH_PixelmapNative_Opacity
514 * @tc.type: FUNC
515 */
516 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_Opacity, TestSize.Level3)
517 {
518 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Opacity start";
519 OH_PixelmapNative *pixelMap = nullptr;
520 float rate = 0;
521 Image_ErrorCode ret = OH_PixelmapNative_Opacity(pixelMap, rate);
522 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
523 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Opacity end";
524 }
525
526 /**
527 * @tc.name: OH_PixelmapNative_Scale
528 * @tc.desc: OH_PixelmapNative_Scale
529 * @tc.type: FUNC
530 */
531 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_Scale, TestSize.Level3)
532 {
533 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Scale start";
534 OH_PixelmapNative *pixelMap = nullptr;
535 float x = 0;
536 float y = 0;
537 Image_ErrorCode ret = OH_PixelmapNative_Scale(pixelMap, x, y);
538 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
539 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Scale end";
540 }
541
542 /**
543 * @tc.name: OH_PixelmapNative_ScaleWithAntiAliasing
544 * @tc.desc: OH_PixelmapNative_ScaleWithAntiAliasing
545 * @tc.type: FUNC
546 */
547 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_ScaleWithAntiAliasing, TestSize.Level3)
548 {
549 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_ScaleWithAntiAliasing start";
550 OH_PixelmapNative *pixelMap = nullptr;
551 float x = 0;
552 float y = 0;
553 Image_ErrorCode ret = OH_PixelmapNative_ScaleWithAntiAliasing(pixelMap, x, y,
554 OH_PixelmapNative_AntiAliasingLevel::OH_PixelmapNative_AntiAliasing_NONE);
555 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
556 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_ScaleWithAntiAliasing end";
557 }
558
559 /**
560 * @tc.name: OH_PixelmapNative_Translate
561 * @tc.desc: OH_PixelmapNative_Translate
562 * @tc.type: FUNC
563 */
564 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_Translate, TestSize.Level3)
565 {
566 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Translate start";
567 OH_PixelmapNative *pixelMap = nullptr;
568 float x = 0;
569 float y = 0;
570 Image_ErrorCode ret = OH_PixelmapNative_Translate(pixelMap, x, y);
571 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
572 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Translate end";
573 }
574
575 /**
576 * @tc.name: OH_PixelmapNative_Rotate
577 * @tc.desc: OH_PixelmapNative_Rotate
578 * @tc.type: FUNC
579 */
580 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_Rotate, TestSize.Level3)
581 {
582 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Rotate start";
583 OH_PixelmapNative *pixelMap = nullptr;
584 float angle = 0;
585 Image_ErrorCode ret = OH_PixelmapNative_Rotate(pixelMap, angle);
586 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
587 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Rotate end";
588 }
589
590 /**
591 * @tc.name: OH_PixelmapNative_Flip
592 * @tc.desc: OH_PixelmapNative_Flip
593 * @tc.type: FUNC
594 */
595 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_Flip, TestSize.Level3)
596 {
597 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Flip start";
598 OH_PixelmapNative *pixelMap = nullptr;
599 bool horizontal = 0;
600 bool vertical = 0;
601 Image_ErrorCode ret = OH_PixelmapNative_Flip(pixelMap, horizontal, vertical);
602 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
603 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Flip end";
604 }
605
606 /**
607 * @tc.name: OH_PixelmapNative_Crop
608 * @tc.desc: OH_PixelmapNative_Crop
609 * @tc.type: FUNC
610 */
611 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_Crop, TestSize.Level3)
612 {
613 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Crop start";
614 OH_PixelmapNative *pixelMap = nullptr;
615 Image_Region *region = nullptr;
616 Image_ErrorCode ret = OH_PixelmapNative_Crop(pixelMap, region);
617 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
618 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Crop end";
619 }
620
621 /**
622 * @tc.name: OH_PixelmapNative_Release
623 * @tc.desc: OH_PixelmapNative_Release
624 * @tc.type: FUNC
625 */
626 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_Release, TestSize.Level3)
627 {
628 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Release start";
629 OH_PixelmapNative *pixelMap = nullptr;
630 Image_ErrorCode ret = OH_PixelmapNative_Release(pixelMap);
631 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
632 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_Release end";
633 }
634
635 /**
636 * @tc.name: OH_PixelmapImageInfo_GetMimeType001
637 * @tc.desc: test OH_PixelmapImageInfo_GetMimeType
638 * @tc.type: FUNC
639 */
640 HWTEST_F(PixelMapNdk2Test, OH_PixelmapImageInfo_GetMimeType001, TestSize.Level3)
641 {
642 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetMimeType001 start";
643 OH_Pixelmap_ImageInfo *info1 = nullptr;
644 Image_ErrorCode ret = OH_PixelmapImageInfo_Create(&info1);
645 ASSERT_EQ(ret, IMAGE_SUCCESS);
646 ASSERT_NE(info1, nullptr);
647 OH_Pixelmap_ImageInfo *info2 = nullptr;
648
649 Image_MimeType mimeType1;
650 Image_MimeType *mimeType2 = nullptr;
651 ret = OH_PixelmapImageInfo_GetMimeType(info1, &mimeType1);
652 EXPECT_EQ(ret, IMAGE_UNKNOWN_MIME_TYPE);
653 ret = OH_PixelmapImageInfo_GetMimeType(info2, &mimeType1);
654 EXPECT_EQ(ret, IMAGE_BAD_PARAMETER);
655 ret = OH_PixelmapImageInfo_GetMimeType(info1, mimeType2);
656 EXPECT_EQ(ret, IMAGE_BAD_PARAMETER);
657 ret = OH_PixelmapImageInfo_GetMimeType(info2, mimeType2);
658 EXPECT_EQ(ret, IMAGE_BAD_PARAMETER);
659
660 ret = OH_PixelmapImageInfo_Release(info1);
661 EXPECT_EQ(ret, IMAGE_SUCCESS);
662 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetMimeType001 end";
663 }
664
665 /**
666 * @tc.name: OH_PixelmapImageInfo_GetMimeType002
667 * @tc.desc: test OH_PixelmapImageInfo_GetMimeType
668 * @tc.type: FUNC
669 */
670 HWTEST_F(PixelMapNdk2Test, OH_PixelmapImageInfo_GetMimeType002, TestSize.Level3)
671 {
672 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetMimeType002 start";
673 OH_Pixelmap_ImageInfo *info = nullptr;
674 Image_ErrorCode ret = OH_PixelmapImageInfo_Create(&info);
675 ASSERT_EQ(ret, IMAGE_SUCCESS);
676
677 Image_MimeType mimeType;
678 ret = OH_PixelmapImageInfo_GetMimeType(info, &mimeType);
679 EXPECT_EQ(ret, IMAGE_UNKNOWN_MIME_TYPE);
680
681 info->mimeType.size = TWO;
682 ret = OH_PixelmapImageInfo_GetMimeType(info, &mimeType);
683 EXPECT_EQ(ret, IMAGE_UNKNOWN_MIME_TYPE);
684
685 ret = OH_PixelmapImageInfo_Release(info);
686 EXPECT_EQ(ret, IMAGE_SUCCESS);
687 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetMimeType002 end";
688 }
689
690 /**
691 * @tc.name: OH_PixelmapImageInfo_GetMimeType003
692 * @tc.desc: test OH_PixelmapImageInfo_GetMimeType
693 * @tc.type: FUNC
694 */
695 HWTEST_F(PixelMapNdk2Test, OH_PixelmapImageInfo_GetMimeType003, TestSize.Level3)
696 {
697 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetMimeType003 start";
698 size_t length = IMAGE_JPEG_PATH_TEST.size();
699 char filePath[length + 1];
700 strcpy_s(filePath, sizeof(filePath), IMAGE_JPEG_PATH_TEST.c_str());
701
702 OH_ImageSourceNative *source = nullptr;
703 Image_ErrorCode ret = OH_ImageSourceNative_CreateFromUri(filePath, length, &source);
704 EXPECT_EQ(ret, IMAGE_SUCCESS);
705 ASSERT_NE(source, nullptr);
706
707 OH_DecodingOptions *opts = nullptr;
708 OH_DecodingOptions_Create(&opts);
709 OH_PixelmapNative *pixelmap = nullptr;
710 ret = OH_ImageSourceNative_CreatePixelmap(source, opts, &pixelmap);
711 EXPECT_EQ(ret, IMAGE_SUCCESS);
712 ASSERT_NE(pixelmap, nullptr);
713
714 OH_Pixelmap_ImageInfo *imageInfo = nullptr;
715 OH_PixelmapImageInfo_Create(&imageInfo);
716 ret = OH_PixelmapNative_GetImageInfo(pixelmap, imageInfo);
717 EXPECT_EQ(ret, IMAGE_SUCCESS);
718 ASSERT_NE(imageInfo, nullptr);
719
720 Image_MimeType mimeType;
721 ret = OH_PixelmapImageInfo_GetMimeType(imageInfo, &mimeType);
722 EXPECT_EQ(ret, IMAGE_SUCCESS);
723 ASSERT_NE(mimeType.data, nullptr);
724 EXPECT_EQ(strcmp(mimeType.data, IMAGE_JPEG_FORMAT.c_str()), 0);
725
726 imageInfo->mimeType.size = 0;
727 ret = OH_PixelmapImageInfo_GetMimeType(imageInfo, &mimeType);
728 EXPECT_EQ(ret, IMAGE_UNKNOWN_MIME_TYPE);
729
730 OH_ImageSourceNative_Release(source);
731 OH_DecodingOptions_Release(opts);
732 OH_PixelmapNative_Release(pixelmap);
733 OH_PixelmapImageInfo_Release(imageInfo);
734 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapImageInfo_GetMimeType003 end";
735 }
736
737 /**
738 * @tc.name: OH_PixelmapInitializationOptions_SetGetSrcPixelFormat
739 * @tc.desc: OH_PixelmapInitializationOptions_SetGetSrcPixelFormat
740 * @tc.type: FUNC
741 */
742 HWTEST_F(PixelMapNdk2Test, OH_PixelmapInitializationOptions_SetGetSrcPixelFormat, TestSize.Level3)
743 {
744 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_InitializationSetOptionsGetSrcPixelFormat start";
745 OH_Pixelmap_InitializationOptions *ops = nullptr;
746 OH_PixelmapInitializationOptions_Create(&ops);
747 int32_t srcpixelFormat = 0;
748 OH_PixelmapInitializationOptions_SetSrcPixelFormat(ops, 1);
749 OH_PixelmapInitializationOptions_GetSrcPixelFormat(ops, &srcpixelFormat);
750 ASSERT_EQ(srcpixelFormat, 1);
751 Image_ErrorCode ret = OH_PixelmapInitializationOptions_Release(ops);
752 ASSERT_EQ(ret, IMAGE_SUCCESS);
753 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_InitializationSetOptionsGetSrcPixelFormat end";
754 }
755
756 /**
757 * @tc.name: OH_PixelmapNative_CreateEmptyPixelmap
758 * @tc.desc: OH_PixelmapNative_CreateEmptyPixelmap
759 * @tc.type: FUNC
760 */
761 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_CreateEmptyPixelmap, TestSize.Level3)
762 {
763 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_CreateEmptyPixelmap start";
764 OH_Pixelmap_InitializationOptions *options = nullptr;
765 OH_PixelmapNative **pixelmap = nullptr;
766 Image_ErrorCode ret = OH_PixelmapNative_CreateEmptyPixelmap(options, pixelmap);
767 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
768 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_CreateEmptyPixelmap end";
769 }
770
771 /**
772 * @tc.name: OH_PixelmapNative_ConvertAlphaFormat
773 * @tc.desc: OH_PixelmapNative_ConvertAlphaFormat
774 * @tc.type: FUNC
775 */
776 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_ConvertAlphaFormat, TestSize.Level3)
777 {
778 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_ConvertAlphaFormat start";
779 OH_PixelmapNative* srcpixelmap = nullptr;
780 OH_PixelmapNative* dstpixelmap = nullptr;
781 const bool isPremul = false;
782 Image_ErrorCode ret = OH_PixelmapNative_ConvertAlphaFormat(srcpixelmap, dstpixelmap, isPremul);
783 ASSERT_EQ(ret, IMAGE_BAD_PARAMETER);
784 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_ConvertAlphaFormat end";
785 }
786
CreateMetadataValue(OH_Pixelmap_HdrMetadataValue & value)787 static void CreateMetadataValue(OH_Pixelmap_HdrMetadataValue &value)
788 {
789 OH_Pixelmap_HdrMetadataType &type = value.type;
790 type = OH_Pixelmap_HdrMetadataType(THREE);
791 float base = PRIMARIES;
792 uint32_t version = VERSION_VALUE;
793
794 OH_Pixelmap_HdrStaticMetadata &staticMetadata = value.staticMetadata;
795 staticMetadata.displayPrimariesX[ZERO] = base++;
796 staticMetadata.displayPrimariesX[ONE] = base++;
797 staticMetadata.displayPrimariesX[TWO] = base++;
798 staticMetadata.displayPrimariesY[ZERO] = base++;
799 staticMetadata.displayPrimariesY[ONE] = base++;
800 staticMetadata.displayPrimariesY[TWO] = base++;
801 staticMetadata.whitePointX = base++;
802 staticMetadata.whitePointY = base++;
803 staticMetadata.maxLuminance = base++;
804 staticMetadata.minLuminance = base++;
805 staticMetadata.maxContentLightLevel = base++;
806 staticMetadata.maxFrameAverageLightLevel = base++;
807
808 OH_Pixelmap_HdrGainmapMetadata &gainmapMetadata = value.gainmapMetadata;
809 gainmapMetadata.writerVersion = version++;
810 gainmapMetadata.minVersion = version++;
811 gainmapMetadata.gainmapChannelNum = version++;
812 gainmapMetadata.useBaseColorFlag = true;
813 gainmapMetadata.baseHdrHeadroom = base++;
814 gainmapMetadata.alternateHdrHeadroom = base++;
815 gainmapMetadata.gainmapMax[ZERO] = base++;
816 gainmapMetadata.gainmapMax[ONE] = base++;
817 gainmapMetadata.gainmapMax[TWO] = base++;
818 gainmapMetadata.gainmapMax[ZERO] = base++;
819 gainmapMetadata.gainmapMax[ONE] = base++;
820 gainmapMetadata.gainmapMax[TWO] = base++;
821 gainmapMetadata.gamma[ZERO] = base++;
822 gainmapMetadata.gamma[ONE] = base++;
823 gainmapMetadata.gamma[TWO] = base++;
824 gainmapMetadata.baselineOffset[ZERO] = base++;
825 gainmapMetadata.baselineOffset[ONE] = base++;
826 gainmapMetadata.baselineOffset[TWO] = base++;
827 gainmapMetadata.alternateOffset[ZERO] = base++;
828 gainmapMetadata.alternateOffset[ONE] = base++;
829 gainmapMetadata.alternateOffset[TWO] = base++;
830 }
831
DumpMetadata(OH_Pixelmap_HdrMetadataValue value)832 static void DumpMetadata(OH_Pixelmap_HdrMetadataValue value)
833 {
834 GTEST_LOG_(INFO) << "DumpMetadata Dump IN";
835 OH_Pixelmap_HdrMetadataType &type = value.type;
836 GTEST_LOG_(INFO) << "DumpMetadata : " << type;
837 OH_Pixelmap_HdrStaticMetadata &staticMetadata = value.staticMetadata;
838 GTEST_LOG_(INFO) << "DumpMetadata : " << staticMetadata.displayPrimariesX[ZERO];
839 GTEST_LOG_(INFO) << "DumpMetadata : " << staticMetadata.displayPrimariesX[ONE];
840 GTEST_LOG_(INFO) << "DumpMetadata : " << staticMetadata.displayPrimariesX[TWO];
841 GTEST_LOG_(INFO) << "DumpMetadata : " << staticMetadata.displayPrimariesY[ZERO];
842 GTEST_LOG_(INFO) << "DumpMetadata : " << staticMetadata.displayPrimariesY[ONE];
843 GTEST_LOG_(INFO) << "DumpMetadata : " << staticMetadata.displayPrimariesY[TWO];
844 GTEST_LOG_(INFO) << "DumpMetadata : " << staticMetadata.whitePointX;
845 GTEST_LOG_(INFO) << "DumpMetadata : " << staticMetadata.whitePointY;
846 GTEST_LOG_(INFO) << "DumpMetadata : " << staticMetadata.maxLuminance;
847 GTEST_LOG_(INFO) << "DumpMetadata : " << staticMetadata.minLuminance;
848 GTEST_LOG_(INFO) << "DumpMetadata : " << staticMetadata.maxContentLightLevel;
849 GTEST_LOG_(INFO) << "DumpMetadata : " << staticMetadata.maxFrameAverageLightLevel;
850 OH_Pixelmap_HdrGainmapMetadata &gainmapMetadata = value.gainmapMetadata;
851 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.writerVersion;
852 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.minVersion;
853 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.gainmapChannelNum;
854 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.useBaseColorFlag;
855 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.baseHdrHeadroom;
856 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.alternateHdrHeadroom;
857 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.gainmapMax[ZERO];
858 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.gainmapMax[ONE];
859 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.gainmapMax[TWO];
860 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.gainmapMax[ZERO];
861 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.gainmapMax[ONE];
862 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.gainmapMax[TWO];
863 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.gamma[ZERO];
864 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.gamma[ONE];
865 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.gamma[TWO];
866 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.baselineOffset[ZERO];
867 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.baselineOffset[ONE];
868 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.baselineOffset[TWO];
869 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.alternateOffset[ZERO];
870 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.alternateOffset[ONE];
871 GTEST_LOG_(INFO) << "DumpMetadata : " << gainmapMetadata.alternateOffset[TWO];
872 GTEST_LOG_(INFO) << "DumpMetadata Dump OUT";
873 }
874
SetMetadata(OH_Pixelmap_HdrMetadataValue & value,OH_PixelmapNative * pixelmapNative)875 Image_ErrorCode SetMetadata(OH_Pixelmap_HdrMetadataValue &value, OH_PixelmapNative *pixelmapNative)
876 {
877 GTEST_LOG_(INFO) << "SetMetadata IN";
878 Image_ErrorCode errorCode = IMAGE_SUCCESS;
879 errorCode = OH_PixelmapNative_SetMetadata(pixelmapNative, OH_Pixelmap_HdrMetadataKey(ZERO), &value);
880 errorCode = OH_PixelmapNative_SetMetadata(pixelmapNative, OH_Pixelmap_HdrMetadataKey(ONE), &value);
881 errorCode = OH_PixelmapNative_SetMetadata(pixelmapNative, OH_Pixelmap_HdrMetadataKey(THREE), &value);
882 GTEST_LOG_(INFO) << "SetMetadata OUT";
883 return errorCode;
884 }
885
GetMetadata(OH_Pixelmap_HdrMetadataValue & value,OH_PixelmapNative * pixelmapNative)886 Image_ErrorCode GetMetadata(OH_Pixelmap_HdrMetadataValue &value,
887 OH_PixelmapNative *pixelmapNative)
888 {
889 GTEST_LOG_(INFO) << "SetMetadata IN";
890 Image_ErrorCode errorCode = IMAGE_SUCCESS;
891 OH_Pixelmap_HdrMetadataValue* vv = &value;
892 errorCode = OH_PixelmapNative_GetMetadata(pixelmapNative,
893 OH_Pixelmap_HdrMetadataKey(ZERO), &vv);
894 errorCode = OH_PixelmapNative_GetMetadata(pixelmapNative,
895 OH_Pixelmap_HdrMetadataKey(ONE), &vv);
896 errorCode = OH_PixelmapNative_GetMetadata(pixelmapNative,
897 OH_Pixelmap_HdrMetadataKey(THREE), &vv);
898 GTEST_LOG_(INFO) << "SetMetadata OUT";
899 return errorCode;
900 }
901
902 /**
903 * @tc.name: OH_PixelmapNative_SetMetadata
904 * @tc.desc: OH_PixelmapNative_SetMetadata
905 * @tc.type: FUNC
906 */
907 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_SetMetadata, TestSize.Level3)
908 {
909 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_SetMetadata start";
910 Image_ErrorCode errorCode = IMAGE_SUCCESS;
911 std::string realPath;
912 if (!ImageUtils::PathToRealPath(IMAGE_JPEG_PATH.c_str(), realPath)) {
913 if (!ImageUtils::PathToRealPath(IMAGE_JPEG_PATH_TEST.c_str(), realPath)) {
914 return;
915 }
916 }
917 char filePath[bufferSize];
918 if (strcpy_s(filePath, sizeof(filePath), realPath.c_str()) != EOK) {
919 return;
920 }
921 size_t length = realPath.size();
922 OH_ImageSourceNative *source = nullptr;
923 Image_ErrorCode ret = OH_ImageSourceNative_CreateFromUri(filePath, length, &source);
924 EXPECT_EQ(ret, IMAGE_SUCCESS);
925
926 OH_DecodingOptions *opts = nullptr;
927 OH_PixelmapNative *pixelmap = nullptr;
928 OH_DecodingOptions_Create(&opts);
929
930 ret = OH_ImageSourceNative_CreatePixelmap(source, opts, &pixelmap);
931 EXPECT_EQ(ret, IMAGE_SUCCESS);
932 OH_Pixelmap_HdrMetadataValue setValue;
933 CreateMetadataValue(setValue);
934 DumpMetadata(setValue);
935 errorCode = SetMetadata(setValue, pixelmap);
936 if (errorCode == IMAGE_DMA_NOT_EXIST) {
937 GTEST_LOG_(INFO) << "PixelMapNdk2Test pixelmap is not DMA";
938 return;
939 }
940 OH_Pixelmap_HdrMetadataValue getValue;
941 GetMetadata(getValue, pixelmap);
942 DumpMetadata(getValue);
943 EXPECT_EQ(errorCode, IMAGE_SUCCESS);
944 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_SetMetadata end";
945 }
946
947 /**
948 * @tc.name: OH_PixelmapNative_SetGetColorSpace
949 * @tc.desc: OH_PixelmapNative_SetGetColorSpace
950 * @tc.type: FUNC
951 */
952 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_SetGetColorSpace, TestSize.Level3)
953 {
954 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_SetGetColorSpace start";
955 OH_PixelmapNative *pixelmap = nullptr;
956 CreatePixelmapNative(&pixelmap);
957 EXPECT_NE(pixelmap, nullptr);
958
959 OH_NativeColorSpaceManager *setColorSpaceNative = nullptr;
960 ColorSpaceName setColorSpaceName = SRGB_LIMIT;
961 setColorSpaceNative = OH_NativeColorSpaceManager_CreateFromName(setColorSpaceName);
962 Image_ErrorCode ret = OH_PixelmapNative_SetColorSpaceNative(pixelmap, setColorSpaceNative);
963 EXPECT_EQ(ret, IMAGE_SUCCESS);
964
965 OH_NativeColorSpaceManager *getColorSpaceNative = nullptr;
966 ret = OH_PixelmapNative_GetColorSpaceNative(pixelmap, &getColorSpaceNative);
967 EXPECT_EQ(ret, IMAGE_SUCCESS);
968
969 int getColorSpaceName = OH_NativeColorSpaceManager_GetColorSpaceName(getColorSpaceNative);
970 EXPECT_EQ(setColorSpaceName, getColorSpaceName);
971
972 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_SetGetColorSpace end";
973 }
974
975 /**
976 * @tc.name: OH_PixelmapNative_GetByteCount
977 * @tc.desc: Test OH_PixelmapNative_GetByteCount and OH_PixelmapNative_GetAllocationByteCount
978 * @tc.type: FUNC
979 */
980 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_GetByteCount, TestSize.Level3)
981 {
982 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_GetByteCount start";
983
984 OH_Pixelmap_InitializationOptions* options = nullptr;
985 OH_PixelmapInitializationOptions_Create(&options);
986 OH_PixelmapInitializationOptions_SetWidth(options, 1);
987 OH_PixelmapInitializationOptions_SetHeight(options, 1);
988 OH_PixelmapNative* pixelmap = nullptr;
989 Image_ErrorCode ret = OH_PixelmapNative_CreateEmptyPixelmap(options, &pixelmap);
990 ASSERT_EQ(ret, IMAGE_SUCCESS);
991 uint32_t byteCount = 0;
992 ret = OH_PixelmapNative_GetByteCount(pixelmap, &byteCount);
993 ASSERT_EQ(ret, IMAGE_SUCCESS);
994 uint32_t allocByteCount = 0;
995 ret = OH_PixelmapNative_GetAllocationByteCount(pixelmap, &allocByteCount);
996 ASSERT_EQ(ret, IMAGE_SUCCESS);
997 ASSERT_TRUE(byteCount == ARGB_8888_BYTES && allocByteCount >= byteCount);
998
999 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_GetByteCount end";
1000 }
1001
1002 /**
1003 * @tc.name: OH_PixelmapNative_CreateScaledPixelMapWithAntiAliasing
1004 * @tc.desc: OH_PixelmapNative_CreateScaledPixelMapWithAntiAliasing
1005 * @tc.type: FUNC
1006 */
1007 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_CreateScaledPixelMapWithAntiAliasing, TestSize.Level3)
1008 {
1009 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_CreateScaledPixelMapWithAntiAliasing start";
1010 OH_PixelmapNative *srcPixelmap = nullptr;
1011 CreatePixelmapNative(&srcPixelmap);
1012 EXPECT_NE(srcPixelmap, nullptr);
1013
1014 OH_Pixelmap_ImageInfo *srcImageInfoBefore = nullptr;
1015 OH_PixelmapImageInfo_Create(&srcImageInfoBefore);
1016 OH_PixelmapNative_GetImageInfo(srcPixelmap, srcImageInfoBefore);
1017
1018 OH_PixelmapNative *dstPixelmap = nullptr;
1019 float scaleX = 0.5;
1020 float scaleY = 0.5;
1021 Image_ErrorCode ret = OH_PixelmapNative_CreateScaledPixelMapWithAntiAliasing(srcPixelmap, &dstPixelmap,
1022 scaleX, scaleY, OH_PixelmapNative_AntiAliasingLevel::OH_PixelmapNative_AntiAliasing_HIGH);
1023 EXPECT_EQ(ret, IMAGE_SUCCESS);
1024
1025 EXPECT_NE(dstPixelmap, nullptr);
1026 OH_Pixelmap_ImageInfo *dstImageInfo = nullptr;
1027 OH_PixelmapImageInfo_Create(&dstImageInfo);
1028 OH_PixelmapNative_GetImageInfo(dstPixelmap, dstImageInfo);
1029
1030 OH_Pixelmap_ImageInfo *srcImageInfoAfter = nullptr;
1031 OH_PixelmapImageInfo_Create(&srcImageInfoAfter);
1032 OH_PixelmapNative_GetImageInfo(srcPixelmap, srcImageInfoAfter);
1033 EXPECT_EQ(CompareImageInfo(srcImageInfoAfter, srcImageInfoBefore), true);
1034
1035 OH_PixelmapNative *sameSrcPixelmap = nullptr;
1036 CreatePixelmapNative(&sameSrcPixelmap);
1037 EXPECT_NE(sameSrcPixelmap, nullptr);
1038 ret = OH_PixelmapNative_ScaleWithAntiAliasing(sameSrcPixelmap, scaleX, scaleY,
1039 OH_PixelmapNative_AntiAliasingLevel::OH_PixelmapNative_AntiAliasing_HIGH);
1040 EXPECT_EQ(ret, IMAGE_SUCCESS);
1041
1042 OH_Pixelmap_ImageInfo *sameSrcImageInfo = nullptr;
1043 OH_PixelmapImageInfo_Create(&sameSrcImageInfo);
1044 OH_PixelmapNative_GetImageInfo(sameSrcPixelmap, sameSrcImageInfo);
1045 EXPECT_EQ(CompareImageInfo(sameSrcImageInfo, dstImageInfo), true);
1046
1047 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_CreateScaledPixelMapWithAntiAliasing end";
1048 }
1049
1050 /**
1051 * @tc.name: OH_PixelmapNative_CreateScaledPixelMap
1052 * @tc.desc: OH_PixelmapNative_CreateScaledPixelMap
1053 * @tc.type: FUNC
1054 */
1055 HWTEST_F(PixelMapNdk2Test, OH_PixelmapNative_CreateScaledPixelMap, TestSize.Level3)
1056 {
1057 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_CreateScaledPixelMap start";
1058 OH_PixelmapNative *srcPixelmap = nullptr;
1059 CreatePixelmapNative(&srcPixelmap);
1060 EXPECT_NE(srcPixelmap, nullptr);
1061
1062 OH_Pixelmap_ImageInfo *srcImageInfoBefore = nullptr;
1063 OH_PixelmapImageInfo_Create(&srcImageInfoBefore);
1064 OH_PixelmapNative_GetImageInfo(srcPixelmap, srcImageInfoBefore);
1065
1066 OH_PixelmapNative *dstPixelmap = nullptr;
1067 float scaleX = 1.5;
1068 float scaleY = 1.5;
1069 Image_ErrorCode ret = OH_PixelmapNative_CreateScaledPixelMap(srcPixelmap, &dstPixelmap, scaleX, scaleY);
1070 EXPECT_EQ(ret, IMAGE_SUCCESS);
1071
1072 EXPECT_NE(dstPixelmap, nullptr);
1073 OH_Pixelmap_ImageInfo *dstImageInfo = nullptr;
1074 OH_PixelmapImageInfo_Create(&dstImageInfo);
1075 OH_PixelmapNative_GetImageInfo(dstPixelmap, dstImageInfo);
1076
1077 OH_Pixelmap_ImageInfo *srcImageInfoAfter = nullptr;
1078 OH_PixelmapImageInfo_Create(&srcImageInfoAfter);
1079 OH_PixelmapNative_GetImageInfo(srcPixelmap, srcImageInfoAfter);
1080 EXPECT_EQ(CompareImageInfo(srcImageInfoAfter, srcImageInfoBefore), true);
1081
1082 OH_PixelmapNative *sameSrcPixelmap = nullptr;
1083 CreatePixelmapNative(&sameSrcPixelmap);
1084 EXPECT_NE(sameSrcPixelmap, nullptr);
1085 ret = OH_PixelmapNative_Scale(sameSrcPixelmap, scaleX, scaleY);
1086 EXPECT_EQ(ret, IMAGE_SUCCESS);
1087
1088 OH_Pixelmap_ImageInfo *sameSrcImageInfo = nullptr;
1089 OH_PixelmapImageInfo_Create(&sameSrcImageInfo);
1090 OH_PixelmapNative_GetImageInfo(sameSrcPixelmap, sameSrcImageInfo);
1091 EXPECT_EQ(CompareImageInfo(sameSrcImageInfo, dstImageInfo), true);
1092
1093 GTEST_LOG_(INFO) << "PixelMapNdk2Test: OH_PixelmapNative_CreateScaledPixelMap end";
1094 }
1095 }
1096 }
1097