• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, Hardware
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "gtest/gtest.h"
17 #include "drawing_error_code.h"
18 #include "drawing_path.h"
19 #include "drawing_path_effect.h"
20 #include "drawing_pen.h"
21 
22 using namespace testing;
23 using namespace testing::ext;
24 
25 namespace OHOS {
26 namespace Rosen {
27 namespace Drawing {
28 class NativeDrawingPathEffectTest : public testing::Test {
29 public:
30     static void SetUpTestCase();
31     static void TearDownTestCase();
32     void SetUp() override;
33     void TearDown() override;
34 };
35 
SetUpTestCase()36 void NativeDrawingPathEffectTest::SetUpTestCase() {}
TearDownTestCase()37 void NativeDrawingPathEffectTest::TearDownTestCase() {}
SetUp()38 void NativeDrawingPathEffectTest::SetUp() {}
TearDown()39 void NativeDrawingPathEffectTest::TearDown() {}
40 
41 /*
42  * @tc.name: NativeDrawingPathEffectTest_PathEffect001
43  * @tc.desc: test for PathEffect.
44  * @tc.type: FUNC
45  * @tc.require: AR000GTO5R
46  */
47 HWTEST_F(NativeDrawingPathEffectTest, NativeDrawingPathEffectTest_PathEffect001, TestSize.Level1)
48 {
49     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
50     EXPECT_NE(pen, nullptr);
51     float intervals[] = {1, 1, 1};
52     OH_Drawing_PathEffect* pathEffect = OH_Drawing_CreateDashPathEffect(intervals, 3, 0.0);
53     OH_Drawing_PenSetPathEffect(nullptr, pathEffect);
54     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
55     OH_Drawing_PenSetPathEffect(pen, pathEffect);
56     OH_Drawing_PathEffectDestroy(pathEffect);
57     // 3 is the number of elements of the intervals array
58     pathEffect = OH_Drawing_CreateDashPathEffect(nullptr, 3, 0.0);
59     EXPECT_EQ(pathEffect, nullptr);
60     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
61     pathEffect = OH_Drawing_CreateDashPathEffect(intervals, 0, 0.0);
62     EXPECT_EQ(pathEffect, nullptr);
63     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
64     pathEffect = OH_Drawing_CreateDashPathEffect(intervals, -1, 0.0);
65     EXPECT_EQ(pathEffect, nullptr);
66 }
67 
68 /*
69  * @tc.name: NativeDrawingPathEffectTest_CreatePathDashEffect002
70  * @tc.desc: test for CreatePathDashEffect.
71  * @tc.type: FUNC
72  * @tc.require: IBHEL5
73  */
74 HWTEST_F(NativeDrawingPathEffectTest, NativeDrawingPathEffectTest_CreatePathDashEffect002, TestSize.Level1)
75 {
76     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
77     EXPECT_NE(pen, nullptr);
78     OH_Drawing_Path* path = OH_Drawing_PathCreate();
79     EXPECT_NE(path, nullptr);
80     // 10 is the distance between the dashed segments.
81     OH_Drawing_PathEffect* pathEffect = OH_Drawing_CreatePathDashEffect(path, 10.0, 10.0,
82         OH_Drawing_PathDashStyle::DRAWING_PATH_DASH_STYLE_TRANSLATE);
83     EXPECT_NE(pathEffect, nullptr);
84     OH_Drawing_PenSetPathEffect(nullptr, pathEffect);
85     OH_Drawing_PenSetPathEffect(pen, pathEffect);
86 
87     OH_Drawing_PathEffect* pathEffect2 = OH_Drawing_CreatePathDashEffect(nullptr,
88         10.0, 10.0, OH_Drawing_PathDashStyle::DRAWING_PATH_DASH_STYLE_TRANSLATE);
89     EXPECT_EQ(pathEffect2, nullptr);
90 
91     pathEffect2 = OH_Drawing_CreatePathDashEffect(path,
92         -10.0, 10.0, OH_Drawing_PathDashStyle::DRAWING_PATH_DASH_STYLE_ROTATE);
93     EXPECT_EQ(pathEffect2, nullptr);
94 
95     pathEffect2 = OH_Drawing_CreatePathDashEffect(path,
96         10.0, -10.0, OH_Drawing_PathDashStyle::DRAWING_PATH_DASH_STYLE_MORPH);
97     EXPECT_NE(pathEffect2, nullptr);
98     OH_Drawing_PenDestroy(pen);
99     OH_Drawing_PathDestroy(path);
100     OH_Drawing_PathEffectDestroy(pathEffect);
101     OH_Drawing_PathEffectDestroy(pathEffect2);
102 }
103 
104 /*
105  * @tc.name: NativeDrawingPathEffectTest_CreateSumPathEffect003
106  * @tc.desc: test for CreatePathDashEffect.
107  * @tc.type: FUNC
108  * @tc.require: IBHEL5
109  */
110 HWTEST_F(NativeDrawingPathEffectTest, NativeDrawingPathEffectTest_CreateSumPathEffect003, TestSize.Level1)
111 {
112     float intervals[] = {1, 1, 1};
113     // 3 is the number of elements of the intervals array
114     OH_Drawing_PathEffect* pathEffectOne = OH_Drawing_CreateDashPathEffect(intervals, 3, 0.0);
115     EXPECT_NE(pathEffectOne, nullptr);
116     OH_Drawing_PathEffect* pathEffectTwo = OH_Drawing_CreateDashPathEffect(intervals, 3, 0.0);
117     EXPECT_NE(pathEffectTwo, nullptr);
118     OH_Drawing_PathEffect* pathEffectSum = OH_Drawing_CreateSumPathEffect(nullptr, pathEffectTwo);
119     EXPECT_EQ(pathEffectSum, nullptr);
120     pathEffectSum = OH_Drawing_CreateSumPathEffect(pathEffectOne, nullptr);
121     EXPECT_EQ(pathEffectSum, nullptr);
122     pathEffectSum = OH_Drawing_CreateSumPathEffect(pathEffectOne, pathEffectTwo);
123     EXPECT_NE(pathEffectSum, nullptr);
124     OH_Drawing_PathEffectDestroy(pathEffectOne);
125     OH_Drawing_PathEffectDestroy(pathEffectTwo);
126     OH_Drawing_PathEffectDestroy(pathEffectSum);
127 }
128 
129 /*
130  * @tc.name: NativeDrawingPathEffectTest_PathEffect004
131  * @tc.desc: test for PathEffect.
132  * @tc.type: FUNC
133  * @tc.require: IBHEL5
134  */
135 HWTEST_F(NativeDrawingPathEffectTest, NativeDrawingPathEffectTest_CreateDiscretePathEffect004, TestSize.Level1)
136 {
137     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
138     EXPECT_NE(pen, nullptr);
139     float segLength = 1.0;
140     float dev = 1.0;
141     OH_Drawing_PathEffect* pathEffect = OH_Drawing_CreateDiscretePathEffect(segLength, dev);
142     EXPECT_NE(pathEffect, nullptr);
143     OH_Drawing_PenSetPathEffect(pen, pathEffect);
144     OH_Drawing_PathEffect* pathEffect1 = OH_Drawing_CreateDiscretePathEffect(0.0, dev);
145     EXPECT_NE(pathEffect1, nullptr);
146     OH_Drawing_PathEffect* pathEffect2 = OH_Drawing_CreateDiscretePathEffect(segLength, 0.0);
147     EXPECT_NE(pathEffect2, nullptr);
148     OH_Drawing_PathEffect* pathEffect3 = OH_Drawing_CreateDiscretePathEffect(-2.0, dev); // -2.0 means segLength
149     EXPECT_NE(pathEffect3, nullptr);
150     OH_Drawing_PathEffect* pathEffect4 = OH_Drawing_CreateDiscretePathEffect(-2.0, -2.0); // -2.0 means segLength
151     EXPECT_NE(pathEffect4, nullptr);
152 
153     OH_Drawing_PathEffectDestroy(pathEffect);
154     OH_Drawing_PathEffectDestroy(pathEffect1);
155     OH_Drawing_PathEffectDestroy(pathEffect2);
156     OH_Drawing_PathEffectDestroy(pathEffect3);
157     OH_Drawing_PathEffectDestroy(pathEffect4);
158     OH_Drawing_PenDestroy(pen);
159 }
160 
161 /*
162  * @tc.name: NativeDrawingPathEffectTest_PathEffect005
163  * @tc.desc: test for PathEffect.
164  * @tc.type: FUNC
165  * @tc.require: IBHEL5
166  */
167 HWTEST_F(NativeDrawingPathEffectTest, NativeDrawingPathEffectTest_CreateCornerPathEffect005, TestSize.Level1)
168 {
169     OH_Drawing_PathEffect* pathEffect = OH_Drawing_CreateCornerPathEffect(0);
170     EXPECT_EQ(pathEffect, nullptr);
171     pathEffect = OH_Drawing_CreateCornerPathEffect(-2.0); // -2.0 means radius
172     EXPECT_EQ(pathEffect, nullptr);
173     uint32_t radius = 1;
174     pathEffect = OH_Drawing_CreateCornerPathEffect(radius);
175     EXPECT_NE(pathEffect, nullptr);
176     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
177     EXPECT_NE(pen, nullptr);
178     OH_Drawing_PenSetPathEffect(pen, pathEffect);
179     OH_Drawing_PathEffectDestroy(pathEffect);
180     OH_Drawing_PenDestroy(pen);
181 }
182 
183 /*
184  * @tc.name: NativeDrawingPathEffectTest_PathEffect006
185  * @tc.desc: test for PathEffect.
186  * @tc.type: FUNC
187  * @tc.require: IBHEL5
188  */
189 HWTEST_F(NativeDrawingPathEffectTest, NativeDrawingPathEffectTest_CreateComposePathEffect006, TestSize.Level1)
190 {
191     OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
192     EXPECT_NE(pen, nullptr);
193     uint32_t radius = 1;
194     OH_Drawing_PathEffect* pathEffect1 = OH_Drawing_CreateCornerPathEffect(radius);
195     EXPECT_NE(pathEffect1, nullptr);
196     radius = 2; // 2 means radius
197     OH_Drawing_PathEffect* pathEffect2 = OH_Drawing_CreateCornerPathEffect(radius);
198     EXPECT_NE(pathEffect2, nullptr);
199     OH_Drawing_PathEffect* pathEffect = OH_Drawing_CreateComposePathEffect(nullptr, pathEffect2);
200     EXPECT_EQ(pathEffect, nullptr);
201     pathEffect = OH_Drawing_CreateComposePathEffect(pathEffect1, nullptr);
202     EXPECT_EQ(pathEffect, nullptr);
203     pathEffect = OH_Drawing_CreateComposePathEffect(pathEffect1, pathEffect2);
204     EXPECT_NE(pathEffect, nullptr);
205     OH_Drawing_PenSetPathEffect(pen, pathEffect);
206 
207     OH_Drawing_PathEffectDestroy(pathEffect1);
208     OH_Drawing_PathEffectDestroy(pathEffect2);
209     OH_Drawing_PathEffectDestroy(pathEffect);
210     OH_Drawing_PenDestroy(pen);
211 }
212 } // namespace Drawing
213 } // namespace Rosen
214 } // namespace OHOS