1 /*
2  * Copyright (c) 2024 Shenzhen Kaihong Digital Industry Development 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 "drawing_bitmap.h"
17 #include "drawing_error_code.h"
18 #include "drawing_image.h"
19 #include "gtest/gtest.h"
20 #include <cstdlib>
21 #include <ctime>
22 
23 using namespace testing;
24 using namespace testing::ext;
25 
26 namespace OHOS {
27 namespace Rosen {
28 namespace Drawing {
29 class DrawingNativeImageTest : public testing::Test {};
30 
31 /*
32  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0100
33  * @tc.name: testImageCreateDestroyNormal
34  * @tc.desc: Test for creating and destroying an image object with normal parameters.
35  * @tc.size  : SmallTest
36  * @tc.type  : Function
37  * @tc.level : Level 0
38  */
HWTEST_F(DrawingNativeImageTest, testImageCreateDestroyNormal, TestSize.Level0)39 HWTEST_F(DrawingNativeImageTest, testImageCreateDestroyNormal, TestSize.Level0) {
40     // 1. OH_Drawing_ImageCreate
41     OH_Drawing_Image *image = OH_Drawing_ImageCreate();
42     // 2. OH_Drawing_ImageDestroy
43     OH_Drawing_ImageDestroy(image);
44 }
45 
46 /*
47  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0101
48  * @tc.name: testImageCreateDestroyNULL
49  * @tc.desc: Test for destroying an image object with a NULL parameter.
50  * @tc.size  : SmallTest
51  * @tc.type  : Function
52  * @tc.level : Level 3
53  */
HWTEST_F(DrawingNativeImageTest, testImageCreateDestroyNULL, TestSize.Level3)54 HWTEST_F(DrawingNativeImageTest, testImageCreateDestroyNULL, TestSize.Level3) {
55     // 1. OH_Drawing_ImageDestroy with a NULL parameter
56     OH_Drawing_ImageDestroy(nullptr);
57 }
58 
59 /*
60  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0102
61  * @tc.name: testImageCreateDestroyMultipleCalls
62  * @tc.desc: Test for multiple calls of creating and destroying an image object.
63  * @tc.size  : SmallTest
64  * @tc.type  : Function
65  * @tc.level : Level 3
66  */
HWTEST_F(DrawingNativeImageTest, testImageCreateDestroyMultipleCalls, TestSize.Level3)67 HWTEST_F(DrawingNativeImageTest, testImageCreateDestroyMultipleCalls, TestSize.Level3) {
68     // 1. Call OH_Drawing_ImageCreate and OH_Drawing_ImageDestroy 10 times
69     for (int i = 0; i < 10; i++) {
70         OH_Drawing_Image *image = OH_Drawing_ImageCreate();
71         OH_Drawing_ImageDestroy(image);
72     }
73     // 2. Call OH_Drawing_ImageCreate 10 times continuously
74     OH_Drawing_Image *images[10];
75     for (int i = 0; i < 10; i++) {
76         images[i] = OH_Drawing_ImageCreate();
77     }
78     // 3. Call OH_Drawing_ImageDestroy 10 times continuously
79     for (int i = 0; i < 10; i++) {
80         OH_Drawing_ImageDestroy(images[i]);
81     }
82 }
83 
84 /*
85  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0200
86  * @tc.name: testImageBuildFromBitmapNormal
87  * @tc.desc: Test for building an image from a bitmap with normal parameters.
88  * @tc.size  : SmallTest
89  * @tc.type  : Function
90  * @tc.level : Level 0
91  */
HWTEST_F(DrawingNativeImageTest, testImageBuildFromBitmapNormal, TestSize.Level0)92 HWTEST_F(DrawingNativeImageTest, testImageBuildFromBitmapNormal, TestSize.Level0) {
93     // 1. OH_Drawing_ImageCreate
94     OH_Drawing_Image *image = OH_Drawing_ImageCreate();
95     // 2. OH_Drawing_BitmapCreate
96     OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
97     // 3. OH_Drawing_ImageBuildFromBitmap successfully constructs the image content
98     OH_Drawing_ImageBuildFromBitmap(image, bitmap);
99     EXPECT_NE(bitmap, nullptr);
100     // 4. OH_Drawing_ImageBuildFromBitmap fails to construct the image content
101     OH_Drawing_ImageBuildFromBitmap(image, nullptr);
102     // 5. Free memory
103     OH_Drawing_ImageDestroy(image);
104     OH_Drawing_BitmapDestroy(bitmap);
105 }
106 
107 /*
108  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0201
109  * @tc.name: testImageBuildFromBitmapNULL
110  * @tc.desc: Test for building an image from a bitmap with NULL parameters.
111  * @tc.size  : SmallTest
112  * @tc.type  : Function
113  * @tc.level : Level 3
114  */
HWTEST_F(DrawingNativeImageTest, testImageBuildFromBitmapNULL, TestSize.Level3)115 HWTEST_F(DrawingNativeImageTest, testImageBuildFromBitmapNULL, TestSize.Level3) {
116     // 1. OH_Drawing_ImageCreate
117     OH_Drawing_Image *image = OH_Drawing_ImageCreate();
118     // 2. OH_Drawing_BitmapCreate
119     OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
120     // 3. OH_Drawing_ImageBuildFromBitmap with a null parameter, check the error code with OH_Drawing_ErrorCodeGet
121     OH_Drawing_ImageBuildFromBitmap(nullptr, bitmap);
122     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
123     // 4. OH_Drawing_ImageBuildFromBitmap with a null parameter, check the error code with OH_Drawing_ErrorCodeGet
124     OH_Drawing_ImageBuildFromBitmap(image, nullptr);
125     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
126     // 5. Free memory
127     OH_Drawing_ImageDestroy(image);
128     OH_Drawing_BitmapDestroy(bitmap);
129 }
130 
131 /*
132  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0202
133  * @tc.name: testImageBuildFromBitmapMultipleCalls
134  * @tc.desc: Test for multiple calls of building an image from a bitmap.
135  * @tc.size  : SmallTest
136  * @tc.type  : Function
137  * @tc.level : Level 3
138  */
HWTEST_F(DrawingNativeImageTest, testImageBuildFromBitmapMultipleCalls, TestSize.Level3)139 HWTEST_F(DrawingNativeImageTest, testImageBuildFromBitmapMultipleCalls, TestSize.Level3) {
140     for (int i = 0; i < 10; i++) {
141         OH_Drawing_Image *image = OH_Drawing_ImageCreate();
142         OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
143         OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
144         uint32_t width = 200 + i * 10;
145         uint32_t height = 200 + i * 10;
146         OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
147         OH_Drawing_ImageBuildFromBitmap(image, bitmap);
148         OH_Drawing_ImageDestroy(image);
149         OH_Drawing_BitmapDestroy(bitmap);
150     }
151 }
152 
153 /*
154  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0203
155  * @tc.name: testImageBuildFromBitmapMultipleCallsBoundary
156  * @tc.desc: Test for multiple calls of building an boundary value image from a bitmap.
157  * @tc.size  : SmallTest
158  * @tc.type  : Function
159  * @tc.level : Level 3
160  */
HWTEST_F(DrawingNativeImageTest, testImageBuildFromBitmapMultipleCallsBoundary, TestSize.Level3)161 HWTEST_F(DrawingNativeImageTest, testImageBuildFromBitmapMultipleCallsBoundary, TestSize.Level3) {
162     for (int i = 0; i < 10; i++) {
163         OH_Drawing_Image *image = OH_Drawing_ImageCreate();
164         OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
165         OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
166         uint32_t width = 4096;
167         uint32_t height = 2160;
168         OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
169         OH_Drawing_ImageBuildFromBitmap(image, bitmap);
170         OH_Drawing_ImageDestroy(image);
171         OH_Drawing_BitmapDestroy(bitmap);
172     }
173 }
174 
175 /*
176  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0300
177  * @tc.name: testImageGetWidthHeightNormal
178  * @tc.desc: Test for getting width and height of an image with normal parameters.
179  * @tc.size  : SmallTest
180  * @tc.type  : Function
181  * @tc.level : Level 0
182  */
HWTEST_F(DrawingNativeImageTest, testImageGetWidthHeightNormal, TestSize.Level0)183 HWTEST_F(DrawingNativeImageTest, testImageGetWidthHeightNormal, TestSize.Level0) {
184     // 1. OH_Drawing_ImageCreate
185     OH_Drawing_Image *image = OH_Drawing_ImageCreate();
186     OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
187     OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
188     constexpr uint32_t width = 200;
189     constexpr uint32_t height = 200;
190     OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
191     OH_Drawing_ImageBuildFromBitmap(image, bitmap);
192     // 2. OH_Drawing_ImageGetWidth
193     int32_t width_ = OH_Drawing_ImageGetWidth(image);
194     EXPECT_EQ(width_, 200);
195     // 3. OH_Drawing_ImageGetHeight
196     int32_t height_ = OH_Drawing_ImageGetHeight(image);
197     EXPECT_EQ(height_, 200);
198     // 4. Free memory
199     OH_Drawing_ImageDestroy(image);
200     OH_Drawing_BitmapDestroy(bitmap);
201 }
202 
203 /*
204  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0301
205  * @tc.name: testImageGetWidthHeightNULL
206  * @tc.desc: Test for getting width and height of an image with NULL parameters.
207  * @tc.size  : SmallTest
208  * @tc.type  : Function
209  * @tc.level : Level 3
210  */
HWTEST_F(DrawingNativeImageTest, testImageGetWidthHeightNULL, TestSize.Level3)211 HWTEST_F(DrawingNativeImageTest, testImageGetWidthHeightNULL, TestSize.Level3) {
212     OH_Drawing_Image *image = OH_Drawing_ImageCreate();
213     OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
214     OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
215     uint32_t width = 200;
216     uint32_t height = 200;
217     OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
218     OH_Drawing_ImageBuildFromBitmap(image, bitmap);
219     // 1. OH_Drawing_ImageGetWidth with a null parameter, check the error code with OH_Drawing_ErrorCodeGet
220     OH_Drawing_ImageGetWidth(nullptr);
221     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
222     // 2. OH_Drawing_ImageGetHeight with a null parameter, check the error code with OH_Drawing_ErrorCodeGet
223     OH_Drawing_ImageGetHeight(nullptr);
224     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
225 }
226 
227 /*
228  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0302
229  * @tc.name: testImageGetWidthHeightMultipleCalls
230  * @tc.desc: Test for multiple calls of getting width and height of an image.
231  * @tc.size  : SmallTest
232  * @tc.type  : Function
233  * @tc.level : Level 3
234  */
HWTEST_F(DrawingNativeImageTest, testImageGetWidthHeightMultipleCalls, TestSize.Level3)235 HWTEST_F(DrawingNativeImageTest, testImageGetWidthHeightMultipleCalls, TestSize.Level3) {
236     for (int i = 0; i < 10; i++) {
237         OH_Drawing_Image *image = OH_Drawing_ImageCreate();
238         OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
239         OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
240         uint32_t width = 200 + i * 10;
241         uint32_t height = 200 + i * 10;
242         OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
243         OH_Drawing_ImageBuildFromBitmap(image, bitmap);
244         int32_t width_ = OH_Drawing_ImageGetWidth(image);
245         EXPECT_EQ(width_, 200 + i * 10);
246         int32_t height_ = OH_Drawing_ImageGetHeight(image);
247         EXPECT_EQ(height_, 200 + i * 10);
248         OH_Drawing_ImageDestroy(image);
249         OH_Drawing_BitmapDestroy(bitmap);
250     }
251 }
252 
253 /*
254  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0302
255  * @tc.name: testImageGetWidthHeightMultipleCallsBoundary
256  * @tc.desc: Test for multiple calls of getting width and height of an boundary value image.
257  * @tc.size  : SmallTest
258  * @tc.type  : Function
259  * @tc.level : Level 3
260  */
HWTEST_F(DrawingNativeImageTest, testImageGetWidthHeightMultipleCallsBoundary, TestSize.Level3)261 HWTEST_F(DrawingNativeImageTest, testImageGetWidthHeightMultipleCallsBoundary, TestSize.Level3) {
262     for (int i = 0; i < 10; i++) {
263         OH_Drawing_Image *image = OH_Drawing_ImageCreate();
264         OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
265         OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
266         uint32_t width = 4096;
267         uint32_t height = 2160;
268         OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
269         EXPECT_NE(bitmap, nullptr);
270         OH_Drawing_ImageBuildFromBitmap(image, bitmap);
271         EXPECT_NE(image, nullptr);
272         int32_t width_ = OH_Drawing_ImageGetWidth(image);
273         EXPECT_EQ(width_, 4096);
274         int32_t height_ = OH_Drawing_ImageGetHeight(image);
275         EXPECT_EQ(height_, 2160);
276         OH_Drawing_ImageDestroy(image);
277         OH_Drawing_BitmapDestroy(bitmap);
278     }
279 }
280 
281 /*
282  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0400
283  * @tc.name: testImageGetImageInfoNormal
284  * @tc.desc: Test for getting image info with normal parameters.
285  * @tc.size  : SmallTest
286  * @tc.type  : Function
287  * @tc.level : Level 0
288  */
HWTEST_F(DrawingNativeImageTest, testImageGetImageInfoNormal, TestSize.Level0)289 HWTEST_F(DrawingNativeImageTest, testImageGetImageInfoNormal, TestSize.Level0) {
290     OH_Drawing_ColorFormat cfs[] = {
291         COLOR_FORMAT_UNKNOWN,   COLOR_FORMAT_ALPHA_8,   COLOR_FORMAT_RGB_565,
292         COLOR_FORMAT_ARGB_4444, COLOR_FORMAT_RGBA_8888, COLOR_FORMAT_BGRA_8888,
293     };
294     OH_Drawing_AlphaFormat afs[] = {
295         ALPHA_FORMAT_UNKNOWN,
296         ALPHA_FORMAT_OPAQUE,
297         ALPHA_FORMAT_PREMUL,
298         ALPHA_FORMAT_UNPREMUL,
299     };
300     for (OH_Drawing_ColorFormat cf : cfs) {
301         for (OH_Drawing_AlphaFormat af : afs) {
302             OH_Drawing_Image *image = OH_Drawing_ImageCreate();
303             OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
304             OH_Drawing_BitmapFormat cFormat{cf, af};
305             uint32_t width = 400;
306             uint32_t height = 400;
307             OH_Drawing_Image_Info imageInfo;
308             OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
309             OH_Drawing_ImageGetImageInfo(image, &imageInfo);
310             OH_Drawing_ImageDestroy(image);
311             OH_Drawing_BitmapDestroy(bitmap);
312         }
313     }
314 }
315 
316 /*
317  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0401
318  * @tc.name: testImageGetImageInfoNULL
319  * @tc.desc: Test for getting image info with NULL parameters.
320  * @tc.size  : SmallTest
321  * @tc.type  : Function
322  * @tc.level : Level 3
323  */
HWTEST_F(DrawingNativeImageTest, testImageGetImageInfoNULL, TestSize.Level3)324 HWTEST_F(DrawingNativeImageTest, testImageGetImageInfoNULL, TestSize.Level3) {
325     // 1. OH_Drawing_ImageCreate
326     OH_Drawing_Image *image = OH_Drawing_ImageCreate();
327     OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
328     // 2. OH_Drawing_Image_Info
329     OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
330     uint32_t width = 400;
331     uint32_t height = 400;
332     OH_Drawing_Image_Info imageInfo;
333     OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
334     OH_Drawing_ImageGetImageInfo(image, &imageInfo);
335     // 3. OH_Drawing_ImageGetImageInfo with a null parameter, check the error code with OH_Drawing_ErrorCodeGet
336     OH_Drawing_ImageGetImageInfo(nullptr, &imageInfo);
337     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
338     // 4. Free memory
339     OH_Drawing_ImageDestroy(image);
340     OH_Drawing_BitmapDestroy(bitmap);
341 }
342 
343 /*
344  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0402
345  * @tc.name: testImageGetImageInfoMultipleCalls
346  * @tc.desc: Test for multiple calls of getting image info.
347  * @tc.size  : SmallTest
348  * @tc.type  : Function
349  * @tc.level : Level 3
350  */
HWTEST_F(DrawingNativeImageTest, testImageGetImageInfoMultipleCalls, TestSize.Level3)351 HWTEST_F(DrawingNativeImageTest, testImageGetImageInfoMultipleCalls, TestSize.Level3) {
352     OH_Drawing_ColorFormat cf[] = {
353         COLOR_FORMAT_UNKNOWN,   COLOR_FORMAT_ALPHA_8,   COLOR_FORMAT_RGB_565,
354         COLOR_FORMAT_ARGB_4444, COLOR_FORMAT_RGBA_8888, COLOR_FORMAT_BGRA_8888,
355     };
356     OH_Drawing_AlphaFormat af[] = {
357         ALPHA_FORMAT_UNKNOWN,
358         ALPHA_FORMAT_OPAQUE,
359         ALPHA_FORMAT_PREMUL,
360         ALPHA_FORMAT_UNPREMUL,
361     };
362     for (int i = 0; i < 10; i++) {
363         OH_Drawing_Image *image = OH_Drawing_ImageCreate();
364         OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
365         srand(static_cast<unsigned int>(time(0)));
366         OH_Drawing_BitmapFormat cFormat{cf[rand() % 5 + 1], af[rand() % 3 + 1]};
367         uint32_t width = rand() % 100 + 1;
368         uint32_t height = rand() % 100 + 1;
369         OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
370         OH_Drawing_Image_Info imageInfo;
371         OH_Drawing_ImageGetImageInfo(image, &imageInfo);
372         OH_Drawing_ImageDestroy(image);
373         OH_Drawing_BitmapDestroy(bitmap);
374     }
375 }
376 
377 /*
378  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0403
379  * @tc.name: testImageGetImageInfoAbnormal
380  * @tc.desc: Test for getting image info with abnormal parameters.
381  * @tc.size  : SmallTest
382  * @tc.type  : Function
383  * @tc.level : Level 3
384  */
HWTEST_F(DrawingNativeImageTest, testImageGetImageInfoAbnormal, TestSize.Level3)385 HWTEST_F(DrawingNativeImageTest, testImageGetImageInfoAbnormal, TestSize.Level3) {
386     // 1. OH_Drawing_ImageCreate
387     OH_Drawing_Image *image = OH_Drawing_ImageCreate();
388     OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
389     // 2. OH_Drawing_ImageGetImageInfo creates OH_Drawing_Image_Info with width=-400 and height=-400
390     OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
391     uint32_t width = -400;
392     uint32_t height = -400;
393     OH_Drawing_Image_Info imageInfo;
394     OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
395     OH_Drawing_ImageGetImageInfo(image, &imageInfo);
396     // 3. Free memory
397     OH_Drawing_ImageDestroy(image);
398     OH_Drawing_BitmapDestroy(bitmap);
399 }
400 
401 /*
402  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0404
403  * @tc.name: testImageGetImageInfoMaximum
404  * @tc.desc: Test for getting image info with maximum values.
405  * @tc.size  : SmallTest
406  * @tc.type  : Function
407  * @tc.level : Level 3
408  */
HWTEST_F(DrawingNativeImageTest, testImageGetImageInfoMaximum, TestSize.Level3)409 HWTEST_F(DrawingNativeImageTest, testImageGetImageInfoMaximum, TestSize.Level3) {
410     // 1. OH_Drawing_ImageCreate
411     OH_Drawing_Image *image = OH_Drawing_ImageCreate();
412     OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
413     // 2. OH_Drawing_ImageGetImageInfo creates OH_Drawing_Image_Info with width=maximum value and height=maximum value
414     OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
415     uint32_t width = UINT32_MAX;
416     uint32_t height = UINT32_MAX;
417     OH_Drawing_Image_Info imageInfo;
418     OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
419     OH_Drawing_ImageGetImageInfo(image, &imageInfo);
420     // 3. Free memory
421     OH_Drawing_ImageDestroy(image);
422     OH_Drawing_BitmapDestroy(bitmap);
423 }
424 
425 /*
426  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_IMAGE_0405
427  * @tc.name: testImageGetImageInfoBoundary
428  * @tc.desc: Test for getting image info with Boundary value.
429  * @tc.size  : SmallTest
430  * @tc.type  : Function
431  * @tc.level : Level 3
432  */
HWTEST_F(DrawingNativeImageTest, testImageGetImageInfoBoundary, TestSize.Level3)433 HWTEST_F(DrawingNativeImageTest, testImageGetImageInfoBoundary, TestSize.Level3) {
434     // 1. OH_Drawing_ImageCreate
435     OH_Drawing_Image *image = OH_Drawing_ImageCreate();
436     OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
437     // 2. OH_Drawing_ImageGetImageInfo creates OH_Drawing_Image_Info with width=maximum value and height=maximum value
438     OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
439     uint32_t width = 4096;
440     uint32_t height = 2160;
441     OH_Drawing_Image_Info imageInfo;
442     OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
443     EXPECT_NE(bitmap, nullptr);
444     OH_Drawing_ImageGetImageInfo(image, &imageInfo);
445     EXPECT_NE(image, nullptr);
446     // 3. Free memory
447     OH_Drawing_ImageDestroy(image);
448     OH_Drawing_BitmapDestroy(bitmap);
449 }
450 
451 } // namespace Drawing
452 } // namespace Rosen
453 } // namespace OHOS