• 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_color.h"
19 #include "drawing_color_filter.h"
20 #include "drawing_filter.h"
21 #include "drawing_pen.h"
22 #include "drawing_shadow_layer.h"
23 #include "effect/color_filter.h"
24 #include "effect/filter.h"
25 
26 using namespace testing;
27 using namespace testing::ext;
28 
29 namespace OHOS {
30 namespace Rosen {
31 namespace Drawing {
32 class NativeDrawingPenTest : public testing::Test {
33 public:
34     static void SetUpTestCase();
35     static void TearDownTestCase();
36     void SetUp() override;
37     void TearDown() override;
38 };
39 
SetUpTestCase()40 void NativeDrawingPenTest::SetUpTestCase() {}
TearDownTestCase()41 void NativeDrawingPenTest::TearDownTestCase() {}
SetUp()42 void NativeDrawingPenTest::SetUp() {}
TearDown()43 void NativeDrawingPenTest::TearDown() {}
CastToFilter(OH_Drawing_Filter * cFilter)44 static Filter* CastToFilter(OH_Drawing_Filter* cFilter)
45 {
46     return reinterpret_cast<Filter*>(cFilter);
47 }
48 
49 /*
50  * @tc.name: NativeDrawingPenTest_penCreate001
51  * @tc.desc: test for create drawing_pen.
52  * @tc.size  : MediumTest
53  * @tc.type  : Function
54  * @tc.level : Level 1
55  */
56 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penCreate001, Function | MediumTest | Level1)
57 {
58     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
59     EXPECT_EQ(pen == nullptr, false);
60     OH_Drawing_PenDestroy(pen);
61 }
62 
63 /*
64  * @tc.name: NativeDrawingPenTest_penSetAntiAlias002
65  * @tc.desc: test for the get and set methods about AntiAlias for a pen.
66  * @tc.size  : MediumTest
67  * @tc.type  : Function
68  * @tc.level : Level 1
69  */
70 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetAntiAlias002, Function | MediumTest | Level1)
71 {
72     OH_Drawing_Pen* pen1 = OH_Drawing_PenCreate();
73     OH_Drawing_PenSetAntiAlias(pen1, true);
74     EXPECT_EQ(OH_Drawing_PenIsAntiAlias(pen1), true);
75     OH_Drawing_PenSetAntiAlias(pen1, false);
76     EXPECT_EQ(OH_Drawing_PenIsAntiAlias(pen1), false);
77     OH_Drawing_PenDestroy(pen1);
78 }
79 
80 /*
81  * @tc.name: NativeDrawingPenTest_penSetColor003
82  * @tc.desc: test for the get and set methods about the color for a pen.
83  * @tc.size  : MediumTest
84  * @tc.type  : Function
85  * @tc.level : Level 1
86  */
87 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetColor003, Function | MediumTest | Level1)
88 {
89     OH_Drawing_Pen* pen2 = OH_Drawing_PenCreate();
90     OH_Drawing_PenSetColor(pen2, OH_Drawing_ColorSetArgb(0xFF, 0xFF, 0x00, 0x00));
91     EXPECT_EQ(OH_Drawing_PenGetColor(pen2), 0xFFFF0000);
92     OH_Drawing_PenDestroy(pen2);
93 }
94 
95 /*
96  * @tc.name: NativeDrawingPenTest_penSetWidth004
97  * @tc.desc: test for the get and set methods about the width for a pen.
98  * @tc.size  : MediumTest
99  * @tc.type  : Function
100  * @tc.level : Level 1
101  */
102 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetWidth004, Function | MediumTest | Level1)
103 {
104     OH_Drawing_Pen* pen3 = OH_Drawing_PenCreate();
105     OH_Drawing_PenSetWidth(pen3, 10);
106     EXPECT_EQ(OH_Drawing_PenGetWidth(pen3), 10);
107     OH_Drawing_PenDestroy(pen3);
108 }
109 
110 /*
111  * @tc.name: NativeDrawingPenTest_penSetMiterLimit005
112  * @tc.desc: test for the get and set methods about the miterLimit for a pen.
113  * @tc.size  : MediumTest
114  * @tc.type  : Function
115  * @tc.level : Level 1
116  */
117 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetMiterLimit005, Function | MediumTest | Level1)
118 {
119     OH_Drawing_Pen* pen4 = OH_Drawing_PenCreate();
120     OH_Drawing_PenSetMiterLimit(pen4, 5);
121     EXPECT_EQ(OH_Drawing_PenGetMiterLimit(pen4), 5);
122     OH_Drawing_PenDestroy(pen4);
123 }
124 
125 /*
126  * @tc.name: NativeDrawingPenTest_penSetCap006
127  * @tc.desc: test for the get and set methods about the line cap style for a pen.
128  * @tc.size  : MediumTest
129  * @tc.type  : Function
130  * @tc.level : Level 1
131  */
132 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetCap006, Function | MediumTest | Level1)
133 {
134     OH_Drawing_Pen* pen5 = OH_Drawing_PenCreate();
135     OH_Drawing_PenSetCap(pen5, OH_Drawing_PenLineCapStyle::LINE_SQUARE_CAP);
136     EXPECT_EQ(OH_Drawing_PenGetCap(pen5), OH_Drawing_PenLineCapStyle::LINE_SQUARE_CAP);
137     OH_Drawing_PenSetCap(pen5, OH_Drawing_PenLineCapStyle::LINE_FLAT_CAP);
138     EXPECT_EQ(OH_Drawing_PenGetCap(pen5), OH_Drawing_PenLineCapStyle::LINE_FLAT_CAP);
139     OH_Drawing_PenSetCap(pen5, OH_Drawing_PenLineCapStyle::LINE_ROUND_CAP);
140     EXPECT_EQ(OH_Drawing_PenGetCap(pen5), OH_Drawing_PenLineCapStyle::LINE_ROUND_CAP);
141     OH_Drawing_PenDestroy(pen5);
142 }
143 
144 /*
145  * @tc.name: NativeDrawingPenTest_penSetJoin007
146  * @tc.desc: test for the get and set methods about the line join style for a pen.
147  * @tc.size  : MediumTest
148  * @tc.type  : Function
149  * @tc.level : Level 1
150  */
151 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetJoin007, Function | MediumTest | Level1)
152 {
153     OH_Drawing_Pen* pen6 = OH_Drawing_PenCreate();
154     OH_Drawing_PenSetJoin(pen6, OH_Drawing_PenLineJoinStyle::LINE_ROUND_JOIN);
155     EXPECT_EQ(OH_Drawing_PenGetJoin(pen6), OH_Drawing_PenLineJoinStyle::LINE_ROUND_JOIN);
156     OH_Drawing_PenSetJoin(pen6, OH_Drawing_PenLineJoinStyle::LINE_MITER_JOIN);
157     EXPECT_EQ(OH_Drawing_PenGetJoin(pen6), OH_Drawing_PenLineJoinStyle::LINE_MITER_JOIN);
158     OH_Drawing_PenSetJoin(pen6, OH_Drawing_PenLineJoinStyle::LINE_BEVEL_JOIN);
159     EXPECT_EQ(OH_Drawing_PenGetJoin(pen6), OH_Drawing_PenLineJoinStyle::LINE_BEVEL_JOIN);
160     OH_Drawing_PenDestroy(pen6);
161 }
162 
163 /*
164  * @tc.name: NativeDrawingPenTest_pen008
165  * @tc.desc: test for the get and set alpha for a pen.
166  * @tc.size  : MediumTest
167  * @tc.type  : Function
168  * @tc.level : Level 1
169  */
170 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenAlphaTest001, Function | MediumTest | Level1)
171 {
172     OH_Drawing_Pen* pen7 = OH_Drawing_PenCreate();
173     OH_Drawing_PenSetColor(pen7, OH_Drawing_ColorSetArgb(0xFF, 0xFF, 0x00, 0x00));
174     OH_Drawing_PenSetAlpha(pen7, 128);
175     EXPECT_EQ(OH_Drawing_PenGetAlpha(pen7), 128);
176     OH_Drawing_PenDestroy(pen7);
177 }
178 
179 /*
180  * @tc.name: NativeDrawingPenTest_penSetBlendMode008
181  * @tc.desc: test for the get and set methods about the line join style for a pen.
182  * @tc.size  : MediumTest
183  * @tc.type  : Function
184  * @tc.level : Level 1
185  */
186 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetBlendMode008, Function | MediumTest | Level1)
187 {
188     OH_Drawing_Pen* pen8 = OH_Drawing_PenCreate();
189     EXPECT_NE(pen8, nullptr);
190     OH_Drawing_PenSetBlendMode(pen8, OH_Drawing_BlendMode::BLEND_MODE_SRC);
191     OH_Drawing_PenSetBlendMode(nullptr, OH_Drawing_BlendMode::BLEND_MODE_SRC);
192     OH_Drawing_PenDestroy(pen8);
193 }
194 
195 /*
196  * @tc.name: NativeDrawingPenTest_penReset009
197  * @tc.desc: test for the reset method for a pen.
198  * @tc.size  : MediumTest
199  * @tc.type  : Function
200  * @tc.level : Level 1
201  */
202 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penReset009, Function | MediumTest | Level1)
203 {
204     OH_Drawing_Pen* pen9 = OH_Drawing_PenCreate();
205     OH_Drawing_PenSetAntiAlias(pen9, true);
206     OH_Drawing_PenSetColor(pen9, OH_Drawing_ColorSetArgb(0xFF, 0xFF, 0x00, 0x00));
207     OH_Drawing_PenSetWidth(pen9, 10);
208     OH_Drawing_PenSetMiterLimit(pen9, 5);
209     OH_Drawing_PenSetCap(pen9, OH_Drawing_PenLineCapStyle::LINE_ROUND_CAP);
210     OH_Drawing_PenSetJoin(pen9, OH_Drawing_PenLineJoinStyle::LINE_BEVEL_JOIN);
211 
212     OH_Drawing_PenReset(pen9);
213     EXPECT_EQ(OH_Drawing_PenIsAntiAlias(pen9), false);
214     EXPECT_EQ(OH_Drawing_PenGetColor(pen9), 0xFF000000);
215     EXPECT_EQ(OH_Drawing_PenGetWidth(pen9), 0);
216     EXPECT_EQ(OH_Drawing_PenGetMiterLimit(pen9), -1);
217     EXPECT_EQ(OH_Drawing_PenGetCap(pen9), OH_Drawing_PenLineCapStyle::LINE_FLAT_CAP);
218     EXPECT_EQ(OH_Drawing_PenGetJoin(pen9), OH_Drawing_PenLineJoinStyle::LINE_MITER_JOIN);
219 
220     OH_Drawing_PenDestroy(pen9);
221 }
222 
223 /*
224  * @tc.name: NativeDrawingPenTest_penGetFilter010
225  * @tc.desc: gets the filter from a pen.
226  * @tc.size  : MediumTest
227  * @tc.type  : Function
228  * @tc.level : Level 1
229  */
230 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penGetFilter010, Function | MediumTest | Level1)
231 {
232     OH_Drawing_Pen* pen9 = OH_Drawing_PenCreate();
233     EXPECT_NE(pen9, nullptr);
234     OH_Drawing_Filter* cFilter_ = OH_Drawing_FilterCreate();
235     EXPECT_NE(cFilter_, nullptr);
236 
237     OH_Drawing_ColorFilter* colorFilterTmp = OH_Drawing_ColorFilterCreateLinearToSrgbGamma();
238     OH_Drawing_FilterSetColorFilter(cFilter_, nullptr);
239     OH_Drawing_FilterGetColorFilter(cFilter_, colorFilterTmp);
240     EXPECT_EQ((reinterpret_cast<ColorFilter*>(colorFilterTmp))->GetType(),
241         ColorFilter::FilterType::NO_TYPE);
242 
243     OH_Drawing_Filter* tmpFilter_ = OH_Drawing_FilterCreate();
244     EXPECT_NE(cFilter_, nullptr);
245     EXPECT_NE(tmpFilter_, nullptr);
246     OH_Drawing_ColorFilter* cColorFilter_ = OH_Drawing_ColorFilterCreateBlendMode(0xFF0000FF, BLEND_MODE_COLOR);
247     OH_Drawing_FilterSetColorFilter(cFilter_, cColorFilter_);
248     OH_Drawing_PenSetFilter(pen9, cFilter_);
249     OH_Drawing_PenGetFilter(pen9, tmpFilter_);
250 
251     EXPECT_NE(CastToFilter(tmpFilter_)->GetColorFilter(), nullptr);
252     EXPECT_EQ(CastToFilter(tmpFilter_)->GetColorFilter()->GetType(), ColorFilter::FilterType::BLEND_MODE);
253     OH_Drawing_FilterDestroy(cFilter_);
254     OH_Drawing_FilterDestroy(tmpFilter_);
255     OH_Drawing_ColorFilterDestroy(cColorFilter_);
256     OH_Drawing_ColorFilterDestroy(colorFilterTmp);
257     OH_Drawing_PenDestroy(pen9);
258 }
259 /*
260  * @tc.name: NativeDrawingPenTest_PenSetShadowLayer011
261  * @tc.desc: gets the filter from a pen.
262  * @tc.size  : MediumTest
263  * @tc.type  : Function
264  * @tc.level : Level 1
265  */
266 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetShadowLayer011, Function | MediumTest | Level1)
267 {
268     // blurRadius:3.f, offset:(-3.f, 3.f), shadowColor:green
269     OH_Drawing_ShadowLayer* shadowLayer = OH_Drawing_ShadowLayerCreate(3.f, -3.f, 3.f, 0xFF00FF00);
270     EXPECT_NE(shadowLayer, nullptr);
271     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
272     OH_Drawing_PenSetShadowLayer(nullptr, shadowLayer);
273     OH_Drawing_PenSetShadowLayer(pen, nullptr);
274     OH_Drawing_PenSetShadowLayer(pen, shadowLayer);
275     OH_Drawing_ShadowLayerDestroy(shadowLayer);
276     OH_Drawing_PenDestroy(pen);
277 }
278 } // namespace Drawing
279 } // namespace Rosen
280 } // namespace OHOS