1 /*
2 * Copyright (c) 2020-2022 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, software
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 "components/root_view.h"
17 #include "components/ui_canvas.h"
18 #include "components/ui_view_group.h"
19 #include "components/ui_view_group.h"
20
21 #include <climits>
22 #include <gtest/gtest.h>
23 #include "test_resource_config.h"
24 using namespace testing::ext;
25 namespace OHOS {
26 namespace {
27 const int16_t POS_X = 50;
28 const int16_t POS_Y = 100;
29 const uint16_t WIDTH = 100;
30 const uint16_t HEIGHT = 100;
31 const int16_t START1_X = 10;
32 const int16_t START1_Y = 20;
33 const int16_t LINE1_X = 40;
34 const int16_t LINE1_Y = 100;
35 const int16_t LINE2_X = 50;
36 const int16_t LINE2_Y = 120;
37 const int16_t CENTER_X = 150;
38 const int16_t CENTER_Y = 150;
39 const int16_t RADIUS = 50;
40 const int16_t START_ANGLE = 30;
41 const int16_t END_ANGLE = 250;
42 const int16_t RECT_X = 250;
43 const int16_t RECT_Y = 50;
44 const int16_t RECT_WIDTH = 100;
45 const int16_t RECT_HEIGHT = 50;
46 const float LINE_OFFSET1 = 10.0;
47 const float LINE_OFFSET2 = 50.0;
48 const float LINE_OFFSET3 = 150.0;
49 const float MITERLIMIT1 = 11.05;
50 const float MITERLIMIT2 = 4.6;
51 const float MITERLIMIT3 = -5.6;
52 const int16_t IMAGE_X = 20;
53 const int16_t IMAGE_Y = 10;
54 const uint8_t FONT_SIZE = 15;
55 const int16_t LETTER_SPACE = 2;
56 const float SCALE_X = 0.5;
57 const float SCALE_Y = 0.5;
58 const float SHEAR_X = -0.5;
59 const float SHEAR_Y = 0.5;
60 const float TRANSLATE_X = 30;
61 const float TRANSLATE_Y = 10;
62 const float GLOBALALPHA = 0.5;
63 const int16_t DOUBLENUMBER = 2;
64 const double START_X = 180.0;
65 const double START_Y = 140.0;
66 const double START_R = 10.0;
67 const double END_X = 150.0;
68 const double END_Y = 100.0;
69 const double END_R = 80.0;
70 const float COLOR_STOP_0 = 0.0;
71 const float COLOR_STOP_1 = 0.3;
72 const float COLOR_STOP_2 = 0.6;
73 const float COLOR_STOP_3 = 1.0;
74 const float ROTATE = 10;
75 const int16_t LINE_X = 30;
76 const int16_t LINE_Y = 70;
77 }
78
79 class TestUICanvas : public UICanvas {
80 public:
TestUICanvas()81 TestUICanvas() {}
~TestUICanvas()82 virtual ~TestUICanvas() {}
83
GetPath() const84 const UICanvasVertices* GetPath() const
85 {
86 return vertices_;
87 }
88
GetStartPos() const89 Point GetStartPos() const
90 {
91 float x;
92 float y;
93 if (GetPath() != nullptr) {
94 vertices_->Rewind(0);
95 vertices_->GenerateVertex(&x, &y);
96 return { (int16_t)x, (int16_t)y };
97 } else {
98 return { COORD_MIN, COORD_MIN };
99 }
100 }
101
GetEndPos() const102 Point GetEndPos() const
103 {
104 float x;
105 float y;
106 if (GetPath() != nullptr) {
107 vertices_->LastVertex(&x, &y);
108 return { (int16_t)x, (int16_t)y };
109 } else {
110 return { COORD_MIN, COORD_MIN };
111 }
112 }
113 };
114
115 class UICanvasTest : public testing::Test {
116 public:
SetUpTestCase()117 static void SetUpTestCase() {}
TearDownTestCase()118 static void TearDownTestCase() {}
119 void SetUp();
120 void TearDown();
121 static Paint* paint_;
122 static TestUICanvas* canvas_;
123 };
124
125 Paint* UICanvasTest::paint_ = nullptr;
126 TestUICanvas* UICanvasTest::canvas_ = nullptr;
SetUp()127 void UICanvasTest::SetUp()
128 {
129 if (paint_ == nullptr) {
130 paint_ = new Paint();
131 }
132 if (canvas_ == nullptr) {
133 canvas_ = new TestUICanvas();
134 }
135 }
136
TearDown()137 void UICanvasTest::TearDown()
138 {
139 if (paint_ != nullptr) {
140 delete paint_;
141 paint_ = nullptr;
142 }
143 if (canvas_ != nullptr) {
144 delete canvas_;
145 canvas_ = nullptr;
146 }
147 }
148 /**
149 * @tc.name: UICanvasSetPaintStyle_001
150 * @tc.desc: Verify SetStyle function, equal.
151 * @tc.type: FUNC
152 * @tc.require: AR000DSMPV
153 */
154 HWTEST_F(UICanvasTest, UICanvasSetPaintStyle_001, TestSize.Level1)
155 {
156 if (paint_ == nullptr) {
157 EXPECT_EQ(1, 0);
158 return;
159 }
160 Paint::PaintStyle paintStyle = Paint::PaintStyle::FILL_STYLE;
161
162 paint_->SetStyle(Paint::PaintStyle::FILL_STYLE);
163 EXPECT_EQ(paint_->GetStyle(), paintStyle);
164 }
165
166 /**
167 * @tc.name: UICanvasSetStrokeWidth_001
168 * @tc.desc: Verify SetStrokeWidth function, equal.
169 * @tc.type: FUNC
170 * @tc.require: AR000DSMPV
171 */
172 HWTEST_F(UICanvasTest, UICanvasSetStrokeWidth_001, TestSize.Level1)
173 {
174 if (paint_ == nullptr) {
175 EXPECT_EQ(1, 0);
176 return;
177 }
178 paint_->SetStrokeWidth(WIDTH);
179 EXPECT_EQ(paint_->GetStrokeWidth(), WIDTH);
180 }
181
182 /**
183 * @tc.name: UICanvasSetStrokeColor_001
184 * @tc.desc: Verify SetStrokeColor function, equal.
185 * @tc.type: FUNC
186 * @tc.require: AR000DSMPV
187 */
188 HWTEST_F(UICanvasTest, UICanvasSetStrokeColor_001, TestSize.Level1)
189 {
190 if (paint_ == nullptr) {
191 EXPECT_EQ(1, 0);
192 return;
193 }
194 ColorType color = Color::Red();
195
196 paint_->SetStrokeColor(color);
197 EXPECT_EQ(paint_->GetStrokeColor().full, color.full);
198 }
199
200 /**
201 * @tc.name: UICanvasSetFillColor_001
202 * @tc.desc: Verify SetFillColor function, equal.
203 * @tc.type: FUNC
204 * @tc.require: AR000DSMPV
205 */
206 HWTEST_F(UICanvasTest, UICanvasSetFillColor_001, TestSize.Level1)
207 {
208 if (paint_ == nullptr) {
209 EXPECT_EQ(1, 0);
210 return;
211 }
212 ColorType color = Color::Red();
213
214 paint_->SetFillColor(color);
215 EXPECT_EQ(paint_->GetFillColor().full, color.full);
216 }
217
218 /**
219 * @tc.name: UICanvasSetOpacity_001
220 * @tc.desc: Verify SetOpacity function, equal.
221 * @tc.type: FUNC
222 * @tc.require: AR000DSMPV
223 */
224 HWTEST_F(UICanvasTest, UICanvasSetOpacity_001, TestSize.Level1)
225 {
226 if (paint_ == nullptr) {
227 EXPECT_EQ(1, 0);
228 return;
229 }
230 paint_->SetOpacity(OPA_OPAQUE);
231 EXPECT_EQ(paint_->GetOpacity(), OPA_OPAQUE);
232 }
233
234 /**
235 * @tc.name: UICanvasSetStartPosition_001
236 * @tc.desc: Verify SetStartPosition function, equal.
237 * @tc.type: FUNC
238 * @tc.require: AR000DSMPV
239 */
240 HWTEST_F(UICanvasTest, UICanvasSetStartPosition_001, TestSize.Level1)
241 {
242 if (canvas_ == nullptr) {
243 EXPECT_EQ(1, 0);
244 return;
245 }
246 canvas_->SetStartPosition({POS_X, POS_Y});
247 EXPECT_EQ(canvas_->GetStartPosition().x, POS_X);
248 EXPECT_EQ(canvas_->GetStartPosition().y, POS_Y);
249 }
250
251 /**
252 * @tc.name: UICanvasDrawLine_001
253 * @tc.desc: Verify DrawLine function, equal.
254 * @tc.type: FUNC
255 * @tc.require: AR000DSMPV
256 */
257 HWTEST_F(UICanvasTest, UICanvasDrawLine_001, TestSize.Level0)
258 {
259 if (canvas_ == nullptr) {
260 EXPECT_EQ(1, 0);
261 return;
262 }
263 RootView* rootView = RootView::GetInstance();
264 UIViewGroup* viewGroup = static_cast<UIViewGroup*>(rootView);
265 Paint paint;
266 Point startPoint = { 0, 50 };
267 Point endPoint = { 50, 100 };
268
269 viewGroup->SetPosition(0, 0);
270 viewGroup->SetWidth(WIDTH);
271 viewGroup->SetHeight(HEIGHT);
272 canvas_->DrawLine(startPoint, endPoint, paint);
273 viewGroup->Add(canvas_);
274 EXPECT_EQ(canvas_->GetStartPosition().x, endPoint.x);
275 EXPECT_EQ(canvas_->GetStartPosition().y, endPoint.y);
276 viewGroup->Remove(canvas_);
277 }
278
279 /**
280 * @tc.name: UICanvasDrawCurve_001
281 * @tc.desc: Verify DrawCurve function, equal.
282 * @tc.type: FUNC
283 * @tc.require: AR000DSMPV
284 */
285 HWTEST_F(UICanvasTest, UICanvasDrawCurve_001, TestSize.Level0)
286 {
287 if (canvas_ == nullptr) {
288 EXPECT_EQ(1, 0);
289 return;
290 }
291 RootView* rootView = RootView::GetInstance();
292 UIViewGroup* viewGroup = static_cast<UIViewGroup*>(rootView);
293 Paint paint;
294 Point startPoint = { 100, 100 };
295 Point endPoint = { 150, 200 };
296 Point control1Point = { 150, 100 };
297 Point control2Point = { 150, 100 };
298
299 viewGroup->SetPosition(0, 0);
300 viewGroup->SetWidth(WIDTH);
301 viewGroup->SetHeight(HEIGHT);
302 canvas_->DrawCurve(startPoint, control1Point, control2Point, endPoint, paint);
303 viewGroup->Add(canvas_);
304 EXPECT_EQ(canvas_->GetStartPosition().x, endPoint.x);
305 EXPECT_EQ(canvas_->GetStartPosition().y, endPoint.y);
306 viewGroup->Remove(canvas_);
307 }
308
309 #if defined(ENABLE_CANVAS_EXTEND) && ENABLE_CANVAS_EXTEND
310 /**
311 * @tc.name: UICanvasBeginPath_001
312 * @tc.desc: Verify BeginPath function, equal.
313 * @tc.type: FUNC
314 * @tc.require: AR000EVN8V
315 */
316 HWTEST_F(UICanvasTest, UICanvasBeginPath_001, TestSize.Level0)
317 {
318 if (canvas_ == nullptr) {
319 EXPECT_EQ(1, 0);
320 return;
321 }
322
323 EXPECT_EQ(canvas_->GetPath(), nullptr);
324 canvas_->BeginPath();
325 EXPECT_NE(canvas_->GetPath(), nullptr);
326 }
327
328 /**
329 * @tc.name: UICanvasMoveTo_001
330 * @tc.desc: Verify MoveTo function, equal.
331 * @tc.type: FUNC
332 * @tc.require: AR000EVN8V
333 */
334 HWTEST_F(UICanvasTest, UICanvasMoveTo_001, TestSize.Level0)
335 {
336 if (canvas_ == nullptr) {
337 EXPECT_EQ(1, 0);
338 return;
339 }
340 canvas_->BeginPath();
341 canvas_->MoveTo({START1_X, START1_Y});
342 Point start = canvas_->GetStartPos();
343 EXPECT_EQ(start.x, START1_X);
344 EXPECT_EQ(start.y, START1_Y);
345
346 Point end = canvas_->GetEndPos();
347 EXPECT_EQ(end.x, START1_X);
348 EXPECT_EQ(end.y, START1_Y);
349 }
350
351 /**
352 * @tc.name: UICanvasLineTo_001
353 * @tc.desc: Verify LineTo function, equal.
354 * @tc.type: FUNC
355 * @tc.require: AR000EVN8V
356 */
357 HWTEST_F(UICanvasTest, UICanvasLineTo_001, TestSize.Level0)
358 {
359 if (canvas_ == nullptr) {
360 EXPECT_EQ(1, 0);
361 return;
362 }
363 canvas_->BeginPath();
364 canvas_->LineTo({LINE1_X, LINE1_Y});
365 Point start = canvas_->GetStartPos();
366 EXPECT_EQ(start.x, LINE1_X);
367 EXPECT_EQ(start.y, LINE1_Y);
368
369 Point end = canvas_->GetEndPos();
370 EXPECT_EQ(end.x, LINE1_X);
371 EXPECT_EQ(end.y, LINE1_Y);
372 }
373 #endif
374 /**
375 * @tc.name: UICanvasLineTo_002
376 * @tc.desc: Verify LineTo function, equal.
377 * @tc.type: FUNC
378 * @tc.require: AR000EVN8V
379 */
380 HWTEST_F(UICanvasTest, UICanvasLineTo_002, TestSize.Level1)
381 {
382 if (canvas_ == nullptr) {
383 EXPECT_EQ(1, 0);
384 return;
385 }
386 canvas_->BeginPath();
387 canvas_->MoveTo({START1_X, START1_Y});
388 canvas_->LineTo({LINE1_X, LINE1_Y});
389 Point start = canvas_->GetStartPos();
390 EXPECT_EQ(start.x, START1_X);
391 EXPECT_EQ(start.y, START1_Y);
392
393 Point end = canvas_->GetEndPos();
394 EXPECT_EQ(end.x, LINE1_X);
395 EXPECT_EQ(end.y, LINE1_Y);
396
397 canvas_->LineTo({LINE2_X, LINE2_Y});
398 end = canvas_->GetEndPos();
399 EXPECT_EQ(end.x, LINE2_X);
400 EXPECT_EQ(end.y, LINE2_Y);
401 }
402
403 #if defined(GRAPHIC_ENABLE_ARC_FLAG) && GRAPHIC_ENABLE_ARC_FLAG
404 #if defined(ENABLE_CANVAS_EXTEND) && ENABLE_CANVAS_EXTEND
405 /**
406 * @tc.name: UICanvasArcTo_001
407 * @tc.desc: Verify ArcTo function, equal.
408 * @tc.type: FUNC
409 * @tc.require: AR000EVN8V
410 */
411 HWTEST_F(UICanvasTest, UICanvasArcTo_001, TestSize.Level0)
412 {
413 if (canvas_ == nullptr) {
414 EXPECT_EQ(1, 0);
415 return;
416 }
417 canvas_->BeginPath();
418 canvas_->ArcTo({CENTER_X, CENTER_Y}, RADIUS, START_ANGLE, END_ANGLE);
419
420 float sinma = RADIUS * Sin(START_ANGLE);
421 float cosma = RADIUS * Sin(QUARTER_IN_DEGREE - START_ANGLE);
422 Point start = canvas_->GetStartPos();
423 EXPECT_EQ(start.x, int16_t(CENTER_X + sinma));
424 EXPECT_EQ(start.y, int16_t(CENTER_Y - cosma));
425
426 sinma = RADIUS * Sin(END_ANGLE);
427 cosma = RADIUS * Sin(QUARTER_IN_DEGREE - END_ANGLE);
428 Point end = canvas_->GetEndPos();
429 EXPECT_EQ(end.x, int16_t(CENTER_X + sinma));
430 EXPECT_EQ(end.y, int16_t(CENTER_Y - cosma));
431 }
432 #endif
433
434 /**
435 * @tc.name: UICanvasArcTo_002
436 * @tc.desc: Verify ArcTo function, equal.
437 * @tc.type: FUNC
438 * @tc.require: AR000EVN8V
439 */
440 HWTEST_F(UICanvasTest, UICanvasArcTo_002, TestSize.Level1)
441 {
442 if (canvas_ == nullptr) {
443 EXPECT_EQ(1, 0);
444 return;
445 }
446 canvas_->BeginPath();
447 canvas_->ArcTo({CENTER_X, CENTER_Y}, RADIUS, START_ANGLE,
448 START_ANGLE + CIRCLE_IN_DEGREE + QUARTER_IN_DEGREE);
449
450 float sinma = RADIUS * Sin(START_ANGLE);
451 float cosma = RADIUS * Sin(QUARTER_IN_DEGREE - START_ANGLE);
452 Point start = canvas_->GetStartPos();
453 EXPECT_EQ(start.x, int16_t(CENTER_X + sinma));
454 EXPECT_EQ(start.y, int16_t(CENTER_Y - cosma));
455
456 sinma = RADIUS * Sin(END_ANGLE);
457 cosma = RADIUS * Sin(QUARTER_IN_DEGREE - END_ANGLE);
458 Point end = canvas_->GetEndPos();
459 EXPECT_EQ(end.x, start.x);
460 EXPECT_EQ(end.y, start.y);
461 }
462
463 /**
464 * @tc.name: UICanvasArcTo_003
465 * @tc.desc: Verify ArcTo function, equal.
466 * @tc.type: FUNC
467 * @tc.require: AR000EVN8V
468 */
469 HWTEST_F(UICanvasTest, UICanvasArcTo_003, TestSize.Level1)
470 {
471 if (canvas_ == nullptr) {
472 EXPECT_EQ(1, 0);
473 return;
474 }
475 canvas_->BeginPath();
476 canvas_->MoveTo({START1_X, START1_Y});
477 canvas_->ArcTo({CENTER_X, CENTER_Y}, RADIUS, START_ANGLE, END_ANGLE);
478
479 Point start = canvas_->GetStartPos();
480 EXPECT_EQ(start.x, START1_X);
481 EXPECT_EQ(start.y, START1_Y);
482
483 float sinma = RADIUS * Sin(END_ANGLE);
484 float cosma = RADIUS * Sin(QUARTER_IN_DEGREE - END_ANGLE);
485 Point end = canvas_->GetEndPos();
486 EXPECT_EQ(end.x, int16_t(CENTER_X + sinma));
487 EXPECT_EQ(end.y, int16_t(CENTER_Y - cosma));
488 }
489 #endif
490
491 #if defined(ENABLE_CANVAS_EXTEND) && ENABLE_CANVAS_EXTEND
492 /**
493 * @tc.name: UICanvasAddRect_001
494 * @tc.desc: Verify AddRect function, equal.
495 * @tc.type: FUNC
496 * @tc.require: AR000EVN8V
497 */
498 HWTEST_F(UICanvasTest, UICanvasAddRect_001, TestSize.Level0)
499 {
500 if (canvas_ == nullptr) {
501 EXPECT_EQ(1, 0);
502 return;
503 }
504 canvas_->BeginPath();
505 canvas_->AddRect({RECT_X, RECT_Y}, RECT_HEIGHT, RECT_WIDTH);
506
507 Point start = canvas_->GetStartPos();
508 EXPECT_EQ(start.x, RECT_X);
509 EXPECT_EQ(start.y, RECT_Y);
510
511 Point end = canvas_->GetEndPos();
512 EXPECT_EQ(end.x, 0);
513 EXPECT_EQ(end.y, 0);
514 }
515 #endif
516 /**
517 * @tc.name: UICanvasAddRect_002
518 * @tc.desc: Verify AddRect function, equal.
519 * @tc.type: FUNC
520 * @tc.require: AR000EVN8V
521 */
522 HWTEST_F(UICanvasTest, UICanvasAddRect_002, TestSize.Level1)
523 {
524 if (canvas_ == nullptr) {
525 EXPECT_EQ(1, 0);
526 return;
527 }
528 canvas_->BeginPath();
529 canvas_->MoveTo({START1_X, START1_Y});
530 canvas_->LineTo({LINE1_X, LINE1_Y});
531 canvas_->AddRect({RECT_X, RECT_Y}, RECT_HEIGHT, RECT_WIDTH);
532
533 Point start = canvas_->GetStartPos();
534 EXPECT_EQ(start.x, START1_X);
535 EXPECT_EQ(start.y, START1_Y);
536
537 Point end = canvas_->GetEndPos();
538 EXPECT_EQ(end.x, 0);
539 EXPECT_EQ(end.y, 0);
540 }
541
542 #if defined(ENABLE_CANVAS_EXTEND) && ENABLE_CANVAS_EXTEND
543 /**
544 * @tc.name: UICanvasClosePath_001
545 * @tc.desc: Verify ClosePath function, equal.
546 * @tc.type: FUNC
547 * @tc.require: AR000EVN8V
548 */
549 HWTEST_F(UICanvasTest, UICanvasClosePath_001, TestSize.Level0)
550 {
551 if (canvas_ == nullptr) {
552 EXPECT_EQ(1, 0);
553 return;
554 }
555 canvas_->BeginPath();
556 canvas_->MoveTo({START1_X, START1_Y});
557 canvas_->LineTo({LINE1_X, LINE1_Y});
558 canvas_->ClosePath();
559
560 Point start = canvas_->GetStartPos();
561 EXPECT_EQ(start.x, START1_X);
562 EXPECT_EQ(start.y, START1_Y);
563
564 Point end = canvas_->GetEndPos();
565 EXPECT_EQ(end.x, 0);
566 EXPECT_EQ(end.y, 0);
567 }
568 #endif
569 /**
570 * @tc.name: UICanvasClosePath_002
571 * @tc.desc: Verify ClosePath function, equal.
572 * @tc.type: FUNC
573 * @tc.require: SR000EVN8R
574 */
575 HWTEST_F(UICanvasTest, UICanvasClosePath_002, TestSize.Level1)
576 {
577 if (canvas_ == nullptr) {
578 EXPECT_EQ(1, 0);
579 return;
580 }
581
582 if (paint_ == nullptr) {
583 EXPECT_EQ(1, 0);
584 return;
585 }
586
587 canvas_->BeginPath();
588 canvas_->MoveTo({START1_X, START1_Y});
589 canvas_->LineTo({LINE1_X, LINE1_Y});
590 canvas_->ClosePath();
591 canvas_->DrawPath(*paint_);
592
593 Point start = canvas_->GetStartPos();
594 EXPECT_EQ(start.x, START1_X);
595 EXPECT_EQ(start.y, START1_Y);
596
597 Point end = canvas_->GetEndPos();
598 EXPECT_EQ(end.x, 0);
599 EXPECT_EQ(end.y, 0);
600
601 canvas_->BeginPath();
602 canvas_->LineTo({LINE2_X, LINE2_Y});
603 canvas_->ClosePath();
604
605 start = canvas_->GetStartPos();
606 EXPECT_EQ(start.x, LINE2_X);
607 EXPECT_EQ(start.y, LINE2_Y);
608
609 end = canvas_->GetEndPos();
610 EXPECT_EQ(end.x, 0);
611 EXPECT_EQ(end.y, 0);
612 }
613
614 #if defined(GRAPHIC_ENABLE_LINECAP_FLAG) && GRAPHIC_ENABLE_LINECAP_FLAG
615 /**
616 * @tc.name: UICanvasSetLineCap_001
617 * @tc.desc: Verify SetLineCap function, equal.
618 * @tc.type: FUNC
619 */
620 HWTEST_F(UICanvasTest, UICanvasSetLineCap_001, TestSize.Level1)
621 {
622 if (paint_ == nullptr) {
623 EXPECT_EQ(1, 0);
624 return;
625 }
626
627 paint_->SetLineCap(LineCap::BUTT_CAP);
628 EXPECT_EQ(paint_->GetLineCap(), LineCap::BUTT_CAP);
629
630 paint_->SetLineCap(LineCap::SQUARE_CAP);
631 EXPECT_EQ(paint_->GetLineCap(), LineCap::SQUARE_CAP);
632
633 paint_->SetLineCap(LineCap::ROUND_CAP);
634 EXPECT_EQ(paint_->GetLineCap(), LineCap::ROUND_CAP);
635 }
636
637 /**
638 * @tc.name: UICanvasSetLineCap_002
639 * @tc.desc: Verify SetLineCap function, equal.
640 * @tc.type: FUNC
641 */
642 HWTEST_F(UICanvasTest, UICanvasSetLineCap_002, TestSize.Level0)
643 {
644 if (paint_ == nullptr) {
645 EXPECT_EQ(1, 0);
646 return;
647 }
648 paint_->SetLineCap(LineCap::ROUND_CAP);
649 EXPECT_EQ(paint_->GetLineCap(), LineCap::ROUND_CAP);
650
651 paint_->SetLineCap(LineCap::BUTT_CAP);
652 EXPECT_EQ(paint_->GetLineCap(), LineCap::BUTT_CAP);
653
654 paint_->SetLineCap(LineCap::SQUARE_CAP);
655 EXPECT_EQ(paint_->GetLineCap(), LineCap::SQUARE_CAP);
656 }
657 #endif
658
659 #if defined(GRAPHIC_ENABLE_LINEJOIN_FLAG) && GRAPHIC_ENABLE_LINEJOIN_FLAG
660 /**
661 * @tc.name: UICanvasSetLineJoin_001
662 * @tc.desc: Verify SetLineJoin function, equal.
663 * @tc.type: FUNC
664 */
665 HWTEST_F(UICanvasTest, UICanvasSetLineJoin_001, TestSize.Level1)
666 {
667 if (paint_ == nullptr) {
668 EXPECT_EQ(1, 0);
669 return;
670 }
671 paint_->SetLineJoin(LineJoin::MITER_JOIN);
672 EXPECT_EQ(paint_->GetLineJoin(), LineJoin::MITER_JOIN);
673
674 paint_->SetLineJoin(LineJoin::ROUND_JOIN);
675 EXPECT_EQ(paint_->GetLineJoin(), LineJoin::ROUND_JOIN);
676
677 paint_->SetLineJoin(LineJoin::BEVEL_JOIN);
678 EXPECT_EQ(paint_->GetLineJoin(), LineJoin::BEVEL_JOIN);
679 }
680
681 /**
682 * @tc.name: UICanvasSetLineJoin_002
683 * @tc.desc: Verify SetLineJoin function, equal.
684 * @tc.type: FUNC
685 */
686 HWTEST_F(UICanvasTest, UICanvasSetLineJoin_002, TestSize.Level0)
687 {
688 if (paint_ == nullptr) {
689 EXPECT_EQ(1, 0);
690 return;
691 }
692 paint_->SetLineJoin(LineJoin::MITER_JOIN);
693 EXPECT_EQ(paint_->GetLineJoin(), LineJoin::MITER_JOIN);
694
695 paint_->SetLineJoin(LineJoin::ROUND_JOIN);
696 EXPECT_EQ(paint_->GetLineJoin(), LineJoin::ROUND_JOIN);
697
698 paint_->SetLineJoin(LineJoin::BEVEL_JOIN);
699 EXPECT_EQ(paint_->GetLineJoin(), LineJoin::BEVEL_JOIN);
700 }
701 #endif
702
703 #if defined(GRAPHIC_ENABLE_DASH_GENERATE_FLAG) && GRAPHIC_ENABLE_DASH_GENERATE_FLAG
704 /**
705 * @tc.name: UICanvasSetLineDashOffset_001
706 * @tc.desc: Verify SetLineDashOffset function, equal.
707 * @tc.type: FUNC
708 */
709 HWTEST_F(UICanvasTest, UICanvasSetLineDashOffset_001, TestSize.Level1)
710 {
711 if (paint_ == nullptr) {
712 EXPECT_EQ(1, 0);
713 return;
714 }
715 paint_->SetLineDashOffset(LINE_OFFSET1);
716 EXPECT_EQ(paint_->GetLineDashOffset(), LINE_OFFSET1);
717
718 paint_->SetLineDashOffset(LINE_OFFSET2);
719 EXPECT_EQ(paint_->GetLineDashOffset(), LINE_OFFSET2);
720
721 paint_->SetLineDashOffset(LINE_OFFSET3);
722 EXPECT_EQ(paint_->GetLineDashOffset(), LINE_OFFSET3);
723 }
724
725 /**
726 * @tc.name: UICanvasSetLineDashOffset_002
727 * @tc.desc: Verify SetLineDashOffset function, equal.
728 * @tc.type: FUNC
729 */
730 HWTEST_F(UICanvasTest, UICanvasSetLineDashOffset_002, TestSize.Level0)
731 {
732 if (paint_ == nullptr) {
733 EXPECT_EQ(1, 0);
734 return;
735 }
736 paint_->SetLineDashOffset(LINE_OFFSET1);
737 EXPECT_EQ(paint_->GetLineDashOffset(), LINE_OFFSET1);
738
739 paint_->SetLineDashOffset(LINE_OFFSET2);
740 EXPECT_EQ(paint_->GetLineDashOffset(), LINE_OFFSET2);
741
742 paint_->SetLineDashOffset(LINE_OFFSET3);
743 EXPECT_EQ(paint_->GetLineDashOffset(), LINE_OFFSET3);
744 }
745 #endif
746
747 #if defined(GRAPHIC_ENABLE_LINEJOIN_FLAG) && GRAPHIC_ENABLE_LINEJOIN_FLAG
748 /**
749 * @tc.name: UICanvasMiterLimit_001
750 * @tc.desc: Verify MiterLimit function, equal.
751 * @tc.type: FUNC
752 */
753 HWTEST_F(UICanvasTest, UICanvasMiterLimit_001, TestSize.Level1)
754 {
755 if (paint_ == nullptr) {
756 EXPECT_EQ(1, 0);
757 return;
758 }
759 paint_->SetMiterLimit(MITERLIMIT1);
760 EXPECT_EQ(paint_->GetMiterLimit(), MITERLIMIT1);
761
762 paint_->SetMiterLimit(MITERLIMIT2);
763 EXPECT_EQ(paint_->GetMiterLimit(), MITERLIMIT2);
764
765 paint_->SetMiterLimit(MITERLIMIT3);
766 EXPECT_EQ(paint_->GetMiterLimit(), MITERLIMIT3);
767 }
768
769 /**
770 * @tc.name: UICanvasMiterLimit_002
771 * @tc.desc: Verify MiterLimit function, equal.
772 * @tc.type: FUNC
773 */
774 HWTEST_F(UICanvasTest, UICanvasMiterLimit_002, TestSize.Level0)
775 {
776 if (paint_ == nullptr) {
777 EXPECT_EQ(1, 0);
778 return;
779 }
780 paint_->SetMiterLimit(MITERLIMIT1);
781 EXPECT_EQ(paint_->GetMiterLimit(), MITERLIMIT1);
782
783 paint_->SetMiterLimit(MITERLIMIT2);
784 EXPECT_EQ(paint_->GetMiterLimit(), MITERLIMIT2);
785
786 paint_->SetMiterLimit(MITERLIMIT3);
787 EXPECT_EQ(paint_->GetMiterLimit(), MITERLIMIT3);
788 }
789
790 /**
791 * @tc.name: UICanvasMiterLimit_003
792 * @tc.desc: Verify MiterLimit function, equal.
793 * @tc.type: FUNC
794 */
795 HWTEST_F(UICanvasTest, UICanvasMiterLimit_003, TestSize.Level0)
796 {
797 if (paint_ == nullptr) {
798 EXPECT_EQ(1, 0);
799 return;
800 }
801 paint_->SetMiterLimit(MITERLIMIT1);
802 EXPECT_EQ(paint_->GetMiterLimit(), MITERLIMIT1);
803
804 paint_->SetMiterLimit(MITERLIMIT2 + MITERLIMIT1);
805 EXPECT_EQ(paint_->GetMiterLimit(), MITERLIMIT2 + MITERLIMIT1);
806
807 paint_->SetMiterLimit(MITERLIMIT3 + MITERLIMIT2);
808 EXPECT_EQ(paint_->GetMiterLimit(), MITERLIMIT3 + MITERLIMIT2);
809 }
810 #endif
811
812 #if defined(GRAPHIC_ENABLE_DASH_GENERATE_FLAG) && GRAPHIC_ENABLE_DASH_GENERATE_FLAG
813 /**
814 * @tc.name: UICanvasSetLineDash_001
815 * @tc.desc: Verify SetLineDash function, equal.
816 * @tc.type: FUNC
817 */
818 HWTEST_F(UICanvasTest, UICanvasSetLineDash_001, TestSize.Level0)
819 {
820 if (paint_ == nullptr) {
821 EXPECT_EQ(1, 0);
822 return;
823 }
824 if (canvas_ == nullptr) {
825 EXPECT_EQ(1, 0);
826 return;
827 }
828
829 const int32_t dashCount = 4;
830 float dash[dashCount] = {1, 1.5, 2, 2.5};
831 paint_->SetLineDash(dash, dashCount);
832 EXPECT_EQ(paint_->GetLineDashCount(), dashCount);
833
834 paint_->ClearLineDash();
835 EXPECT_EQ(paint_->GetLineDashCount(), 0);
836
837 paint_->SetLineDash(dash, dashCount);
838 int32_t dashLen = paint_->GetLineDashCount();
839 float* dashArr = paint_->GetLineDash();
840 for (int32_t i = 0; i < dashLen; i++) {
841 EXPECT_EQ(dashArr[i], dash[i]);
842 }
843
844 EXPECT_EQ(paint_->IsLineDash(), 1);
845
846 paint_->ClearLineDash();
847 EXPECT_EQ(paint_->GetLineDashCount(), 0);
848
849 EXPECT_EQ(paint_->IsLineDash(), 0);
850 }
851 #endif
852 #if defined(ENABLE_CANVAS_EXTEND) && ENABLE_CANVAS_EXTEND
853 /**
854 * @tc.name: UICanvasStrokeRect_001
855 * @tc.desc: Verify StrokeRect function, equal.
856 * @tc.type: FUNC
857 */
858 HWTEST_F(UICanvasTest, UICanvasStrokeRect_001, TestSize.Level1)
859 {
860 if (paint_ == nullptr) {
861 EXPECT_EQ(1, 0);
862 return;
863 }
864 if (canvas_ == nullptr) {
865 EXPECT_EQ(1, 0);
866 return;
867 }
868
869 RootView* rootView = RootView::GetInstance();
870 UIViewGroup* viewGroup = static_cast<UIViewGroup*>(rootView);
871 Paint paint;
872
873 viewGroup->SetPosition(0, 0);
874 viewGroup->SetWidth(WIDTH);
875 viewGroup->SetHeight(HEIGHT);
876 canvas_->StrokeRect({RECT_X, RECT_Y}, RECT_HEIGHT, RECT_WIDTH, paint);
877 viewGroup->Add(canvas_);
878 EXPECT_EQ(canvas_->GetStartPosition().x, RECT_X);
879 EXPECT_EQ(canvas_->GetStartPosition().y, RECT_Y);
880 viewGroup->Remove(canvas_);
881
882 viewGroup->SetPosition(10, 20);
883 viewGroup->SetWidth(WIDTH);
884 viewGroup->SetHeight(HEIGHT);
885 canvas_->StrokeRect({0, 0}, RECT_HEIGHT, RECT_WIDTH, paint);
886 viewGroup->Add(canvas_);
887 EXPECT_EQ(canvas_->GetStartPosition().x, 0);
888 EXPECT_EQ(canvas_->GetStartPosition().y, 0);
889 viewGroup->Remove(canvas_);
890 }
891
892 /**
893 * @tc.name: UICanvasCleanRect_001
894 * @tc.desc: Verify CleanRect function, equal.
895 * @tc.type: FUNC
896 */
897 HWTEST_F(UICanvasTest, UICanvasCleanRect_001, TestSize.Level1)
898 {
899 if (paint_ == nullptr) {
900 EXPECT_EQ(1, 0);
901 return;
902 }
903 if (canvas_ == nullptr) {
904 EXPECT_EQ(1, 0);
905 return;
906 }
907
908 RootView* rootView = RootView::GetInstance();
909 UIViewGroup* viewGroup = static_cast<UIViewGroup*>(rootView);
910 Paint paint;
911
912 viewGroup->SetPosition(0, 0);
913 viewGroup->SetWidth(WIDTH);
914 viewGroup->SetHeight(HEIGHT);
915
916 paint.SetStyle(Paint::PaintStyle::FILL_STYLE);
917 paint.SetFillColor(Color::Red());
918
919 canvas_->DrawRect({RECT_X, RECT_Y}, RECT_HEIGHT, RECT_WIDTH, paint);
920 viewGroup->Add(canvas_);
921
922 canvas_->ClearRect({RECT_X + RECT_X / 2, RECT_Y + RECT_Y / 2},
923 RECT_HEIGHT / 2, RECT_WIDTH / 2);
924 EXPECT_EQ(canvas_->GetStartPos().x, RECT_X + RECT_X / 2);
925 EXPECT_EQ(canvas_->GetStartPos().y, RECT_Y + RECT_Y / 2);
926
927 viewGroup->Remove(canvas_);
928
929 viewGroup->SetPosition(0, 0);
930 viewGroup->SetWidth(WIDTH);
931 viewGroup->SetHeight(HEIGHT);
932 paint.SetStyle(Paint::PaintStyle::FILL_STYLE);
933 paint.SetFillColor(Color::Blue());
934 canvas_->StrokeRect({0, 0}, RECT_HEIGHT, RECT_WIDTH, paint);
935 viewGroup->Add(canvas_);
936 EXPECT_EQ(canvas_->GetStartPosition().x, 0);
937 EXPECT_EQ(canvas_->GetStartPosition().y, 0);
938
939 canvas_->ClearRect({RECT_X - 10, RECT_Y - 10},
940 RECT_HEIGHT + 10, RECT_WIDTH + 10);
941 EXPECT_EQ(canvas_->GetStartPos().x, RECT_X - 10);
942 EXPECT_EQ(canvas_->GetStartPos().y, RECT_Y - 10);
943 viewGroup->Remove(canvas_);
944 }
945 #if defined(GRAPHIC_ENABLE_DRAW_IMAGE_FLAG) && GRAPHIC_ENABLE_DRAW_IMAGE_FLAG
946 /**
947 * @tc.name: UICanvasDrawImage_001
948 * @tc.desc: Verify DrawImage function, equal.
949 * @tc.type: FUNC
950 */
951 HWTEST_F(UICanvasTest, UICanvasDrawImage_001, TestSize.Level1)
952 {
953 if (paint_ == nullptr) {
954 EXPECT_EQ(1, 0);
955 return;
956 }
957 if (canvas_ == nullptr) {
958 EXPECT_EQ(1, 0);
959 return;
960 }
961
962 RootView* rootView = RootView::GetInstance();
963 UIViewGroup* viewGroup = static_cast<UIViewGroup*>(rootView);
964 Paint paint;
965
966 viewGroup->SetPosition(0, 0);
967 viewGroup->SetWidth(WIDTH);
968 viewGroup->SetHeight(HEIGHT);
969
970 canvas_->DrawImage({0, 0}, JPEG_IMAGE_PATH, paint);
971 viewGroup->Add(canvas_);
972 EXPECT_EQ(canvas_->GetStartPosition().x, 0);
973 EXPECT_EQ(canvas_->GetStartPosition().y, 0);
974
975 canvas_->ClearRect({RECT_X + RECT_X / DOUBLENUMBER, RECT_Y + RECT_Y / DOUBLENUMBER},
976 RECT_HEIGHT / DOUBLENUMBER, RECT_WIDTH / DOUBLENUMBER);
977 EXPECT_EQ(canvas_->GetStartPos().x, RECT_X + RECT_X / DOUBLENUMBER);
978 EXPECT_EQ(canvas_->GetStartPos().y, RECT_Y + RECT_Y / DOUBLENUMBER);
979
980 viewGroup->Remove(canvas_);
981
982 viewGroup->SetPosition(0, 0);
983 viewGroup->SetWidth(WIDTH);
984 viewGroup->SetHeight(HEIGHT);
985
986 canvas_->DrawImage({IMAGE_X, IMAGE_Y}, JPEG_IMAGE_PATH, paint);
987 viewGroup->Add(canvas_);
988 EXPECT_EQ(canvas_->GetStartPosition().x, IMAGE_X);
989 EXPECT_EQ(canvas_->GetStartPosition().y, IMAGE_Y);
990
991 canvas_->DrawImage({IMAGE_X, IMAGE_Y}, JPEG_IMAGE_PATH, paint);
992 EXPECT_EQ(canvas_->GetStartPosition().x, IMAGE_X);
993 EXPECT_EQ(canvas_->GetStartPosition().y, IMAGE_Y);
994 viewGroup->Remove(canvas_);
995 }
996 /**
997 * @tc.name: UICanvasDrawImage_002
998 * @tc.desc: Verify DrawImage function, equal.
999 * @tc.type: FUNC
1000 */
1001 HWTEST_F(UICanvasTest, UICanvasDrawImage_002, TestSize.Level1)
1002 {
1003 if (paint_ == nullptr) {
1004 EXPECT_EQ(1, 0);
1005 return;
1006 }
1007 if (canvas_ == nullptr) {
1008 EXPECT_EQ(1, 0);
1009 return;
1010 }
1011
1012 RootView* rootView = RootView::GetInstance();
1013 UIViewGroup* viewGroup = static_cast<UIViewGroup*>(rootView);
1014 Paint paint;
1015
1016 viewGroup->SetPosition(0, 0);
1017 viewGroup->SetWidth(WIDTH);
1018 viewGroup->SetHeight(HEIGHT);
1019
1020 canvas_->DrawImage({0, 0}, JPEG_IMAGE_PATH, paint);
1021 viewGroup->Add(canvas_);
1022 EXPECT_EQ(canvas_->GetStartPosition().x, 0);
1023 EXPECT_EQ(canvas_->GetStartPosition().y, 0);
1024
1025 canvas_->ClearRect({RECT_X + RECT_X / DOUBLENUMBER, RECT_Y + RECT_Y / DOUBLENUMBER},
1026 RECT_HEIGHT / DOUBLENUMBER, RECT_WIDTH / DOUBLENUMBER);
1027 EXPECT_EQ(canvas_->GetStartPos().x, RECT_X + RECT_X / DOUBLENUMBER);
1028 EXPECT_EQ(canvas_->GetStartPos().y, RECT_Y + RECT_Y / DOUBLENUMBER);
1029
1030 viewGroup->Remove(canvas_);
1031
1032 viewGroup->SetPosition(0, 0);
1033 viewGroup->SetWidth(WIDTH);
1034 viewGroup->SetHeight(HEIGHT);
1035
1036 canvas_->DrawImage({IMAGE_X, IMAGE_Y}, PNG_1_PALETTE_IMAGE_PATH, paint);
1037 viewGroup->Add(canvas_);
1038 EXPECT_EQ(canvas_->GetStartPosition().x, IMAGE_X);
1039 EXPECT_EQ(canvas_->GetStartPosition().y, IMAGE_Y);
1040
1041 canvas_->DrawImage({IMAGE_X, IMAGE_Y}, PNG_1_PALETTE_IMAGE_PATH, paint);
1042 EXPECT_EQ(canvas_->GetStartPosition().x, IMAGE_X);
1043 EXPECT_EQ(canvas_->GetStartPosition().y, IMAGE_Y);
1044 viewGroup->Remove(canvas_);
1045 }
1046
1047 /**
1048 * @tc.name: UICanvasDrawImage_003
1049 * @tc.desc: Verify DrawImage function, equal.
1050 * @tc.type: FUNC
1051 */
1052 HWTEST_F(UICanvasTest, UICanvasDrawImage_003, TestSize.Level1)
1053 {
1054 // ͼ�β���
1055 if (paint_ == nullptr) {
1056 EXPECT_EQ(1, 0);
1057 return;
1058 }
1059 if (canvas_ == nullptr) {
1060 EXPECT_EQ(1, 0);
1061 return;
1062 }
1063
1064 RootView* rootView = RootView::GetInstance();
1065 UIViewGroup* viewGroup = static_cast<UIViewGroup*>(rootView);
1066 Paint paint;
1067
1068 viewGroup->SetPosition(0, 0);
1069 viewGroup->SetWidth(WIDTH);
1070 viewGroup->SetHeight(HEIGHT);
1071
1072 canvas_->DrawImage({0, 0}, JPEG_IMAGE_PATH, paint);
1073 viewGroup->Add(canvas_);
1074 EXPECT_EQ(canvas_->GetStartPosition().x, 0);
1075 EXPECT_EQ(canvas_->GetStartPosition().y, 0);
1076
1077 canvas_->ClearRect({RECT_X + RECT_X / DOUBLENUMBER, RECT_Y + RECT_Y / DOUBLENUMBER},
1078 RECT_HEIGHT / DOUBLENUMBER, RECT_WIDTH / DOUBLENUMBER);
1079 EXPECT_EQ(canvas_->GetStartPos().x, RECT_X + RECT_X / DOUBLENUMBER);
1080 EXPECT_EQ(canvas_->GetStartPos().y, RECT_Y + RECT_Y / DOUBLENUMBER);
1081
1082 viewGroup->Remove(canvas_);
1083
1084 viewGroup->SetPosition(0, 0);
1085 viewGroup->SetWidth(WIDTH);
1086 viewGroup->SetHeight(HEIGHT);
1087
1088 canvas_->DrawImage({IMAGE_X, IMAGE_Y}, GIF_IMAGE_PATH, paint);
1089 viewGroup->Add(canvas_);
1090 EXPECT_EQ(canvas_->GetStartPosition().x, IMAGE_X);
1091 EXPECT_EQ(canvas_->GetStartPosition().y, IMAGE_Y);
1092
1093 canvas_->DrawImage({IMAGE_X, IMAGE_Y}, GIF_IMAGE_PATH, paint);
1094 EXPECT_EQ(canvas_->GetStartPosition().x, IMAGE_X);
1095 EXPECT_EQ(canvas_->GetStartPosition().y, IMAGE_Y);
1096 viewGroup->Remove(canvas_);
1097 }
1098 #endif
1099 #endif // ENABLE_CANVAS_EXTEND
1100
1101 #if defined(GRAPHIC_ENABLE_DRAW_TEXT_FLAG) && GRAPHIC_ENABLE_DRAW_TEXT_FLAG
1102 /**
1103 * @tc.name: UICanvasStrokeText_001
1104 * @tc.desc: Verify StrokeText function, equal.
1105 * @tc.type: FUNC
1106 */
1107 HWTEST_F(UICanvasTest, UICanvasStrokeText_001, TestSize.Level0)
1108 {
1109 if (canvas_ == nullptr) {
1110 EXPECT_EQ(1, 0);
1111 return;
1112 }
1113
1114 if (paint_ == nullptr) {
1115 EXPECT_EQ(1, 0);
1116 return;
1117 }
1118
1119 UICanvas::FontStyle fontStyle;
1120 fontStyle.align = TEXT_ALIGNMENT_CENTER;
1121 fontStyle.direct = TEXT_DIRECT_LTR;
1122 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
1123 fontStyle.fontSize = FONT_SIZE;
1124 fontStyle.letterSpace = LETTER_SPACE;
1125
1126 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
1127 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
1128 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
1129 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
1130 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
1131 }
1132
1133 /**
1134 * @tc.name: UICanvasStrokeText_002
1135 * @tc.desc: Verify StrokeText function, equal.
1136 * @tc.type: FUNC
1137 */
1138 HWTEST_F(UICanvasTest, UICanvasStrokeText_002, TestSize.Level1)
1139 {
1140 if (canvas_ == nullptr) {
1141 EXPECT_EQ(1, 0);
1142 return;
1143 }
1144
1145 if (paint_ == nullptr) {
1146 EXPECT_EQ(1, 0);
1147 return;
1148 }
1149
1150 UICanvas::FontStyle fontStyle;
1151 fontStyle.align = TEXT_ALIGNMENT_CENTER;
1152 fontStyle.direct = TEXT_DIRECT_LTR;
1153 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
1154 fontStyle.fontSize = FONT_SIZE;
1155 fontStyle.letterSpace = LETTER_SPACE;
1156 canvas_->StrokeText("hello world", {POS_X, POS_Y}, fontStyle, *paint_);
1157
1158 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
1159 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
1160 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
1161 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
1162 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
1163 EXPECT_EQ(canvas_->GetStartPosition().x, POS_X);
1164 EXPECT_EQ(canvas_->GetStartPosition().y, POS_Y);
1165 }
1166 #endif
1167
1168 /**
1169 * @tc.name: UICanvasMeasureText_001
1170 * @tc.desc: Verify MeasureText function, equal.
1171 * @tc.type: FUNC
1172 */
1173 HWTEST_F(UICanvasTest, UICanvasMeasureText_001, TestSize.Level0)
1174 {
1175 if (canvas_ == nullptr) {
1176 EXPECT_EQ(1, 0);
1177 return;
1178 }
1179
1180 if (paint_ == nullptr) {
1181 EXPECT_EQ(1, 0);
1182 return;
1183 }
1184
1185 UICanvas::FontStyle fontStyle;
1186 fontStyle.align = TEXT_ALIGNMENT_CENTER;
1187 fontStyle.direct = TEXT_DIRECT_LTR;
1188 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
1189 fontStyle.fontSize = FONT_SIZE;
1190 fontStyle.letterSpace = LETTER_SPACE;
1191
1192 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
1193 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
1194 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
1195 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
1196 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
1197 }
1198
1199 /**
1200 * @tc.name: UICanvasMeasureText_001
1201 * @tc.desc: Verify MeasureText function, equal.
1202 * @tc.type: FUNC
1203 */
1204 HWTEST_F(UICanvasTest, UICanvasMeasureText_002, TestSize.Level1)
1205 {
1206 if (canvas_ == nullptr) {
1207 EXPECT_EQ(1, 0);
1208 return;
1209 }
1210
1211 if (paint_ == nullptr) {
1212 EXPECT_EQ(1, 0);
1213 return;
1214 }
1215
1216 UICanvas::FontStyle fontStyle;
1217 fontStyle.align = TEXT_ALIGNMENT_CENTER;
1218 fontStyle.direct = TEXT_DIRECT_LTR;
1219 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
1220 fontStyle.fontSize = FONT_SIZE;
1221 fontStyle.letterSpace = LETTER_SPACE;
1222 canvas_->MeasureText("hello world", fontStyle);
1223
1224 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
1225 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
1226 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
1227 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
1228 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
1229 }
1230
1231 /**
1232 * @tc.name: UICanvasSetScale_001
1233 * @tc.desc: Verify SetScale function, equal.
1234 * @tc.type: FUNC
1235 */
1236 HWTEST_F(UICanvasTest, UICanvasSetScale_001, TestSize.Level0)
1237 {
1238 if (canvas_ == nullptr) {
1239 EXPECT_EQ(1, 0);
1240 return;
1241 }
1242
1243 if (paint_ == nullptr) {
1244 EXPECT_EQ(1, 0);
1245 return;
1246 }
1247
1248 UICanvas::FontStyle fontStyle;
1249 fontStyle.align = TEXT_ALIGNMENT_CENTER;
1250 fontStyle.direct = TEXT_DIRECT_LTR;
1251 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
1252 fontStyle.fontSize = FONT_SIZE;
1253 fontStyle.letterSpace = LETTER_SPACE;
1254
1255 paint_->Scale(SCALE_X, SCALE_Y);
1256
1257 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
1258 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
1259 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
1260 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
1261 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
1262 EXPECT_EQ(paint_->GetScaleX(), SCALE_X);
1263 EXPECT_EQ(paint_->GetScaleY(), SCALE_Y);
1264 }
1265
1266 /**
1267 * @tc.name: UICanvasSetScale_002
1268 * @tc.desc: Verify SetScale function, equal.
1269 * @tc.type: FUNC
1270 */
1271 HWTEST_F(UICanvasTest, UICanvasSetScale_002, TestSize.Level1)
1272 {
1273 if (canvas_ == nullptr) {
1274 EXPECT_EQ(1, 0);
1275 return;
1276 }
1277
1278 if (paint_ == nullptr) {
1279 EXPECT_EQ(1, 0);
1280 return;
1281 }
1282
1283 UICanvas::FontStyle fontStyle;
1284 fontStyle.align = TEXT_ALIGNMENT_CENTER;
1285 fontStyle.direct = TEXT_DIRECT_LTR;
1286 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
1287 fontStyle.fontSize = FONT_SIZE;
1288 fontStyle.letterSpace = LETTER_SPACE;
1289
1290 paint_->Scale(SCALE_X, SCALE_Y);
1291 #if defined(GRAPHIC_ENABLE_DRAW_TEXT_FLAG) && GRAPHIC_ENABLE_DRAW_TEXT_FLAG
1292 canvas_->StrokeText("hello world", {POS_X, POS_Y}, fontStyle, *paint_);
1293 #endif
1294
1295 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
1296 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
1297 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
1298 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
1299 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
1300 EXPECT_EQ(paint_->GetScaleX(), SCALE_X);
1301 EXPECT_EQ(paint_->GetScaleY(), SCALE_Y);
1302 }
1303
1304 /**
1305 * @tc.name: UICanvasSetTranslate_001
1306 * @tc.desc: Verify SetTranslate function, equal.
1307 * @tc.type: FUNC
1308 */
1309 HWTEST_F(UICanvasTest, UICanvasSetTranslate_001, TestSize.Level0)
1310 {
1311 if (canvas_ == nullptr) {
1312 EXPECT_EQ(1, 0);
1313 return;
1314 }
1315
1316 if (paint_ == nullptr) {
1317 EXPECT_EQ(1, 0);
1318 return;
1319 }
1320
1321 UICanvas::FontStyle fontStyle;
1322 fontStyle.align = TEXT_ALIGNMENT_CENTER;
1323 fontStyle.direct = TEXT_DIRECT_LTR;
1324 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
1325 fontStyle.fontSize = FONT_SIZE;
1326 fontStyle.letterSpace = LETTER_SPACE;
1327
1328 paint_->Translate(TRANSLATE_X, TRANSLATE_Y);
1329
1330 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
1331 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
1332 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
1333 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
1334 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
1335 EXPECT_EQ(paint_->GetTranslateX(), TRANSLATE_X);
1336 EXPECT_EQ(paint_->GetTranslateY(), TRANSLATE_Y);
1337 }
1338
1339 /**
1340 * @tc.name: UICanvasSetTranslate_002
1341 * @tc.desc: Verify SetTranslate function, equal.
1342 * @tc.type: FUNC
1343 */
1344 HWTEST_F(UICanvasTest, UICanvasSetTranslate_002, TestSize.Level1)
1345 {
1346 if (canvas_ == nullptr) {
1347 EXPECT_EQ(1, 0);
1348 return;
1349 }
1350
1351 if (paint_ == nullptr) {
1352 EXPECT_EQ(1, 0);
1353 return;
1354 }
1355
1356 UICanvas::FontStyle fontStyle;
1357 fontStyle.align = TEXT_ALIGNMENT_CENTER;
1358 fontStyle.direct = TEXT_DIRECT_LTR;
1359 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
1360 fontStyle.fontSize = FONT_SIZE;
1361 fontStyle.letterSpace = LETTER_SPACE;
1362
1363 paint_->Translate(TRANSLATE_X, TRANSLATE_Y);
1364 #if defined(GRAPHIC_ENABLE_DRAW_TEXT_FLAG) && GRAPHIC_ENABLE_DRAW_TEXT_FLAG
1365 canvas_->StrokeText("hello world", {POS_X, POS_Y}, fontStyle, *paint_);
1366 #endif
1367
1368 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
1369 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
1370 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
1371 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
1372 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
1373 EXPECT_EQ(paint_->GetTranslateX(), TRANSLATE_X);
1374 EXPECT_EQ(paint_->GetTranslateY(), TRANSLATE_Y);
1375 }
1376
1377 /**
1378 * @tc.name: UICanvasTransform_001
1379 * @tc.desc: Verify Transform function, equal.
1380 * @tc.type: FUNC
1381 */
1382 HWTEST_F(UICanvasTest, UICanvasTransform_001, TestSize.Level0)
1383 {
1384 if (canvas_ == nullptr) {
1385 EXPECT_EQ(1, 0);
1386 return;
1387 }
1388
1389 if (paint_ == nullptr) {
1390 EXPECT_EQ(1, 0);
1391 return;
1392 }
1393
1394 UICanvas::FontStyle fontStyle;
1395 fontStyle.align = TEXT_ALIGNMENT_CENTER;
1396 fontStyle.direct = TEXT_DIRECT_LTR;
1397 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
1398 fontStyle.fontSize = FONT_SIZE;
1399 fontStyle.letterSpace = LETTER_SPACE;
1400
1401 paint_->Transform(SCALE_X, SHEAR_X, SHEAR_Y, SCALE_Y, TRANSLATE_X, TRANSLATE_Y);
1402
1403 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
1404 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
1405 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
1406 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
1407 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
1408 EXPECT_EQ(paint_->GetScaleX(), SCALE_X);
1409 EXPECT_EQ(paint_->GetScaleY(), SCALE_Y);
1410 EXPECT_EQ(paint_->GetTranslateX(), TRANSLATE_X);
1411 EXPECT_EQ(paint_->GetTranslateY(), TRANSLATE_Y);
1412 }
1413
1414 /**
1415 * @tc.name: UICanvasTransform_002
1416 * @tc.desc: Verify Transform function, equal.
1417 * @tc.type: FUNC
1418 */
1419 HWTEST_F(UICanvasTest, UICanvasTransform_002, TestSize.Level1)
1420 {
1421 if (canvas_ == nullptr) {
1422 EXPECT_EQ(1, 0);
1423 return;
1424 }
1425
1426 if (paint_ == nullptr) {
1427 EXPECT_EQ(1, 0);
1428 return;
1429 }
1430
1431 UICanvas::FontStyle fontStyle;
1432 fontStyle.align = TEXT_ALIGNMENT_CENTER;
1433 fontStyle.direct = TEXT_DIRECT_LTR;
1434 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
1435 fontStyle.fontSize = FONT_SIZE;
1436 fontStyle.letterSpace = LETTER_SPACE;
1437
1438 paint_->Transform(SCALE_X, SHEAR_X, SHEAR_Y, SCALE_Y, TRANSLATE_X, TRANSLATE_Y);
1439 #if defined(GRAPHIC_ENABLE_DRAW_TEXT_FLAG) && GRAPHIC_ENABLE_DRAW_TEXT_FLAG
1440 canvas_->StrokeText("hello world", {POS_X, POS_Y}, fontStyle, *paint_);
1441 #endif
1442
1443 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
1444 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
1445 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
1446 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
1447 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
1448 EXPECT_EQ(paint_->GetScaleX(), SCALE_X);
1449 EXPECT_EQ(paint_->GetScaleY(), SCALE_Y);
1450 EXPECT_EQ(paint_->GetTranslateX(), TRANSLATE_X);
1451 EXPECT_EQ(paint_->GetTranslateY(), TRANSLATE_Y);
1452 }
1453
1454 /**
1455 * @tc.name: UICanvasSetTransform_001
1456 * @tc.desc: Verify SetTransform function, equal.
1457 * @tc.type: FUNC
1458 */
1459 HWTEST_F(UICanvasTest, UICanvasSetTransform_001, TestSize.Level0)
1460 {
1461 if (canvas_ == nullptr) {
1462 EXPECT_EQ(1, 0);
1463 return;
1464 }
1465
1466 if (paint_ == nullptr) {
1467 EXPECT_EQ(1, 0);
1468 return;
1469 }
1470
1471 UICanvas::FontStyle fontStyle;
1472 fontStyle.align = TEXT_ALIGNMENT_CENTER;
1473 fontStyle.direct = TEXT_DIRECT_LTR;
1474 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
1475 fontStyle.fontSize = FONT_SIZE;
1476 fontStyle.letterSpace = LETTER_SPACE;
1477
1478 paint_->SetTransform(SCALE_X, SHEAR_X, SHEAR_Y, SCALE_Y, TRANSLATE_X, TRANSLATE_Y);
1479
1480 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
1481 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
1482 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
1483 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
1484 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
1485 EXPECT_EQ(paint_->GetScaleX(), SCALE_X);
1486 EXPECT_EQ(paint_->GetScaleY(), SCALE_Y);
1487 EXPECT_EQ(paint_->GetTranslateX(), TRANSLATE_X);
1488 EXPECT_EQ(paint_->GetTranslateY(), TRANSLATE_Y);
1489 }
1490
1491 /**
1492 * @tc.name: UICanvasSetTransform_002
1493 * @tc.desc: Verify SetTransform function, equal.
1494 * @tc.type: FUNC
1495 */
1496 HWTEST_F(UICanvasTest, UICanvasSetTransform_002, TestSize.Level1)
1497 {
1498 if (canvas_ == nullptr) {
1499 EXPECT_EQ(1, 0);
1500 return;
1501 }
1502
1503 if (paint_ == nullptr) {
1504 EXPECT_EQ(1, 0);
1505 return;
1506 }
1507
1508 UICanvas::FontStyle fontStyle;
1509 fontStyle.align = TEXT_ALIGNMENT_CENTER;
1510 fontStyle.direct = TEXT_DIRECT_LTR;
1511 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
1512 fontStyle.fontSize = FONT_SIZE;
1513 fontStyle.letterSpace = LETTER_SPACE;
1514
1515 paint_->SetTransform(SCALE_X, SHEAR_X, SHEAR_Y, SCALE_Y, TRANSLATE_X, TRANSLATE_Y);
1516 #if defined(GRAPHIC_ENABLE_DRAW_TEXT_FLAG) && GRAPHIC_ENABLE_DRAW_TEXT_FLAG
1517 canvas_->StrokeText("hello world", {POS_X, POS_Y}, fontStyle, *paint_);
1518 #endif
1519
1520 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
1521 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
1522 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
1523 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
1524 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
1525 EXPECT_EQ(paint_->GetScaleX(), SCALE_X);
1526 EXPECT_EQ(paint_->GetScaleY(), SCALE_Y);
1527 EXPECT_EQ(paint_->GetTranslateX(), TRANSLATE_X);
1528 EXPECT_EQ(paint_->GetTranslateY(), TRANSLATE_Y);
1529 }
1530
1531 /**
1532 * @tc.name: UICanvasGlobalAlpha_001
1533 * @tc.desc: Verify GlobalAlpha function, equal.
1534 * @tc.type: FUNC
1535 */
1536 HWTEST_F(UICanvasTest, UICanvasGlobalAlpha_001, TestSize.Level0)
1537 {
1538 if (canvas_ == nullptr) {
1539 EXPECT_EQ(1, 0);
1540 return;
1541 }
1542
1543 if (paint_ == nullptr) {
1544 EXPECT_EQ(1, 0);
1545 return;
1546 }
1547
1548 paint_->SetGlobalAlpha(GLOBALALPHA);
1549 EXPECT_EQ(paint_->GetGlobalAlpha(), GLOBALALPHA);
1550 }
1551
1552 /**
1553 * @tc.name: UICanvasGlobalAlpha_002
1554 * @tc.desc: Verify GlobalAlpha function, equal.
1555 * @tc.type: FUNC
1556 */
1557 HWTEST_F(UICanvasTest, UICanvasGlobalAlpha_002, TestSize.Level1)
1558 {
1559 if (canvas_ == nullptr) {
1560 EXPECT_EQ(1, 0);
1561 return;
1562 }
1563
1564 if (paint_ == nullptr) {
1565 EXPECT_EQ(1, 0);
1566 return;
1567 }
1568
1569 ColorType color = Color::Red();
1570 paint_->SetStyle(Paint::PaintStyle::STROKE_FILL_STYLE);
1571 paint_->SetFillColor(color);
1572 canvas_->DrawRect({RECT_X, RECT_Y}, RECT_WIDTH, RECT_HEIGHT, *paint_);
1573 paint_->SetStyle(Paint::PaintStyle::FILL_STYLE);
1574 color = Color::Green();
1575 paint_->SetFillColor(color);
1576 paint_->SetGlobalAlpha(GLOBALALPHA);
1577 canvas_->DrawRect({POS_X, POS_Y}, WIDTH, HEIGHT, *paint_);
1578
1579 EXPECT_EQ(paint_->GetGlobalAlpha(), GLOBALALPHA);
1580 }
1581
1582 /**
1583 * @tc.name: UICanvasGetGlobalAlpha_001
1584 * @tc.desc: Verify GetGlobalAlpha function, equal.
1585 * @tc.type: FUNC
1586 */
1587 HWTEST_F(UICanvasTest, UICanvasGetGlobalAlpha_001, TestSize.Level0)
1588 {
1589 if (canvas_ == nullptr) {
1590 EXPECT_EQ(1, 0);
1591 return;
1592 }
1593
1594 if (paint_ == nullptr) {
1595 EXPECT_EQ(1, 0);
1596 return;
1597 }
1598
1599 paint_->SetGlobalAlpha(GLOBALALPHA);
1600 EXPECT_EQ(paint_->GetGlobalAlpha(), GLOBALALPHA);
1601 }
1602
1603 /**
1604 * @tc.name: UICanvasGetGlobalAlpha_002
1605 * @tc.desc: Verify GetGlobalAlpha function, equal.
1606 * @tc.type: FUNC
1607 */
1608 HWTEST_F(UICanvasTest, UICanvasGetGlobalAlpha_002, TestSize.Level1)
1609 {
1610 if (canvas_ == nullptr) {
1611 EXPECT_EQ(1, 0);
1612 return;
1613 }
1614
1615 if (paint_ == nullptr) {
1616 EXPECT_EQ(1, 0);
1617 return;
1618 }
1619 ColorType color = Color::Green();
1620 paint_->SetStyle(Paint::PaintStyle::FILL_STYLE);
1621 paint_->SetFillColor(color);
1622 paint_->SetGlobalAlpha(GLOBALALPHA);
1623 canvas_->DrawRect({POS_X, POS_Y}, WIDTH, HEIGHT, *paint_);
1624
1625 EXPECT_EQ(paint_->GetGlobalAlpha(), GLOBALALPHA);
1626 }
1627
1628 /**
1629 * @tc.name: UICanvasSetGlobalCompositeOperation_001
1630 * @tc.desc: Verify SetGlobalCompositeOperation function, equal.
1631 * @tc.type: FUNC
1632 */
1633 HWTEST_F(UICanvasTest, UICanvasSetGlobalCompositeOperation_001, TestSize.Level0)
1634 {
1635 if (canvas_ == nullptr) {
1636 EXPECT_EQ(1, 0);
1637 return;
1638 }
1639
1640 if (paint_ == nullptr) {
1641 EXPECT_EQ(1, 0);
1642 return;
1643 }
1644
1645 paint_->SetGlobalCompositeOperation(OHOS::COPY);
1646 EXPECT_EQ(paint_->GetGlobalCompositeOperation(), OHOS::COPY);
1647 }
1648
1649 #if defined(ENABLE_CANVAS_EXTEND) && ENABLE_CANVAS_EXTEND
1650 /**
1651 * @tc.name: UICanvasSetGlobalCompositeOperation_002
1652 * @tc.desc: Verify SetGlobalCompositeOperation function, equal.
1653 * @tc.type: FUNC
1654 */
1655 HWTEST_F(UICanvasTest, UICanvasSetGlobalCompositeOperation_002, TestSize.Level1)
1656 {
1657 if (canvas_ == nullptr) {
1658 EXPECT_EQ(1, 0);
1659 return;
1660 }
1661
1662 if (paint_ == nullptr) {
1663 EXPECT_EQ(1, 0);
1664 return;
1665 }
1666
1667 paint_->SetFillColor(Color::Blue());
1668 canvas_->BeginPath();
1669 canvas_->MoveTo({START1_X, START1_Y});
1670 canvas_->LineTo({START1_X, POS_Y});
1671 canvas_->LineTo({POS_X, POS_Y});
1672 canvas_->LineTo({POS_X, START1_Y});
1673 canvas_->ClosePath();
1674 canvas_->FillPath(*paint_);
1675 paint_->SetGlobalCompositeOperation(OHOS::COPY);
1676
1677 paint_->SetFillColor(Color::Green());
1678 canvas_->BeginPath();
1679 canvas_->MoveTo({LINE_X, LINE_X});
1680 canvas_->LineTo({LINE_X, LINE_Y});
1681 canvas_->LineTo({LINE_Y, LINE_Y});
1682 canvas_->LineTo({LINE_Y, LINE_X});
1683 canvas_->ClosePath();
1684 canvas_->FillPath(*paint_);
1685
1686 EXPECT_EQ(paint_->GetGlobalCompositeOperation(), OHOS::COPY);
1687 }
1688 #endif
1689
1690 /**
1691 * @tc.name: UICanvasGetGlobalCompositeOperation_001
1692 * @tc.desc: Verify GetGlobalCompositeOperation function, equal.
1693 * @tc.type: FUNC
1694 */
1695 HWTEST_F(UICanvasTest, UICanvasGetGlobalCompositeOperation_001, TestSize.Level0)
1696 {
1697 if (canvas_ == nullptr) {
1698 EXPECT_EQ(1, 0);
1699 return;
1700 }
1701
1702 if (paint_ == nullptr) {
1703 EXPECT_EQ(1, 0);
1704 return;
1705 }
1706
1707 paint_->SetGlobalCompositeOperation(OHOS::SOURCE_OVER);
1708 EXPECT_EQ(paint_->GetGlobalCompositeOperation(), OHOS::SOURCE_OVER);
1709 }
1710
1711 #if defined(ENABLE_CANVAS_EXTEND) && ENABLE_CANVAS_EXTEND
1712 /**
1713 * @tc.name: UICanvasGetGlobalCompositeOperation_002
1714 * @tc.desc: Verify GetGlobalCompositeOperation function, equal.
1715 * @tc.type: FUNC
1716 */
1717 HWTEST_F(UICanvasTest, UICanvasGetGlobalCompositeOperation_002, TestSize.Level1)
1718 {
1719 if (canvas_ == nullptr) {
1720 EXPECT_EQ(1, 0);
1721 return;
1722 }
1723
1724 if (paint_ == nullptr) {
1725 EXPECT_EQ(1, 0);
1726 return;
1727 }
1728
1729
1730 paint_->SetFillColor(Color::Blue());
1731 canvas_->BeginPath();
1732 canvas_->MoveTo({LINE_X, LINE_X});
1733 canvas_->LineTo({LINE_X, LINE_Y});
1734 canvas_->LineTo({LINE_Y, LINE_Y});
1735 canvas_->LineTo({LINE_Y, LINE_X});
1736 canvas_->ClosePath();
1737 canvas_->FillPath(*paint_);
1738 paint_->SetGlobalCompositeOperation(OHOS::SOURCE_OVER);
1739
1740 paint_->SetFillColor(Color::Green());
1741 canvas_->BeginPath();
1742 canvas_->MoveTo({START1_X, START1_Y});
1743 canvas_->LineTo({START1_X, POS_Y});
1744 canvas_->LineTo({POS_X, POS_Y});
1745 canvas_->LineTo({POS_X, START1_Y});
1746 canvas_->ClosePath();
1747 canvas_->FillPath(*paint_);
1748 EXPECT_EQ(paint_->GetGlobalCompositeOperation(), OHOS::SOURCE_OVER);
1749 }
1750 #endif
1751
1752 /**
1753 * @tc.name: UICanvasSave_001
1754 * @tc.desc: Verify Save function, equal.
1755 * @tc.type: FUNC
1756 */
1757 HWTEST_F(UICanvasTest, UICanvasSave_001, TestSize.Level0)
1758 {
1759 if (canvas_ == nullptr) {
1760 EXPECT_EQ(1, 0);
1761 return;
1762 }
1763
1764 if (paint_ == nullptr) {
1765 EXPECT_EQ(1, 0);
1766 return;
1767 }
1768
1769 ColorType color = Color::Red();
1770 paint_->SetFillColor(color);
1771 canvas_->Save(*paint_);
1772 EXPECT_EQ(paint_->GetFillColor().full, color.full);
1773 }
1774
1775 /**
1776 * @tc.name: UICanvasSave_002
1777 * @tc.desc: Verify Save function, equal.
1778 * @tc.type: FUNC
1779 */
1780 HWTEST_F(UICanvasTest, UICanvasSave_002, TestSize.Level1)
1781 {
1782 if (canvas_ == nullptr) {
1783 EXPECT_EQ(1, 0);
1784 return;
1785 }
1786
1787 if (paint_ == nullptr) {
1788 EXPECT_EQ(1, 0);
1789 return;
1790 }
1791
1792 ColorType color = Color::Red();
1793 paint_->SetFillColor(color);
1794 canvas_->Save(*paint_);
1795 canvas_->DrawRect({RECT_X, RECT_Y}, RECT_WIDTH, RECT_HEIGHT, *paint_);
1796 *paint_ = canvas_->Restore();
1797 canvas_->DrawRect({POS_X, POS_Y}, WIDTH, HEIGHT, *paint_);
1798
1799 EXPECT_EQ(paint_->GetFillColor().full, color.full);
1800 }
1801
1802 /**
1803 * @tc.name: UICanvasRestore_001
1804 * @tc.desc: Verify Restore function, equal.
1805 * @tc.type: FUNC
1806 */
1807 HWTEST_F(UICanvasTest, UICanvasRestore_001, TestSize.Level0)
1808 {
1809 if (canvas_ == nullptr) {
1810 EXPECT_EQ(1, 0);
1811 return;
1812 }
1813
1814 if (paint_ == nullptr) {
1815 EXPECT_EQ(1, 0);
1816 return;
1817 }
1818
1819 ColorType color = Color::Red();
1820 paint_->SetFillColor(color);
1821 canvas_->Save(*paint_);
1822 *paint_ = canvas_->Restore();
1823
1824 EXPECT_EQ(paint_->GetFillColor().full, color.full);
1825 }
1826
1827 /**
1828 * @tc.name: UICanvasRestore_002
1829 * @tc.desc: Verify Restore function, equal.
1830 * @tc.type: FUNC
1831 */
1832 HWTEST_F(UICanvasTest, UICanvasRestore_002, TestSize.Level1)
1833 {
1834 if (canvas_ == nullptr) {
1835 EXPECT_EQ(1, 0);
1836 return;
1837 }
1838
1839 if (paint_ == nullptr) {
1840 EXPECT_EQ(1, 0);
1841 return;
1842 }
1843
1844 ColorType color = Color::Red();
1845 paint_->SetFillColor(color);
1846 canvas_->Save(*paint_);
1847 canvas_->DrawRect({POS_X, POS_Y}, RECT_WIDTH, RECT_HEIGHT, *paint_);
1848 *paint_ = canvas_->Restore();
1849 canvas_->DrawRect({RECT_X, RECT_Y}, WIDTH, HEIGHT, *paint_);
1850
1851 EXPECT_EQ(paint_->GetFillColor().full, color.full);
1852 }
1853 #if defined(GRAPHIC_ENABLE_SHADOW_EFFECT_FLAG) && GRAPHIC_ENABLE_SHADOW_EFFECT_FLAG
1854 HWTEST_F(UICanvasTest, UICanvasShadowColor_001, TestSize.Level1)
1855 {
1856 if (paint_ == nullptr) {
1857 EXPECT_EQ(1, 0);
1858 return;
1859 }
1860 ColorType color = Color::Red();
1861 paint_->SetShadowColor(color);
1862 EXPECT_EQ(paint_->GetShadowColor().full, color.full);
1863 EXPECT_EQ(paint_->HaveShadow(), true);
1864 }
1865 HWTEST_F(UICanvasTest, UICanvasShadowColor_002, TestSize.Level0)
1866 {
1867 if (paint_ == nullptr) {
1868 EXPECT_EQ(1, 0);
1869 return;
1870 }
1871 ColorType color = Color::Red();
1872 paint_->SetShadowColor(color);
1873 EXPECT_EQ(paint_->GetShadowColor().full, color.full);
1874 }
1875 #endif
1876
1877 #if defined(GRAPHIC_ENABLE_BLUR_EFFECT_FLAG) && GRAPHIC_ENABLE_BLUR_EFFECT_FLAG
1878 HWTEST_F(UICanvasTest, UICanvasShadowBlur_001, TestSize.Level1)
1879 {
1880 if (paint_ == nullptr) {
1881 EXPECT_EQ(1, 0);
1882 return;
1883 }
1884 paint_->SetShadowBlur(RADIUS);
1885 EXPECT_EQ(paint_->GetShadowBlur(), RADIUS);
1886 }
1887
1888 HWTEST_F(UICanvasTest, UICanvasShadowBlur_002, TestSize.Level0)
1889 {
1890 if (paint_ == nullptr) {
1891 EXPECT_EQ(1, 0);
1892 return;
1893 }
1894 paint_->SetShadowBlur(RADIUS);
1895 EXPECT_EQ(paint_->GetShadowBlur(), RADIUS);
1896 }
1897 #endif
1898
1899 #if defined(GRAPHIC_ENABLE_SHADOW_EFFECT_FLAG) && GRAPHIC_ENABLE_SHADOW_EFFECT_FLAG
1900 HWTEST_F(UICanvasTest, UICanvasShadowOffsetX_001, TestSize.Level1)
1901 {
1902 if (paint_ == nullptr) {
1903 EXPECT_EQ(1, 0);
1904 return;
1905 }
1906 paint_->SetShadowOffsetX(RADIUS);
1907 EXPECT_EQ(paint_->GetShadowOffsetX(), RADIUS);
1908 }
1909
1910 HWTEST_F(UICanvasTest, UICanvasShadowOffsetX_002, TestSize.Level0)
1911 {
1912 if (paint_ == nullptr) {
1913 EXPECT_EQ(1, 0);
1914 return;
1915 }
1916 paint_->SetShadowOffsetX(RADIUS);
1917 EXPECT_EQ(paint_->GetShadowOffsetX(), RADIUS);
1918 }
1919
1920 HWTEST_F(UICanvasTest, UICanvasShadowOffsetY_001, TestSize.Level1)
1921 {
1922 if (paint_ == nullptr) {
1923 EXPECT_EQ(1, 0);
1924 return;
1925 }
1926 paint_->SetShadowOffsetY(RADIUS);
1927 EXPECT_EQ(paint_->GetShadowOffsetY(), RADIUS);
1928 }
1929
1930 HWTEST_F(UICanvasTest, UICanvasShadowOffsetY_002, TestSize.Level0)
1931 {
1932 if (paint_ == nullptr) {
1933 EXPECT_EQ(1, 0);
1934 return;
1935 }
1936 paint_->SetShadowOffsetY(RADIUS);
1937 EXPECT_EQ(paint_->GetShadowOffsetY(), RADIUS);
1938 }
1939 #endif
1940
1941 #if defined(GRAPHIC_ENABLE_GRADIENT_FILL_FLAG) && GRAPHIC_ENABLE_GRADIENT_FILL_FLAG
1942 HWTEST_F(UICanvasTest, UICanvasCreateLinearGradient_001, TestSize.Level1)
1943 {
1944 if (paint_ == nullptr) {
1945 EXPECT_EQ(1, 0);
1946 return;
1947 }
1948 paint_->createLinearGradient(START_X, START_Y, END_X, END_Y);
1949 paint_->SetStyle(Paint::GRADIENT);
1950 EXPECT_EQ(paint_->GetLinearGradientPoint().x0, START_X);
1951 EXPECT_EQ(paint_->GetLinearGradientPoint().y0, START_Y);
1952 EXPECT_EQ(paint_->GetLinearGradientPoint().x1, END_X);
1953 EXPECT_EQ(paint_->GetLinearGradientPoint().y1, END_Y);
1954 EXPECT_EQ(paint_->GetGradient(), Paint::Gradient::Linear);
1955 }
1956
1957 HWTEST_F(UICanvasTest, UICanvasCreateLinearGradient_002, TestSize.Level0)
1958 {
1959 if (paint_ == nullptr) {
1960 EXPECT_EQ(1, 0);
1961 return;
1962 }
1963 paint_->createLinearGradient(START_X, START_Y, END_X, END_Y);
1964 paint_->SetStyle(Paint::GRADIENT);
1965 EXPECT_EQ(paint_->GetLinearGradientPoint().x0, START_X);
1966 EXPECT_EQ(paint_->GetLinearGradientPoint().y0, START_Y);
1967 EXPECT_EQ(paint_->GetLinearGradientPoint().x1, END_X);
1968 EXPECT_EQ(paint_->GetLinearGradientPoint().y1, END_Y);
1969 }
1970
1971 HWTEST_F(UICanvasTest, UICanvasCreateRadialGradient_001, TestSize.Level1)
1972 {
1973 if (paint_ == nullptr) {
1974 EXPECT_EQ(1, 0);
1975 return;
1976 }
1977 paint_->createRadialGradient(START_X, START_Y, START_R, END_X, END_Y, END_R);
1978 paint_->SetStyle(Paint::GRADIENT);
1979 EXPECT_EQ(paint_->GetRadialGradientPoint().x0, START_X);
1980 EXPECT_EQ(paint_->GetRadialGradientPoint().y0, START_Y);
1981 EXPECT_EQ(paint_->GetRadialGradientPoint().r0, START_R);
1982 EXPECT_EQ(paint_->GetRadialGradientPoint().x1, END_X);
1983 EXPECT_EQ(paint_->GetRadialGradientPoint().y1, END_Y);
1984 EXPECT_EQ(paint_->GetRadialGradientPoint().r1, END_R);
1985 }
1986
1987 HWTEST_F(UICanvasTest, UICanvasCreateRadialGradient_002, TestSize.Level0)
1988 {
1989 if (paint_ == nullptr) {
1990 EXPECT_EQ(1, 0);
1991 return;
1992 }
1993 paint_->createRadialGradient(START_X, START_Y, START_R, END_X, END_Y, END_R);
1994 paint_->SetStyle(Paint::GRADIENT);
1995 EXPECT_EQ(paint_->GetRadialGradientPoint().x0, START_X);
1996 EXPECT_EQ(paint_->GetRadialGradientPoint().y0, START_Y);
1997 EXPECT_EQ(paint_->GetRadialGradientPoint().r0, START_R);
1998 EXPECT_EQ(paint_->GetRadialGradientPoint().x1, END_X);
1999 EXPECT_EQ(paint_->GetRadialGradientPoint().y1, END_Y);
2000 EXPECT_EQ(paint_->GetRadialGradientPoint().r1, END_R);
2001 }
2002 #endif
2003
2004 #if defined(GRAPHIC_ENABLE_PATTERN_FILL_FLAG) && GRAPHIC_ENABLE_PATTERN_FILL_FLAG
2005 HWTEST_F(UICanvasTest, UICanvasCreatePattern_001, TestSize.Level1)
2006 {
2007 if (paint_ == nullptr) {
2008 EXPECT_EQ(1, 0);
2009 return;
2010 }
2011 paint_->CreatePattern(RED_IMAGE_PATH, REPEAT);
2012 EXPECT_EQ(paint_->GetPatternImage(), RED_IMAGE_PATH);
2013 EXPECT_EQ(paint_->GetPatternRepeatMode(), REPEAT);
2014 }
2015
2016 HWTEST_F(UICanvasTest, UICanvasCreatePattern_002, TestSize.Level0)
2017 {
2018 if (paint_ == nullptr) {
2019 EXPECT_EQ(1, 0);
2020 return;
2021 }
2022 paint_->CreatePattern(RED_IMAGE_PATH, REPEAT);
2023 EXPECT_EQ(paint_->GetPatternImage(), RED_IMAGE_PATH);
2024 EXPECT_EQ(paint_->GetPatternRepeatMode(), REPEAT);
2025 }
2026 #endif
2027
2028 #if defined(GRAPHIC_ENABLE_GRADIENT_FILL_FLAG) && GRAPHIC_ENABLE_GRADIENT_FILL_FLAG
2029 HWTEST_F(UICanvasTest, UICanvasAddColorStop_001, TestSize.Level1)
2030 {
2031 if (paint_ == nullptr) {
2032 EXPECT_EQ(1, 0);
2033 return;
2034 }
2035 ColorType colorStop0 = Color::Yellow();
2036 ColorType colorStop1 = Color::White();
2037 ColorType colorStop2 = Color::Green();
2038 ColorType colorStop3 = Color::Blue();
2039 paint_->createLinearGradient(START_X, START_Y, END_X, END_Y);
2040 paint_->addColorStop(COLOR_STOP_0, colorStop0);
2041 paint_->addColorStop(COLOR_STOP_1, colorStop1);
2042 paint_->addColorStop(COLOR_STOP_2, colorStop2);
2043 paint_->addColorStop(COLOR_STOP_3, colorStop3);
2044 List<Paint::StopAndColor> stopAndColor = paint_->getStopAndColor();
2045 EXPECT_EQ(stopAndColor.Head()->data_.stop, COLOR_STOP_0);
2046 EXPECT_EQ(stopAndColor.Head()->data_.color.full, colorStop0.full);
2047 stopAndColor.PopFront();
2048 EXPECT_EQ(stopAndColor.Head()->data_.stop, COLOR_STOP_1);
2049 EXPECT_EQ(stopAndColor.Head()->data_.color.full, colorStop1.full);
2050 stopAndColor.PopFront();
2051 EXPECT_EQ(stopAndColor.Head()->data_.stop, COLOR_STOP_2);
2052 EXPECT_EQ(stopAndColor.Head()->data_.color.full, colorStop2.full);
2053 stopAndColor.PopFront();
2054 EXPECT_EQ(stopAndColor.Head()->data_.stop, COLOR_STOP_3);
2055 EXPECT_EQ(stopAndColor.Head()->data_.color.full, colorStop3.full);
2056 stopAndColor.PopFront();
2057 }
2058
2059 HWTEST_F(UICanvasTest, UICanvasFillStyle_001, TestSize.Level1)
2060 {
2061 if (paint_ == nullptr) {
2062 EXPECT_EQ(1, 0);
2063 return;
2064 }
2065 paint_->SetStyle(Paint::PaintStyle::GRADIENT);
2066 EXPECT_EQ(paint_->GetStyle(), Paint::PaintStyle::GRADIENT);
2067 paint_->SetStyle(Paint::PaintStyle::PATTERN);
2068 EXPECT_EQ(paint_->GetStyle(), Paint::PaintStyle::PATTERN);
2069 }
2070
2071 HWTEST_F(UICanvasTest, UICanvasStrokeStyle_001, TestSize.Level1)
2072 {
2073 if (paint_ == nullptr) {
2074 EXPECT_EQ(1, 0);
2075 return;
2076 }
2077 paint_->SetStyle(Paint::PaintStyle::GRADIENT);
2078 EXPECT_EQ(paint_->GetStyle(), Paint::PaintStyle::GRADIENT);
2079 paint_->SetStyle(Paint::PaintStyle::PATTERN);
2080 EXPECT_EQ(paint_->GetStyle(), Paint::PaintStyle::PATTERN);
2081 }
2082 #endif
2083
2084 /**
2085 * @tc.name: UICanvasSetRotate_001
2086 * @tc.desc: Verify SetRotate function, equal.
2087 * @tc.type: FUNC
2088 */
2089 HWTEST_F(UICanvasTest, UICanvasSetRotate_001, TestSize.Level0)
2090 {
2091 if (canvas_ == nullptr) {
2092 EXPECT_EQ(1, 0);
2093 return;
2094 }
2095
2096 if (paint_ == nullptr) {
2097 EXPECT_EQ(1, 0);
2098 return;
2099 }
2100
2101 UICanvas::FontStyle fontStyle;
2102 fontStyle.align = TEXT_ALIGNMENT_CENTER;
2103 fontStyle.direct = TEXT_DIRECT_LTR;
2104 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
2105 fontStyle.fontSize = FONT_SIZE;
2106 fontStyle.letterSpace = LETTER_SPACE;
2107
2108 paint_->Rotate(ROTATE);
2109
2110 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
2111 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
2112 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
2113 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
2114 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
2115 EXPECT_EQ(paint_->GetRotateAngle(), ROTATE);
2116 }
2117
2118
2119 /**
2120 * @tc.name: UICanvasSetRotate_002
2121 * @tc.desc: Verify SetRotate function, equal.
2122 * @tc.type: FUNC
2123 */
2124 HWTEST_F(UICanvasTest, UICanvasSetRotate_002, TestSize.Level1)
2125 {
2126 if (canvas_ == nullptr) {
2127 EXPECT_EQ(1, 0);
2128 return;
2129 }
2130
2131 if (paint_ == nullptr) {
2132 EXPECT_EQ(1, 0);
2133 return;
2134 }
2135
2136 UICanvas::FontStyle fontStyle;
2137 fontStyle.align = TEXT_ALIGNMENT_CENTER;
2138 fontStyle.direct = TEXT_DIRECT_LTR;
2139 fontStyle.fontName = DEFAULT_VECTOR_FONT_FILENAME;
2140 fontStyle.fontSize = FONT_SIZE;
2141 fontStyle.letterSpace = LETTER_SPACE;
2142
2143 paint_->Rotate(ROTATE);
2144 #if defined(GRAPHIC_ENABLE_DRAW_TEXT_FLAG) && GRAPHIC_ENABLE_DRAW_TEXT_FLAG
2145 canvas_->StrokeText("hello world", {POS_X, POS_Y}, fontStyle, *paint_);
2146 #endif
2147
2148 EXPECT_EQ(fontStyle.align, TEXT_ALIGNMENT_CENTER);
2149 EXPECT_EQ(fontStyle.direct, TEXT_DIRECT_LTR);
2150 EXPECT_EQ(fontStyle.fontName, DEFAULT_VECTOR_FONT_FILENAME);
2151 EXPECT_EQ(fontStyle.fontSize, FONT_SIZE);
2152 EXPECT_EQ(fontStyle.letterSpace, LETTER_SPACE);
2153 EXPECT_EQ(paint_->GetRotateAngle(), ROTATE);
2154 }
2155
2156 /**
2157 * @tc.name: UICanvasInitDash_001
2158 * @tc.desc: Verify InitDash function, equal.
2159 * @tc.type: FUNC
2160 * @tc.require: AR000H8BAB
2161 */
2162 HWTEST_F(UICanvasTest, UICanvasInitDash_001, TestSize.Level0)
2163 {
2164 if (canvas_ == nullptr) {
2165 EXPECT_EQ(1, 0);
2166 return;
2167 }
2168
2169 if (paint_ == nullptr) {
2170 EXPECT_EQ(1, 0);
2171 return;
2172 }
2173 #if defined(GRAPHIC_ENABLE_DASH_GENERATE_FLAG) && GRAPHIC_ENABLE_DASH_GENERATE_FLAG
2174 Paint* paint3 = new Paint();
2175 paint_->InitDash(*paint3);
2176 EXPECT_EQ(paint_->GetLineDash(), nullptr);
2177 delete paint3;
2178 paint3 = nullptr;
2179 #endif
2180 Paint* paint1 = new Paint();
2181 paint1->Init(*paint_);
2182 EXPECT_EQ(paint1->GetChangeFlag(), false);
2183
2184 ColorType color = Color::Red();
2185 paint1->SetStrokeStyle(color);
2186 EXPECT_EQ(paint1->GetStrokeColor().full, color.full);
2187 color = Color::Yellow();
2188 paint1->SetFillStyle(color);
2189 EXPECT_EQ(paint1->GetFillColor().full, color.full);
2190
2191 paint1->SetStrokeStyle(Paint::PaintStyle::GRADIENT);
2192 EXPECT_EQ(paint1->GetStyle(), Paint::PaintStyle::GRADIENT);
2193 paint1->SetFillStyle(Paint::PaintStyle::STROKE_FILL_STYLE);
2194 EXPECT_EQ(paint1->GetStyle(), Paint::PaintStyle::STROKE_FILL_STYLE);
2195
2196 paint1->GetTransAffine();
2197
2198 EXPECT_EQ(paint1->HaveComposite(), false);
2199 delete paint1;
2200 paint1 = nullptr;
2201 }
2202 } // namespace OHOS
2203