• 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 "drawing_color.h"
17 #include "drawing_color_filter.h"
18 #include "drawing_error_code.h"
19 #include "drawing_filter.h"
20 #include "drawing_pen.h"
21 #include "drawing_point.h"
22 #include "drawing_shader_effect.h"
23 #include "drawing_shadow_layer.h"
24 #include "drawing_types.h"
25 #include "gtest/gtest.h"
26 
27 #include "effect/color_filter.h"
28 #include "effect/filter.h"
29 #include "drawing_path.h"
30 #include "drawing_rect.h"
31 #include "drawing_matrix.h"
32 
33 using namespace testing;
34 using namespace testing::ext;
35 
36 namespace OHOS {
37 namespace Rosen {
38 namespace Drawing {
39 class NativeDrawingPenTest : public testing::Test {
40 public:
41     static void SetUpTestCase();
42     static void TearDownTestCase();
43     void SetUp() override;
44     void TearDown() override;
45 };
46 
SetUpTestCase()47 void NativeDrawingPenTest::SetUpTestCase() {}
TearDownTestCase()48 void NativeDrawingPenTest::TearDownTestCase() {}
SetUp()49 void NativeDrawingPenTest::SetUp() {}
TearDown()50 void NativeDrawingPenTest::TearDown() {}
51 
CastToFilter(OH_Drawing_Filter * cFilter)52 static Filter* CastToFilter(OH_Drawing_Filter* cFilter)
53 {
54     return reinterpret_cast<Filter*>(cFilter);
55 }
56 
57 /*
58  * @tc.name: NativeDrawingPenTest_penCreate001
59  * @tc.desc: test for create drawing_pen.
60  * @tc.type: FUNC
61  * @tc.require: AR000GTO5R
62  */
63 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penCreate001, TestSize.Level1)
64 {
65     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
66     EXPECT_EQ(pen == nullptr, false);
67     OH_Drawing_PenDestroy(pen);
68 }
69 
70 /*
71  * @tc.name: NativeDrawingPenTest_penSetAntiAlias002
72  * @tc.desc: test for the get and set methods about AntiAlias for a pen.
73  * @tc.type: FUNC
74  * @tc.require: AR000GTO5R
75  */
76 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetAntiAlias002, TestSize.Level1)
77 {
78     OH_Drawing_Pen* pen1 = OH_Drawing_PenCreate();
79     OH_Drawing_PenSetAntiAlias(pen1, true);
80     EXPECT_EQ(OH_Drawing_PenIsAntiAlias(pen1), true);
81     OH_Drawing_PenSetAntiAlias(pen1, false);
82     EXPECT_EQ(OH_Drawing_PenIsAntiAlias(pen1), false);
83     OH_Drawing_PenDestroy(pen1);
84 }
85 
86 /*
87  * @tc.name: NativeDrawingPenTest_penSetColor003
88  * @tc.desc: test for the get and set methods about the color for a pen.
89  * @tc.type: FUNC
90  * @tc.require: AR000GTO5R
91  */
92 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetColor003, TestSize.Level1)
93 {
94     OH_Drawing_Pen* pen2 = OH_Drawing_PenCreate();
95     OH_Drawing_PenSetColor(pen2, OH_Drawing_ColorSetArgb(0xFF, 0xFF, 0x00, 0x00));
96     EXPECT_EQ(OH_Drawing_PenGetColor(pen2), 0xFFFF0000);
97     OH_Drawing_PenDestroy(pen2);
98 }
99 
100 /*
101  * @tc.name: NativeDrawingPenTest_penSetWidth004
102  * @tc.desc: test for the get and set methods about the width for a pen.
103  * @tc.type: FUNC
104  * @tc.require: AR000GTO5R
105  */
106 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetWidth004, TestSize.Level1)
107 {
108     OH_Drawing_Pen* pen3 = OH_Drawing_PenCreate();
109     OH_Drawing_PenSetWidth(pen3, 10);
110     EXPECT_EQ(OH_Drawing_PenGetWidth(pen3), 10);
111     OH_Drawing_PenDestroy(pen3);
112 }
113 
114 /*
115  * @tc.name: NativeDrawingPenTest_penSetMiterLimit005
116  * @tc.desc: test for the get and set methods about the miterLimit for a pen.
117  * @tc.type: FUNC
118  * @tc.require: AR000GTO5R
119  */
120 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetMiterLimit005, TestSize.Level1)
121 {
122     OH_Drawing_Pen* pen4 = OH_Drawing_PenCreate();
123     OH_Drawing_PenSetMiterLimit(pen4, 5);
124     EXPECT_EQ(OH_Drawing_PenGetMiterLimit(pen4), 5);
125     OH_Drawing_PenDestroy(pen4);
126 }
127 
128 /*
129  * @tc.name: NativeDrawingPenTest_penSetCap006
130  * @tc.desc: test for the get and set methods about the line cap style for a pen.
131  * @tc.type: FUNC
132  * @tc.require: AR000GTO5R
133  */
134 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetCap006, TestSize.Level1)
135 {
136     OH_Drawing_Pen* pen5 = OH_Drawing_PenCreate();
137     EXPECT_EQ(OH_Drawing_PenGetCap(nullptr), OH_Drawing_PenLineCapStyle::LINE_FLAT_CAP);
138     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
139     OH_Drawing_PenSetCap(pen5, OH_Drawing_PenLineCapStyle::LINE_SQUARE_CAP);
140     EXPECT_EQ(OH_Drawing_PenGetCap(pen5), OH_Drawing_PenLineCapStyle::LINE_SQUARE_CAP);
141     OH_Drawing_PenSetCap(pen5, OH_Drawing_PenLineCapStyle::LINE_FLAT_CAP);
142     EXPECT_EQ(OH_Drawing_PenGetCap(pen5), OH_Drawing_PenLineCapStyle::LINE_FLAT_CAP);
143     OH_Drawing_PenSetCap(pen5, OH_Drawing_PenLineCapStyle::LINE_ROUND_CAP);
144     EXPECT_EQ(OH_Drawing_PenGetCap(pen5), OH_Drawing_PenLineCapStyle::LINE_ROUND_CAP);
145     OH_Drawing_PenDestroy(pen5);
146 }
147 
148 /*
149  * @tc.name: NativeDrawingPenTest_penSetJoin007
150  * @tc.desc: test for the get and set methods about the line join style for a pen.
151  * @tc.type: FUNC
152  * @tc.require: AR000GTO5R
153  */
154 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetJoin007, TestSize.Level1)
155 {
156     OH_Drawing_Pen* pen6 = OH_Drawing_PenCreate();
157     OH_Drawing_PenSetJoin(pen6, OH_Drawing_PenLineJoinStyle::LINE_ROUND_JOIN);
158     EXPECT_EQ(OH_Drawing_PenGetJoin(pen6), OH_Drawing_PenLineJoinStyle::LINE_ROUND_JOIN);
159     OH_Drawing_PenSetJoin(pen6, OH_Drawing_PenLineJoinStyle::LINE_MITER_JOIN);
160     EXPECT_EQ(OH_Drawing_PenGetJoin(pen6), OH_Drawing_PenLineJoinStyle::LINE_MITER_JOIN);
161     OH_Drawing_PenSetJoin(pen6, OH_Drawing_PenLineJoinStyle::LINE_BEVEL_JOIN);
162     EXPECT_EQ(OH_Drawing_PenGetJoin(pen6), OH_Drawing_PenLineJoinStyle::LINE_BEVEL_JOIN);
163     OH_Drawing_PenDestroy(pen6);
164 }
165 
166 /*
167  * @tc.name: NativeDrawingPenTest_penSetBlendMode008
168  * @tc.desc: test for the get and set methods about the line join style for a pen.
169  * @tc.type: FUNC
170  * @tc.require: AR000GTO5R
171  */
172 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penSetBlendMode008, TestSize.Level1)
173 {
174     OH_Drawing_Pen* pen8 = OH_Drawing_PenCreate();
175     EXPECT_NE(pen8, nullptr);
176     OH_Drawing_PenSetBlendMode(pen8, OH_Drawing_BlendMode::BLEND_MODE_SRC);
177     OH_Drawing_PenSetBlendMode(nullptr, OH_Drawing_BlendMode::BLEND_MODE_SRC);
178     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
179     OH_Drawing_PenSetBlendMode(pen8, (OH_Drawing_BlendMode)(BLEND_MODE_LUMINOSITY + 1));
180     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE);
181     OH_Drawing_PenSetBlendMode(pen8, (OH_Drawing_BlendMode)(BLEND_MODE_CLEAR - 1));
182     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE);
183     OH_Drawing_PenDestroy(pen8);
184 }
185 
186 /*
187  * @tc.name: NativeDrawingPenTest_penReset009
188  * @tc.desc: test for the reset method for a pen.
189  * @tc.type: FUNC
190  * @tc.require: AR000GTO5R
191  */
192 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penReset009, TestSize.Level1)
193 {
194     OH_Drawing_Pen* pen9 = OH_Drawing_PenCreate();
195     OH_Drawing_PenSetAntiAlias(pen9, true);
196     OH_Drawing_PenSetColor(pen9, OH_Drawing_ColorSetArgb(0xFF, 0xFF, 0x00, 0x00));
197     OH_Drawing_PenSetWidth(pen9, 10);
198     OH_Drawing_PenSetMiterLimit(pen9, 5);
199     OH_Drawing_PenSetCap(pen9, OH_Drawing_PenLineCapStyle::LINE_ROUND_CAP);
200     OH_Drawing_PenSetJoin(pen9, OH_Drawing_PenLineJoinStyle::LINE_BEVEL_JOIN);
201 
202     OH_Drawing_PenReset(pen9);
203     EXPECT_EQ(OH_Drawing_PenIsAntiAlias(pen9), false);
204     EXPECT_EQ(OH_Drawing_PenGetColor(pen9), 0xFF000000);
205     EXPECT_EQ(OH_Drawing_PenGetWidth(pen9), 0);
206     EXPECT_EQ(OH_Drawing_PenGetMiterLimit(pen9), -1);
207     EXPECT_EQ(OH_Drawing_PenGetCap(pen9), OH_Drawing_PenLineCapStyle::LINE_FLAT_CAP);
208     EXPECT_EQ(OH_Drawing_PenGetJoin(pen9), OH_Drawing_PenLineJoinStyle::LINE_MITER_JOIN);
209 
210     OH_Drawing_PenDestroy(pen9);
211 }
212 
213 /*
214  * @tc.name: NativeDrawingPenTest_penGetFilter010
215  * @tc.desc: gets the filter from a pen.
216  * @tc.type: FUNC
217  * @tc.require: AR000GTO5R
218  */
219 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_penGetFilter010, TestSize.Level1)
220 {
221     OH_Drawing_Pen* pen9 = OH_Drawing_PenCreate();
222     EXPECT_NE(pen9, nullptr);
223     OH_Drawing_Filter* cFilter_ = OH_Drawing_FilterCreate();
224     EXPECT_NE(cFilter_, nullptr);
225 
226     OH_Drawing_ColorFilter* colorFilterTmp = OH_Drawing_ColorFilterCreateLinearToSrgbGamma();
227     OH_Drawing_FilterSetColorFilter(cFilter_, nullptr);
228     OH_Drawing_FilterGetColorFilter(cFilter_, colorFilterTmp);
229     EXPECT_EQ((reinterpret_cast<ColorFilter*>(colorFilterTmp))->GetType(), ColorFilter::FilterType::NO_TYPE);
230 
231     OH_Drawing_Filter* tmpFilter_ = OH_Drawing_FilterCreate();
232     EXPECT_NE(cFilter_, nullptr);
233     EXPECT_NE(tmpFilter_, nullptr);
234     OH_Drawing_ColorFilter* cColorFilter_ = OH_Drawing_ColorFilterCreateBlendMode(0xFF0000FF, BLEND_MODE_COLOR);
235     OH_Drawing_FilterSetColorFilter(cFilter_, cColorFilter_);
236     OH_Drawing_PenSetFilter(pen9, cFilter_);
237     OH_Drawing_PenGetFilter(pen9, tmpFilter_);
238 
239     EXPECT_NE(CastToFilter(tmpFilter_)->GetColorFilter(), nullptr);
240     EXPECT_EQ(CastToFilter(tmpFilter_)->GetColorFilter()->GetType(), ColorFilter::FilterType::BLEND_MODE);
241     OH_Drawing_FilterDestroy(cFilter_);
242     OH_Drawing_FilterDestroy(tmpFilter_);
243     OH_Drawing_ColorFilterDestroy(cColorFilter_);
244     OH_Drawing_ColorFilterDestroy(colorFilterTmp);
245     OH_Drawing_PenDestroy(pen9);
246 }
247 
248 /*
249  * @tc.name: NativeDrawingPenTest_PenSetShadowLayer011
250  * @tc.desc: test for the set methods of pen.
251  * @tc.type: FUNC
252  * @tc.require: AR000GTO5R
253  */
254 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetShadowLayer011, TestSize.Level1)
255 {
256     // blurRadius:3.f, offset:(-3.f, 3.f), shadowColor:green
257     OH_Drawing_ShadowLayer* shadowLayer = OH_Drawing_ShadowLayerCreate(3.f, -3.f, 3.f, 0xFF00FF00);
258     EXPECT_NE(shadowLayer, nullptr);
259     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
260     OH_Drawing_PenSetShadowLayer(nullptr, shadowLayer);
261     OH_Drawing_PenSetShadowLayer(pen, nullptr);
262     OH_Drawing_PenSetShadowLayer(pen, shadowLayer);
263     OH_Drawing_ShadowLayerDestroy(shadowLayer);
264     OH_Drawing_PenDestroy(pen);
265 }
266 
267 /*
268  * @tc.name: NativeDrawingPenTest_PenCopy012
269  * @tc.desc: test for creates an <b>OH_Drawing_Pen</b> copy object.
270  * @tc.type: FUNC
271  * @tc.require: AR000GTO5R
272  */
273 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenCopy012, TestSize.Level1)
274 {
275     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
276     EXPECT_NE(OH_Drawing_PenCopy(pen), nullptr);
277     pen = nullptr;
278     EXPECT_EQ(OH_Drawing_PenCopy(pen), nullptr);
279     OH_Drawing_PenDestroy(pen);
280 }
281 
282 /*
283  * @tc.name: NativeDrawingPenTest_PenGetFillPath013
284  * @tc.desc: test for gets the filled equivalent of the src path.
285  * @tc.type: FUNC
286  * @tc.require: AR000GTO5R
287  */
288 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenGetFillPath013, TestSize.Level1)
289 {
290     OH_Drawing_Pen *pen = OH_Drawing_PenCreate();
291     OH_Drawing_PenSetWidth(pen, 10); // 10: width of pen
292     OH_Drawing_Path *dst = OH_Drawing_PathCreate();
293     OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 10, 20, 20); // rect left[10], top[10], right[20], bottom[20]
294     OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
295     EXPECT_FALSE(OH_Drawing_PenGetFillPath(pen, nullptr, dst, rect, matrix));
296 
297     OH_Drawing_Path *src = OH_Drawing_PathCreate();
298     OH_Drawing_PathMoveTo(src, 10, 10); // 10: point's x, 10 point's y
299     OH_Drawing_PathLineTo(src, 20, 20); // 20: point's x, 20 point's y
300     EXPECT_TRUE(OH_Drawing_PenGetFillPath(pen, src, dst, rect, matrix));
301 
302     OH_Drawing_PenDestroy(pen);
303     OH_Drawing_PathDestroy(src);
304     OH_Drawing_PathDestroy(dst);
305     OH_Drawing_RectDestroy(rect);
306     OH_Drawing_MatrixDestroy(matrix);
307 }
308 
309 /*
310  * @tc.name: NativeDrawingPenTest_PenIsAntiAlias
311  * @tc.desc: test for OH_Drawing_PenIsAntiAlias.
312  * @tc.type: FUNC
313  * @tc.require: AR000GTO5R
314  */
315 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenIsAntiAlias, TestSize.Level1)
316 {
317     ASSERT_TRUE(OH_Drawing_PenIsAntiAlias(nullptr) == false);
318     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
319 }
320 
321 /*
322  * @tc.name: NativeDrawingPenTest_PenSetAntiAlias
323  * @tc.desc: test for OH_Drawing_PenSetAntiAlias.
324  * @tc.type: FUNC
325  * @tc.require: AR000GTO5R
326  */
327 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetAntiAlias, TestSize.Level1)
328 {
329     OH_Drawing_PenSetAntiAlias(nullptr, false);
330     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
331 }
332 
333 /*
334  * @tc.name: NativeDrawingPenTest_PenGetColor
335  * @tc.desc: test for OH_Drawing_PenGetColor.
336  * @tc.type: FUNC
337  * @tc.require: AR000GTO5R
338  */
339 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenGetColor, TestSize.Level1)
340 {
341     ASSERT_TRUE(OH_Drawing_PenGetColor(nullptr) == 0);
342     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
343 }
344 
345 /*
346  * @tc.name: NativeDrawingPenTest_PenSetColor
347  * @tc.desc: test for OH_Drawing_PenSetColor.
348  * @tc.type: FUNC
349  * @tc.require: AR000GTO5R
350  */
351 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetColor, TestSize.Level1)
352 {
353     OH_Drawing_PenSetColor(nullptr, 0xFFFFFFFF);
354     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
355 }
356 
357 /*
358  * @tc.name: NativeDrawingPenTest_PenGetAlpha
359  * @tc.desc: test for OH_Drawing_PenGetAlpha.
360  * @tc.type: FUNC
361  * @tc.require: AR000GTO5R
362  */
363 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenGetAlpha, TestSize.Level1)
364 {
365     ASSERT_TRUE(OH_Drawing_PenGetAlpha(nullptr) == 0);
366     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
367 }
368 
369 /*
370  * @tc.name: NativeDrawingPenTest_PenGetAlpha002
371  * @tc.desc: test for OH_Drawing_PenGetAlpha.
372  * @tc.type: FUNC
373  * @tc.require: AR000GTO5R
374  */
375 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenGetAlpha002, TestSize.Level1)
376 {
377     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
378     OH_Drawing_PenSetAlpha(pen, 0xFF);
379     ASSERT_TRUE(OH_Drawing_PenGetAlpha(pen) == 0xFF);
380     OH_Drawing_PenDestroy(pen);
381 }
382 
383 /*
384  * @tc.name: NativeDrawingPenTest_PenSetAlpha
385  * @tc.desc: test for OH_Drawing_PenSetAlpha.
386  * @tc.type: FUNC
387  * @tc.require: AR000GTO5R
388  */
389 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetAlpha, TestSize.Level1)
390 {
391     OH_Drawing_PenSetAlpha(nullptr, 0xFF);
392     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
393 }
394 
395 /*
396  * @tc.name: NativeDrawingPenTest_PenSetAlpha
397  * @tc.desc: test for OH_Drawing_PenSetAlpha.
398  * @tc.type: FUNC
399  * @tc.require: AR000GTO5R
400  */
401 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetAlpha002, TestSize.Level1)
402 {
403     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
404     OH_Drawing_PenSetAlpha(pen, 0xFF);
405     EXPECT_EQ(OH_Drawing_PenGetAlpha(pen), 0xFF);
406     OH_Drawing_PenDestroy(pen);
407 }
408 
409 /*
410  * @tc.name: NativeDrawingPenTest_PenGetWidth
411  * @tc.desc: test for OH_Drawing_PenGetWidth.
412  * @tc.type: FUNC
413  * @tc.require: AR000GTO5R
414  */
415 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenGetWidth, TestSize.Level1)
416 {
417     EXPECT_EQ(OH_Drawing_PenGetWidth(nullptr), 0);
418     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
419 }
420 
421 /*
422  * @tc.name: NativeDrawingPenTest_PenSetWidth
423  * @tc.desc: test for OH_Drawing_PenSetWidth.
424  * @tc.type: FUNC
425  * @tc.require: AR000GTO5R
426  */
427 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetWidth, TestSize.Level1)
428 {
429     OH_Drawing_PenSetWidth(nullptr, 10);
430     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
431 }
432 
433 /*
434  * @tc.name: NativeDrawingPenTest_PenGetMiterLimit
435  * @tc.desc: test for OH_Drawing_PenGetMiterLimit.
436  * @tc.type: FUNC
437  * @tc.require: AR000GTO5R
438  */
439 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenGetMiterLimit, TestSize.Level1)
440 {
441     OH_Drawing_PenGetMiterLimit(nullptr);
442     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
443 }
444 
445 /*
446  * @tc.name: NativeDrawingPenTest_PenSetMiterLimit
447  * @tc.desc: test for OH_Drawing_PenSetMiterLimit.
448  * @tc.type: FUNC
449  * @tc.require: AR000GTO5R
450  */
451 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetMiterLimit, TestSize.Level1)
452 {
453     OH_Drawing_PenSetMiterLimit(nullptr, 0);
454     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
455 }
456 
457 /*
458  * @tc.name: NativeDrawingPenTest_PenSetCap
459  * @tc.desc: test for OH_Drawing_PenSetCap.
460  * @tc.type: FUNC
461  * @tc.require: AR000GTO5R
462  */
463 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetCap, TestSize.Level1)
464 {
465     OH_Drawing_PenSetCap(nullptr, OH_Drawing_PenLineCapStyle::LINE_FLAT_CAP);
466     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
467 }
468 
469 /*
470  * @tc.name: NativeDrawingPenTest_PenGetJoin001
471  * @tc.desc: test for OH_Drawing_PenGetJoin.
472  * @tc.type: FUNC
473  * @tc.require: AR000GTO5R
474  */
475 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenGetJoin001, TestSize.Level1)
476 {
477     ASSERT_TRUE(OH_Drawing_PenGetJoin(nullptr) == OH_Drawing_PenLineJoinStyle::LINE_MITER_JOIN);
478     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
479 }
480 
481 /*
482  * @tc.name: NativeDrawingPenTest_PenSetJoin001
483  * @tc.desc: test for OH_Drawing_PenSetJoin.
484  * @tc.type: FUNC
485  * @tc.require: AR000GTO5R
486  */
487 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetJoin001, TestSize.Level1)
488 {
489     OH_Drawing_PenSetJoin(nullptr, OH_Drawing_PenLineJoinStyle::LINE_MITER_JOIN);
490     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
491 }
492 
493 /*
494  * @tc.name: NativeDrawingPenTest_PenSetShaderEffect001
495  * @tc.desc: test for OH_Drawing_PenSetShaderEffect.
496  * @tc.type: FUNC
497  * @tc.require: AR000GTO5R
498  */
499 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetShaderEffect001, TestSize.Level1)
500 {
501     OH_Drawing_PenSetShaderEffect(nullptr, nullptr);
502     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
503 }
504 
505 /*
506  * @tc.name: NativeDrawingPenTest_PenSetShaderEffect002
507  * @tc.desc: test for OH_Drawing_PenSetShaderEffect.
508  * @tc.type: FUNC
509  * @tc.require: AR000GTO5R
510  */
511 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetShaderEffect002, TestSize.Level1)
512 {
513     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
514     OH_Drawing_Point* point = OH_Drawing_PointCreate(100, 100); // point 100,100
515     uint32_t colors[] = { 0xFFFF0000, 0xFF00FF00, 0xFF0000FF };
516     float pos[] = { 0, 0.5, 1.0 };
517     OH_Drawing_ShaderEffect* effect =
518         OH_Drawing_ShaderEffectCreateRadialGradient(point, 100, colors, pos, 3, OH_Drawing_TileMode::CLAMP);
519     OH_Drawing_PenSetShaderEffect(pen, effect);
520     OH_Drawing_PointDestroy(point);
521     OH_Drawing_ShaderEffectDestroy(effect);
522     OH_Drawing_PenDestroy(pen);
523 }
524 
525 /*
526  * @tc.name: NativeDrawingPenTest_PenSetShadowLayer001
527  * @tc.desc: test for OH_Drawing_PenSetShadowLayer.
528  * @tc.type: FUNC
529  * @tc.require: AR000GTO5R
530  */
531 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetShadowLayer001, TestSize.Level1)
532 {
533     OH_Drawing_PenSetShadowLayer(nullptr, nullptr);
534     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
535 }
536 
537 /*
538  * @tc.name: NativeDrawingPenTest_PenSetShadowLayer002
539  * @tc.desc: test for OH_Drawing_PenSetShadowLayer.
540  * @tc.type: FUNC
541  * @tc.require: AR000GTO5R
542  */
543 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetShadowLayer002, TestSize.Level1)
544 {
545     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
546     float blurRadius = 10;
547     float x = 100;
548     float y = 100;
549     uint32_t color = 0xFF00FF00;
550     OH_Drawing_ShadowLayer* shadowLayer = OH_Drawing_ShadowLayerCreate(blurRadius, x, y, color);
551     OH_Drawing_PenSetShadowLayer(pen, shadowLayer);
552     OH_Drawing_ShadowLayerDestroy(shadowLayer);
553     OH_Drawing_PenDestroy(pen);
554 }
555 
556 /*
557  * @tc.name: NativeDrawingPenTest_PenSetFilter001
558  * @tc.desc: OH_Drawing_PenSetFilter.
559  * @tc.type: FUNC
560  * @tc.require: AR000GTO5R
561  */
562 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetFilter001, TestSize.Level1)
563 {
564     OH_Drawing_PenSetFilter(nullptr, nullptr);
565     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
566 }
567 
568 /*
569  * @tc.name: NativeDrawingPenTest_PenSetFilter002
570  * @tc.desc: test for OH_Drawing_PenSetFilter.
571  * @tc.type: FUNC
572  * @tc.require: AR000GTO5R
573  */
574 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetFilter002, TestSize.Level1)
575 {
576     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
577     OH_Drawing_PenSetFilter(pen, nullptr);
578     OH_Drawing_Filter* cFilter = nullptr;
579     OH_Drawing_PenGetFilter(pen, cFilter);
580     EXPECT_EQ(cFilter, nullptr);
581     OH_Drawing_PenDestroy(pen);
582 }
583 
584 /*
585  * @tc.name: NativeDrawingPenTest_PenSetFilter003
586  * @tc.desc: test for OH_Drawing_PenSetFilter.
587  * @tc.type: FUNC
588  * @tc.require: AR000GTO5R
589  */
590 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenSetFilter003, TestSize.Level1)
591 {
592     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
593     OH_Drawing_Filter* filter = OH_Drawing_FilterCreate();
594     OH_Drawing_PenSetFilter(pen, filter);
595     OH_Drawing_Filter* cFilter = nullptr;
596     OH_Drawing_PenGetFilter(pen, cFilter);
597     ASSERT_TRUE(cFilter == nullptr);
598     OH_Drawing_FilterDestroy(filter);
599     OH_Drawing_PenDestroy(pen);
600 }
601 
602 /*
603  * @tc.name: NativeDrawingPenTest_PenGetFilter001
604  * @tc.desc: test for OH_Drawing_PenGetFilter.
605  * @tc.type: FUNC
606  * @tc.require: AR000GTO5R
607  */
608 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenGetFilter001, TestSize.Level1)
609 {
610     OH_Drawing_PenGetFilter(nullptr, nullptr);
611     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
612 }
613 
614 /*
615  * @tc.name: NativeDrawingPenTest_PenGetFilter001
616  * @tc.desc: test for OH_Drawing_PenGetFilter.
617  * @tc.type: FUNC
618  * @tc.require: AR000GTO5R
619  */
620 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenGetFilter002, TestSize.Level1)
621 {
622     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
623     OH_Drawing_PenGetFilter(pen, nullptr);
624     OH_Drawing_PenDestroy(pen);
625 }
626 
627 /*
628  * @tc.name: NativeDrawingPenTest_PenGetFilter001
629  * @tc.desc: test for OH_Drawing_PenGetFilter.
630  * @tc.type: FUNC
631  * @tc.require: AR000GTO5R
632  */
633 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenGetFilter003, TestSize.Level1)
634 {
635     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
636     OH_Drawing_Filter* filter = nullptr;
637     OH_Drawing_PenGetFilter(pen, filter);
638     ASSERT_TRUE(filter == nullptr);
639     OH_Drawing_FilterDestroy(filter);
640     OH_Drawing_PenDestroy(pen);
641 }
642 
643 /*
644  * @tc.name: NativeDrawingPenTest_PenReset
645  * @tc.desc: test for OH_Drawing_PenReset.
646  * @tc.type: FUNC
647  * @tc.require: AR000GTO5R
648  */
649 HWTEST_F(NativeDrawingPenTest, NativeDrawingPenTest_PenReset, TestSize.Level1)
650 {
651     OH_Drawing_PenReset(nullptr);
652     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
653 }
654 
655 } // namespace Drawing
656 } // namespace Rosen
657 } // namespace OHOS