• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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 <cstddef>
17 #include "gtest/gtest.h"
18 #include "skia_adapter/skia_canvas.h"
19 #include "draw/core_canvas.h"
20 
21 using namespace testing;
22 using namespace testing::ext;
23 
24 namespace OHOS {
25 namespace Rosen {
26 namespace Drawing {
27 class SkiaCanvasTest : public testing::Test {
28 public:
29     static void SetUpTestCase();
30     static void TearDownTestCase();
31     void SetUp() override;
32     void TearDown() override;
33 };
34 
SetUpTestCase()35 void SkiaCanvasTest::SetUpTestCase() {}
TearDownTestCase()36 void SkiaCanvasTest::TearDownTestCase() {}
SetUp()37 void SkiaCanvasTest::SetUp() {}
TearDown()38 void SkiaCanvasTest::TearDown() {}
39 
40 /**
41  * @tc.name: Bind001
42  * @tc.desc:
43  * @tc.type: FUNC
44  * @tc.author:
45  */
46 HWTEST_F(SkiaCanvasTest, Bind001, TestSize.Level1)
47 {
48     Bitmap bitmap;
49     SkiaCanvas skiaCanvas;
50     skiaCanvas.Bind(bitmap);
51 
52     skiaCanvas.ImportSkCanvas(nullptr);
53     skiaCanvas.Bind(bitmap);
54 }
55 
56 /**
57  * @tc.name: DrawPoint001
58  * @tc.desc:
59  * @tc.type: FUNC
60  * @tc.author:
61  */
62 HWTEST_F(SkiaCanvasTest, DrawPoint001, TestSize.Level1)
63 {
64     Point point;
65     Pen pen;
66     SkiaCanvas skiaCanvas;
67     skiaCanvas.AttachPen(pen);
68     skiaCanvas.DrawPoint(point);
69 
70     skiaCanvas.ImportSkCanvas(nullptr);
71     skiaCanvas.AttachPen(pen);
72     skiaCanvas.DrawPoint(point);
73 }
74 
75 /**
76  * @tc.name: DrawLine001
77  * @tc.desc:
78  * @tc.type: FUNC
79  * @tc.author:
80  */
81 HWTEST_F(SkiaCanvasTest, DrawLine001, TestSize.Level1)
82 {
83     Point startPt;
84     Point endPt;
85     Pen pen;
86     SkiaCanvas skiaCanvas;
87     skiaCanvas.AttachPen(pen);
88     skiaCanvas.DrawLine(startPt, endPt);
89 
90     skiaCanvas.ImportSkCanvas(nullptr);
91     skiaCanvas.DrawLine(startPt, endPt);
92 }
93 
94 /**
95  * @tc.name: DrawRect001
96  * @tc.desc:
97  * @tc.type: FUNC
98  * @tc.author:
99  */
100 HWTEST_F(SkiaCanvasTest, DrawRect001, TestSize.Level1)
101 {
102     Rect rect;
103     Pen pen;
104     SkiaCanvas skiaCanvas;
105     skiaCanvas.AttachPen(pen);
106     skiaCanvas.DrawRect(rect);
107 
108     skiaCanvas.ImportSkCanvas(nullptr);
109     skiaCanvas.DrawRect(rect);
110 }
111 
112 /**
113  * @tc.name: DrawRoundRect001
114  * @tc.desc:
115  * @tc.type: FUNC
116  * @tc.author:
117  */
118 HWTEST_F(SkiaCanvasTest, DrawRoundRect001, TestSize.Level1)
119 {
120     RoundRect roundRect;
121     Pen pen;
122     SkiaCanvas skiaCanvas;
123     skiaCanvas.AttachPen(pen);
124     skiaCanvas.DrawRoundRect(roundRect);
125 
126     skiaCanvas.ImportSkCanvas(nullptr);
127     skiaCanvas.DrawRoundRect(roundRect);
128 }
129 
130 /**
131  * @tc.name: DrawNestedRoundRect001
132  * @tc.desc:
133  * @tc.type: FUNC
134  * @tc.author:
135  */
136 HWTEST_F(SkiaCanvasTest, DrawNestedRoundRect001, TestSize.Level1)
137 {
138     RoundRect outer;
139     RoundRect inner;
140     Pen pen;
141     SkiaCanvas skiaCanvas;
142     skiaCanvas.AttachPen(pen);
143     skiaCanvas.DrawNestedRoundRect(outer, inner);
144 
145     skiaCanvas.ImportSkCanvas(nullptr);
146     skiaCanvas.DrawNestedRoundRect(outer, inner);
147 }
148 
149 /**
150  * @tc.name: DrawArc001
151  * @tc.desc:
152  * @tc.type: FUNC
153  * @tc.author:
154  */
155 HWTEST_F(SkiaCanvasTest, DrawArc001, TestSize.Level1)
156 {
157     Rect oval;
158     scalar startAngle = 30.0f;
159     scalar sweepAngle = 45.0f;
160     Pen pen;
161     SkiaCanvas skiaCanvas;
162     skiaCanvas.AttachPen(pen);
163     skiaCanvas.DrawArc(oval, startAngle, sweepAngle);
164 
165     skiaCanvas.ImportSkCanvas(nullptr);
166     skiaCanvas.DrawArc(oval, startAngle, sweepAngle);
167 }
168 
169 /**
170  * @tc.name: DrawPie001
171  * @tc.desc:
172  * @tc.type: FUNC
173  * @tc.author:
174  */
175 HWTEST_F(SkiaCanvasTest, DrawPie001, TestSize.Level1)
176 {
177     Rect oval;
178     scalar startAngle = 45.0f;
179     scalar sweepAngle = 60.0f;
180     Pen pen;
181     SkiaCanvas skiaCanvas;
182     skiaCanvas.AttachPen(pen);
183     skiaCanvas.DrawPie(oval, startAngle, sweepAngle);
184 
185     skiaCanvas.ImportSkCanvas(nullptr);
186     skiaCanvas.DrawPie(oval, startAngle, sweepAngle);
187 }
188 
189 /**
190  * @tc.name: DrawOval001
191  * @tc.desc:
192  * @tc.type: FUNC
193  * @tc.author:
194  */
195 HWTEST_F(SkiaCanvasTest, DrawOval001, TestSize.Level1)
196 {
197     Rect oval;
198     Pen pen;
199     SkiaCanvas skiaCanvas;
200     skiaCanvas.AttachPen(pen);
201     skiaCanvas.DrawOval(oval);
202 
203     skiaCanvas.ImportSkCanvas(nullptr);
204     skiaCanvas.DrawOval(oval);
205 }
206 
207 /**
208  * @tc.name: DrawCircle001
209  * @tc.desc:
210  * @tc.type: FUNC
211  * @tc.author:
212  */
213 HWTEST_F(SkiaCanvasTest, DrawCircle001, TestSize.Level1)
214 {
215     Point centerPt;
216     scalar radius = 20.0f;
217     Pen pen;
218     SkiaCanvas skiaCanvas;
219     skiaCanvas.AttachPen(pen);
220     skiaCanvas.DrawCircle(centerPt, radius);
221 
222     skiaCanvas.ImportSkCanvas(nullptr);
223     skiaCanvas.DrawCircle(centerPt, radius);
224 }
225 
226 /**
227  * @tc.name: DrawPath001
228  * @tc.desc:
229  * @tc.type: FUNC
230  * @tc.author:
231  */
232 HWTEST_F(SkiaCanvasTest, DrawPath001, TestSize.Level1)
233 {
234     Path path;
235     Pen pen;
236     SkiaCanvas skiaCanvas;
237     skiaCanvas.AttachPen(pen);
238     skiaCanvas.DrawPath(path);
239 
240     skiaCanvas.ImportSkCanvas(nullptr);
241     skiaCanvas.DrawPath(path);
242 }
243 
244 /**
245  * @tc.name: DrawBackground001
246  * @tc.desc: Draw Background Test
247  * @tc.type: FUNC
248  * @tc.require: issuel#I6Q4ZH
249  */
250 HWTEST_F(SkiaCanvasTest, DrawBackground001, TestSize.Level2)
251 {
252     Brush brush;
253     SkiaCanvas skiaCanvas;
254     skiaCanvas.DrawBackground(brush);
255 
256     skiaCanvas.ImportSkCanvas(nullptr);
257     skiaCanvas.DrawBackground(brush);
258 }
259 
260 /**
261  * @tc.name: DrawShadow001
262  * @tc.desc: Draw Shadow Test
263  * @tc.type: FUNC
264  * @tc.require: issuel#I6Q4ZH
265  */
266 HWTEST_F(SkiaCanvasTest, DrawShadow001, TestSize.Level2)
267 {
268     Path path;
269     Point3 planeParams;
270     Point3 devLightPos;
271     Color ambientColor;
272     Color spotColor;
273     SkiaCanvas skiaCanvas;
274     skiaCanvas.DrawShadow(path, planeParams, devLightPos, 1.0f, ambientColor, spotColor, ShadowFlags::NONE);
275 
276     skiaCanvas.ImportSkCanvas(nullptr);
277     skiaCanvas.DrawShadow(path, planeParams, devLightPos, 1.0f, ambientColor, spotColor, ShadowFlags::NONE);
278 }
279 
280 /**
281  * @tc.name: DrawBitmap001
282  * @tc.desc:
283  * @tc.type: FUNC
284  * @tc.author:
285  */
286 HWTEST_F(SkiaCanvasTest, DrawBitmap001, TestSize.Level1)
287 {
288     Bitmap bitmap;
289     scalar px = 60.0f;
290     scalar py = 30.0f;
291     Pen pen;
292     SkiaCanvas skiaCanvas;
293     skiaCanvas.AttachPen(pen);
294     skiaCanvas.DrawBitmap(bitmap, px, py);
295 
296     skiaCanvas.ImportSkCanvas(nullptr);
297     skiaCanvas.DrawBitmap(bitmap, px, py);
298 }
299 
300 /**
301  * @tc.name: DrawImage001
302  * @tc.desc:
303  * @tc.type: FUNC
304  * @tc.author:
305  */
306 HWTEST_F(SkiaCanvasTest, DrawImage001, TestSize.Level1)
307 {
308     Image image;
309     scalar px = 30.0f;
310     scalar py = 65.0f;
311     SamplingOptions sampling;
312     Pen pen;
313     SkiaCanvas skiaCanvas;
314     skiaCanvas.AttachPen(pen);
315     skiaCanvas.DrawImage(image, px, py, sampling);
316 
317     skiaCanvas.ImportSkCanvas(nullptr);
318     skiaCanvas.DrawImage(image, px, py, sampling);
319 }
320 
321 /**
322  * @tc.name: DrawImageRect001
323  * @tc.desc:
324  * @tc.type: FUNC
325  * @tc.author:
326  */
327 HWTEST_F(SkiaCanvasTest, DrawImageRect001, TestSize.Level1)
328 {
329     Image image;
330     Rect src;
331     Rect dst;
332     SamplingOptions sampling;
333     Pen pen;
334     SkiaCanvas skiaCanvas;
335     skiaCanvas.AttachPen(pen);
336     skiaCanvas.DrawImageRect(image, src, dst, sampling, SrcRectConstraint::STRICT_SRC_RECT_CONSTRAINT);
337 
338     skiaCanvas.ImportSkCanvas(nullptr);
339     skiaCanvas.DrawImageRect(image, src, dst, sampling, SrcRectConstraint::STRICT_SRC_RECT_CONSTRAINT);
340 }
341 
342 /**
343  * @tc.name: DrawImageRect002
344  * @tc.desc:
345  * @tc.type: FUNC
346  * @tc.author:
347  */
348 HWTEST_F(SkiaCanvasTest, DrawImageRect002, TestSize.Level1)
349 {
350     Image image;
351     Rect dst;
352     SamplingOptions sampling;
353     Pen pen;
354     SkiaCanvas skiaCanvas;
355     skiaCanvas.AttachPen(pen);
356     skiaCanvas.DrawImageRect(image, dst, sampling);
357 
358     skiaCanvas.ImportSkCanvas(nullptr);
359     skiaCanvas.DrawImageRect(image, dst, sampling);
360 }
361 
362 /**
363  * @tc.name: DrawPicture001
364  * @tc.desc:
365  * @tc.type: FUNC
366  * @tc.author:
367  */
368 HWTEST_F(SkiaCanvasTest, DrawPicture001, TestSize.Level1)
369 {
370     Picture picture;
371     SkiaCanvas skiaCanvas;
372     skiaCanvas.DrawPicture(picture);
373 
374     skiaCanvas.ImportSkCanvas(nullptr);
375     skiaCanvas.DrawPicture(picture);
376 }
377 
378 /**
379  * @tc.name: ClipRoundRect001
380  * @tc.desc: Clip Round Rect Test
381  * @tc.type: FUNC
382  * @tc.require: issuel#I6Q4ZH
383  */
384 HWTEST_F(SkiaCanvasTest, ClipRoundRect001, TestSize.Level2)
385 {
386     RoundRect roundRect;
387     SkiaCanvas skiaCanvas;
388     skiaCanvas.ClipRoundRect(roundRect, ClipOp::DIFFERENCE, false);
389 
390     skiaCanvas.ImportSkCanvas(nullptr);
391     skiaCanvas.ClipRoundRect(roundRect, ClipOp::DIFFERENCE, false);
392 }
393 
394 /**
395  * @tc.name: ClipPath001
396  * @tc.desc:
397  * @tc.type: FUNC
398  * @tc.author:
399  */
400 HWTEST_F(SkiaCanvasTest, ClipPath001, TestSize.Level1)
401 {
402     Path path;
403     Pen pen;
404     SkiaCanvas skiaCanvas;
405     skiaCanvas.AttachPen(pen);
406     skiaCanvas.ClipPath(path, ClipOp::DIFFERENCE, false);
407 
408     skiaCanvas.ImportSkCanvas(nullptr);
409     skiaCanvas.ClipPath(path, ClipOp::DIFFERENCE, false);
410 }
411 
412 /**
413  * @tc.name: SetMatrix001
414  * @tc.desc:
415  * @tc.type: FUNC
416  * @tc.author:
417  */
418 HWTEST_F(SkiaCanvasTest, SetMatrix001, TestSize.Level1)
419 {
420     Matrix matrix;
421     Pen pen;
422     SkiaCanvas skiaCanvas;
423     skiaCanvas.AttachPen(pen);
424     skiaCanvas.SetMatrix(matrix);
425 
426     skiaCanvas.ImportSkCanvas(nullptr);
427     skiaCanvas.SetMatrix(matrix);
428 }
429 
430 /**
431  * @tc.name: ResetMatrix001
432  * @tc.desc: Reset Matrix Test
433  * @tc.type: FUNC
434  * @tc.require: issuel#I6Q4ZH
435  */
436 HWTEST_F(SkiaCanvasTest, ResetMatrix001, TestSize.Level2)
437 {
438     Matrix matrix;
439     SkiaCanvas skiaCanvas;
440     skiaCanvas.SetMatrix(matrix);
441     skiaCanvas.ResetMatrix();
442 
443     skiaCanvas.ImportSkCanvas(nullptr);
444     skiaCanvas.ResetMatrix();
445 }
446 
447 /**
448  * @tc.name: ConcatMatrix001
449  * @tc.desc:
450  * @tc.type: FUNC
451  * @tc.author:
452  */
453 HWTEST_F(SkiaCanvasTest, ConcatMatrix001, TestSize.Level1)
454 {
455     Matrix matrix;
456     Pen pen;
457     SkiaCanvas skiaCanvas;
458     skiaCanvas.AttachPen(pen);
459     skiaCanvas.ConcatMatrix(matrix);
460 
461     skiaCanvas.ImportSkCanvas(nullptr);
462     skiaCanvas.ConcatMatrix(matrix);
463 }
464 
465 /**
466  * @tc.name: Rotate001
467  * @tc.desc: Rotate Test
468  * @tc.type: FUNC
469  * @tc.require: issuel#I6Q4ZH
470  */
471 HWTEST_F(SkiaCanvasTest, Rotate001, TestSize.Level2)
472 {
473     SkiaCanvas skiaCanvas;
474     skiaCanvas.Rotate(0.1f, 0.2f, 0.3f);
475 
476     skiaCanvas.ImportSkCanvas(nullptr);
477     skiaCanvas.Rotate(0.1f, 0.2f, 0.3f);
478 }
479 
480 /**
481  * @tc.name: Shear001
482  * @tc.desc: Shear Test
483  * @tc.type: FUNC
484  * @tc.require: issuel#I6Q4ZH
485  */
486 HWTEST_F(SkiaCanvasTest, Shear001, TestSize.Level2)
487 {
488     SkiaCanvas skiaCanvas;
489     skiaCanvas.Shear(0.5f, 0.5f);
490 
491     skiaCanvas.ImportSkCanvas(nullptr);
492     skiaCanvas.Shear(0.5f, 0.5f);
493 }
494 
495 /**
496  * @tc.name: Flush001
497  * @tc.desc: Flush Test
498  * @tc.type: FUNC
499  * @tc.require: issuel#I6Q4ZH
500  */
501 HWTEST_F(SkiaCanvasTest, Flush001, TestSize.Level2)
502 {
503     SkiaCanvas skiaCanvas;
504     skiaCanvas.Flush();
505 
506     skiaCanvas.ImportSkCanvas(nullptr);
507     skiaCanvas.Flush();
508 }
509 
510 /**
511  * @tc.name: SaveLayer001
512  * @tc.desc: SaveLayer Test
513  * @tc.type: FUNC
514  * @tc.require: issuel#I6Q4ZH
515  */
516 HWTEST_F(SkiaCanvasTest, SaveLayer001, TestSize.Level2)
517 {
518     Rect rect;
519     Brush brush;
520     SaveLayerOps slo(&rect, &brush);
521     SkiaCanvas skiaCanvas;
522     skiaCanvas.SaveLayer(slo);
523 
524     skiaCanvas.ImportSkCanvas(nullptr);
525     skiaCanvas.SaveLayer(slo);
526 }
527 
528 /**
529  * @tc.name: GetTotalMatrixTest001
530  * @tc.desc: Test for geting the total matrix of SkiaCanvas to device.
531  * @tc.type: FUNC
532  * @tc.require: I782P9
533  */
534 HWTEST_F(SkiaCanvasTest, GetTotalMatrixTest001, TestSize.Level1)
535 {
536     auto skiaCanvas = std::make_shared<SkiaCanvas>();
537     ASSERT_TRUE(skiaCanvas != nullptr);
538 
539     skiaCanvas->ImportSkCanvas(nullptr);
540     auto matrix = skiaCanvas->GetTotalMatrix();
541 }
542 
543 /**
544  * @tc.name: GetLocalClipBoundsTest001
545  * @tc.desc: Test for geting bounds of clip in local coordinates.
546  * @tc.type: FUNC
547  * @tc.require: I782P9
548  */
549 HWTEST_F(SkiaCanvasTest, GetLocalClipBoundsTest001, TestSize.Level1)
550 {
551     auto skiaCanvas = std::make_shared<SkiaCanvas>();
552     ASSERT_TRUE(skiaCanvas != nullptr);
553 
554     skiaCanvas->ImportSkCanvas(nullptr);
555     auto rect = skiaCanvas->GetLocalClipBounds();
556 }
557 
558 /**
559  * @tc.name: GetDeviceClipBoundsTest001
560  * @tc.desc: Test for geting bounds of clip in device corrdinates.
561  * @tc.type: FUNC
562  * @tc.require: I782P9
563  */
564 HWTEST_F(SkiaCanvasTest, GetDeviceClipBoundsTest001, TestSize.Level1)
565 {
566     auto skiaCanvas = std::make_shared<SkiaCanvas>();
567     ASSERT_TRUE(skiaCanvas != nullptr);
568 
569     skiaCanvas->ImportSkCanvas(nullptr);
570     auto rect = skiaCanvas->GetDeviceClipBounds();
571 }
572 
573 #ifdef ACE_ENABLE_GPU
574 /**
575  * @tc.name: GetGPUContextTest001
576  * @tc.desc: Test for geting gpu context.
577  * @tc.type: FUNC
578  * @tc.require: I782P9
579  */
580 HWTEST_F(SkiaCanvasTest, GetGPUContextTest001, TestSize.Level1)
581 {
582     auto skiaCanvas = std::make_shared<SkiaCanvas>();
583     ASSERT_TRUE(skiaCanvas != nullptr);
584 
585     skiaCanvas->ImportSkCanvas(nullptr);
586     auto gpuContetxt = skiaCanvas->GetGPUContext();
587 }
588 #endif
589 } // namespace Drawing
590 } // namespace Rosen
591 } // namespace OHOS