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