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