1 /*
2 * Copyright (c) 2022-2024 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, Hardware
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
18 #include "drawing_bitmap.h"
19 #include "drawing_types.h"
20
21 using namespace testing;
22 using namespace testing::ext;
23
24 namespace OHOS {
25 namespace Rosen {
26 namespace Drawing {
27 class NativeDrawingBitmapLargeValueTest : public testing::Test {
28 public:
29 static void SetUpTestCase();
30 static void TearDownTestCase();
31 void SetUp() override;
32 void TearDown() override;
33 protected:
34 OH_Drawing_Bitmap* bitmap_ = nullptr;
35 };
36
SetUpTestCase()37 void NativeDrawingBitmapLargeValueTest::SetUpTestCase() {}
TearDownTestCase()38 void NativeDrawingBitmapLargeValueTest::TearDownTestCase() {}
SetUp()39 void NativeDrawingBitmapLargeValueTest::SetUp()
40 {
41 bitmap_ = OH_Drawing_BitmapCreate();
42 ASSERT_NE(bitmap_, nullptr);
43 }
44
TearDown()45 void NativeDrawingBitmapLargeValueTest::TearDown()
46 {
47 if (bitmap_ != nullptr) {
48 OH_Drawing_BitmapDestroy(bitmap_);
49 bitmap_ = nullptr;
50 }
51 }
52
53 /*
54 * @tc.name: NativeDrawingBitmapLargeValueTest_bitmapBuild001
55 * @tc.desc: test for drawing_bitmap build.
56 * @tc.size : MediumTest
57 * @tc.type : Function
58 * @tc.level : Level 1
59 */
HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_bitmapBuild001, TestSize.Level1)60 HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_bitmapBuild001, TestSize.Level1)
61 {
62 const unsigned int width = 2160;
63 const unsigned int height = 4096;
64 OH_Drawing_BitmapFormat bitmapFormat { COLOR_FORMAT_ALPHA_8, ALPHA_FORMAT_PREMUL };
65 OH_Drawing_BitmapBuild(bitmap_, width, height, &bitmapFormat);
66 EXPECT_EQ(width, OH_Drawing_BitmapGetWidth(bitmap_));
67 EXPECT_EQ(height, OH_Drawing_BitmapGetHeight(bitmap_));
68 }
69
70 /*
71 * @tc.name: NativeDrawingBitmapLargeValueTest_bitmapBuild003
72 * @tc.desc: test for drawing_bitmap build.
73 * @tc.size : MediumTest
74 * @tc.type : Function
75 * @tc.level : Level 1
76 */
HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_bitmapBuild003, TestSize.Level1)77 HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_bitmapBuild003, TestSize.Level1)
78 {
79 const unsigned int width = 2160;
80 const unsigned int height = 4096;
81 OH_Drawing_BitmapFormat bitmapFormat { COLOR_FORMAT_ARGB_4444, ALPHA_FORMAT_UNPREMUL };
82 OH_Drawing_BitmapBuild(bitmap_, width, height, &bitmapFormat);
83 EXPECT_EQ(width, OH_Drawing_BitmapGetWidth(bitmap_));
84 EXPECT_EQ(height, OH_Drawing_BitmapGetHeight(bitmap_));
85 EXPECT_EQ(OH_Drawing_BitmapGetPixels(bitmap_) == nullptr, false);
86 }
87
88 /*
89 * @tc.name: NativeDrawingBitmapLargeValueTest_bitmapBuild004
90 * @tc.desc: test for drawing_bitmap build.
91 * @tc.size : MediumTest
92 * @tc.type : Function
93 * @tc.level : Level 1
94 */
HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_bitmapBuild004, TestSize.Level1)95 HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_bitmapBuild004, TestSize.Level1)
96 {
97 const unsigned int width = 2160;
98 const unsigned int height = 4096;
99 OH_Drawing_BitmapFormat bitmapFormat { COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_UNPREMUL };
100 OH_Drawing_BitmapBuild(bitmap_, width, height, &bitmapFormat);
101 EXPECT_EQ(width, OH_Drawing_BitmapGetWidth(bitmap_));
102 EXPECT_EQ(height, OH_Drawing_BitmapGetHeight(bitmap_));
103 }
104
105 /*
106 * @tc.name: NativeDrawingBitmapLargeValueTest_bitmapCreateFromPixels005
107 * @tc.desc: test for OH_Drawing_BitmapCreateFromPixels.
108 * @tc.size : MediumTest
109 * @tc.type : Function
110 * @tc.level : Level 1
111 */
HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_bitmapCreateFromPixels005, TestSize.Level1)112 HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_bitmapCreateFromPixels005,
113 TestSize.Level1)
114 {
115 OH_Drawing_Image_Info imageInfo;
116 OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate();
117 EXPECT_NE(bitmap, nullptr);
118 OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
119 constexpr uint32_t width = 2160;
120 constexpr uint32_t height = 4096;
121 OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
122 void* pixels = OH_Drawing_BitmapGetPixels(bitmap);
123 EXPECT_NE(pixels, nullptr);
124 uint32_t rowBytes = width * height * 4;
125 bitmap_ = OH_Drawing_BitmapCreateFromPixels(&imageInfo, pixels, rowBytes);
126 EXPECT_NE(bitmap_, nullptr);
127 bitmap_ = OH_Drawing_BitmapCreateFromPixels(&imageInfo, pixels, 0);
128 EXPECT_EQ(bitmap_, nullptr);
129 bitmap_ = OH_Drawing_BitmapCreateFromPixels(&imageInfo, nullptr, 0);
130 EXPECT_EQ(bitmap_, nullptr);
131 bitmap_ = OH_Drawing_BitmapCreateFromPixels(nullptr, nullptr, 0);
132 EXPECT_EQ(bitmap_, nullptr);
133 }
134 /*
135 * @tc.name: NativeDrawingBitmapLargeValueTest_bitmapGetImageInfo006
136 * @tc.desc: test for drawing_bitmapGetImageInfo.
137 * @tc.size : MediumTest
138 * @tc.type : Function
139 * @tc.level : Level 1
140 */
HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_bitmapGetImageInfo006, TestSize.Level1)141 HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_bitmapGetImageInfo006, TestSize.Level1)
142 {
143 const unsigned int width = 2160;
144 const unsigned int height = 4096;
145 OH_Drawing_BitmapFormat bitmapFormat { COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_UNPREMUL };
146 OH_Drawing_BitmapBuild(bitmap_, width, height, &bitmapFormat);
147 OH_Drawing_Image_Info* imageInfo = new OH_Drawing_Image_Info();
148 OH_Drawing_BitmapGetImageInfo(bitmap_, imageInfo);
149 EXPECT_EQ(width, imageInfo->width);
150 EXPECT_EQ(height, imageInfo->height);
151 }
152
153 /*
154 * @tc.name: NativeDrawingBitmapLargeValueTest_BitmapReadPixels007
155 * @tc.desc: test for drawing_BitmapReadPixels.
156 * @tc.size : MediumTest
157 * @tc.type : Function
158 * @tc.level : Level 1
159 */
HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_BitmapReadPixels007, TestSize.Level1)160 HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_BitmapReadPixels007, TestSize.Level1)
161 {
162 const unsigned int width = 2160;
163 const unsigned int height = 4096;
164 OH_Drawing_BitmapFormat bitmapFormat {COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_UNPREMUL};
165 OH_Drawing_BitmapBuild(bitmap_, width, height, &bitmapFormat);
166 OH_Drawing_Image_Info imageInfo {width, height, COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_UNPREMUL};
167 void* pixels = new uint32_t[width * height];
168 bool res = OH_Drawing_BitmapReadPixels(nullptr, nullptr, nullptr, width * 4, 0, 0);
169 EXPECT_EQ(res, false);
170 res = OH_Drawing_BitmapReadPixels(nullptr, &imageInfo, pixels, width * 4, 0, 0);
171 EXPECT_EQ(res, false);
172 res = OH_Drawing_BitmapReadPixels(bitmap_, nullptr, pixels, width * 4, 0, 0);
173 EXPECT_EQ(res, false);
174 res = OH_Drawing_BitmapReadPixels(bitmap_, &imageInfo, nullptr, width * 4, 0, 0);
175 EXPECT_EQ(res, false);
176 res = OH_Drawing_BitmapReadPixels(bitmap_, &imageInfo, pixels, width * 4, 0, 0);
177 EXPECT_EQ(res, true);
178 if (pixels != nullptr) {
179 delete[] reinterpret_cast<uint32_t*>(pixels);
180 pixels = nullptr;
181 }
182 }
183
184 /*
185 * @tc.name: NativeDrawingBitmapLargeValueTest_GetColorFormat008
186 * @tc.desc: test for drawing_BitmapGetColorFormat.
187 * @tc.size : MediumTest
188 * @tc.type : Function
189 * @tc.level : Level 1
190 */
HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_GetColorFormat008, TestSize.Level1)191 HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_GetColorFormat008, TestSize.Level1)
192 {
193 const unsigned int width = 2160;
194 const unsigned int height = 4096;
195 OH_Drawing_ColorFormat formats[] = {
196 COLOR_FORMAT_UNKNOWN,
197 COLOR_FORMAT_ALPHA_8,
198 COLOR_FORMAT_RGB_565,
199 COLOR_FORMAT_ARGB_4444,
200 COLOR_FORMAT_RGBA_8888,
201 COLOR_FORMAT_BGRA_8888
202 };
203
204 OH_Drawing_AlphaFormat alphaFormats[] = {
205 ALPHA_FORMAT_UNKNOWN,
206 ALPHA_FORMAT_OPAQUE,
207 ALPHA_FORMAT_PREMUL,
208 ALPHA_FORMAT_UNPREMUL
209 };
210 OH_Drawing_ColorFormat colorFormat_;
211 for (int i = 1; i < 6; i++) {
212 OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
213 OH_Drawing_BitmapFormat bitmapFormat = {formats[i], alphaFormats[2]};
214 OH_Drawing_BitmapBuild(bitmap, width, height, &bitmapFormat);
215 if (bitmap == nullptr) {
216 colorFormat_ = OH_Drawing_BitmapGetColorFormat(bitmap);
217 EXPECT_EQ(colorFormat_, formats[0]);
218 }
219 colorFormat_ = OH_Drawing_BitmapGetColorFormat(bitmap);
220 EXPECT_EQ(colorFormat_, formats[i]);
221 }
222 }
223
224 /*
225 * @tc.name: NativeDrawingBitmapLargeValueTest_GetAlphaFormat009
226 * @tc.desc: test for drawing_BitmapGetAlphaFormat.
227 * @tc.size : MediumTest
228 * @tc.type : Function
229 * @tc.level : Level 1
230 */
HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_GetAlphaFormat009, TestSize.Level1)231 HWTEST_F(NativeDrawingBitmapLargeValueTest, NativeDrawingBitmapLargeValueTest_GetAlphaFormat009, TestSize.Level1)
232 {
233 const unsigned int width = 2160;
234 const unsigned int height = 4096;
235 OH_Drawing_ColorFormat formats[] = {
236 COLOR_FORMAT_UNKNOWN,
237 COLOR_FORMAT_ALPHA_8,
238 COLOR_FORMAT_RGB_565,
239 COLOR_FORMAT_ARGB_4444,
240 COLOR_FORMAT_RGBA_8888,
241 COLOR_FORMAT_BGRA_8888
242 };
243
244 OH_Drawing_AlphaFormat alphaFormats[] = {
245 ALPHA_FORMAT_UNKNOWN,
246 ALPHA_FORMAT_OPAQUE,
247 ALPHA_FORMAT_PREMUL,
248 ALPHA_FORMAT_UNPREMUL
249 };
250 OH_Drawing_AlphaFormat alphaFormat_;
251 for (int i = 1; i < 4; i++) {
252 OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
253 OH_Drawing_BitmapFormat bitmapFormat = {formats[3], alphaFormats[i]};
254 OH_Drawing_BitmapBuild(bitmap, width, height, &bitmapFormat);
255 if (bitmap == nullptr) {
256 alphaFormat_ = OH_Drawing_BitmapGetAlphaFormat(bitmap);
257 EXPECT_EQ(alphaFormat_, alphaFormats[0]);
258 }
259 alphaFormat_ = OH_Drawing_BitmapGetAlphaFormat(bitmap);
260 EXPECT_EQ(alphaFormat_, alphaFormats[i]);
261 }
262 }
263 } // namespace Drawing
264 } // namespace Rosen
265 } // namespace OHOS