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