1 /*
2 * Copyright (c) 2023 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 <gtest/gtest.h>
17 #include <gmock/gmock.h>
18
19 #include "texgine_canvas.h"
20
21 using namespace testing;
22 using namespace testing::ext;
23
24 struct MockVars {
25 std::shared_ptr<SkCanvas> skCanvas_ = std::make_shared<SkCanvas>();
26 std::shared_ptr<OHOS::Rosen::TextEngine::TexginePaint> texginePaint_ =
27 std::make_shared<OHOS::Rosen::TextEngine::TexginePaint>();
28 std::shared_ptr<OHOS::Rosen::TextEngine::TexgineRect> texgineRect_ =
29 std::make_shared<OHOS::Rosen::TextEngine::TexgineRect>();
30 std::shared_ptr<OHOS::Rosen::TextEngine::TexgineTextBlob> blob_ =
31 std::make_shared<OHOS::Rosen::TextEngine::TexgineTextBlob>();
32 } g_tcMockvars;
33
InitTcMockVars(struct MockVars && vars)34 void InitTcMockVars(struct MockVars &&vars)
35 {
36 g_tcMockvars = std::move(vars);
37 }
38
drawLine(SkScalar x0,SkScalar y0,SkScalar x1,SkScalar y1,const SkPaint & paint)39 void SkCanvas::drawLine(SkScalar x0, SkScalar y0, SkScalar x1, SkScalar y1, const SkPaint &paint)
40 {
41 }
drawRect(const SkRect & r,const SkPaint & paint)42 void SkCanvas::drawRect(const SkRect &r, const SkPaint &paint)
43 {
44 }
45
drawTextBlob(const SkTextBlob * blob,SkScalar x,SkScalar y,const SkPaint & paint)46 void SkCanvas::drawTextBlob(const SkTextBlob *blob, SkScalar x, SkScalar y, const SkPaint &paint)
47 {
48 }
49
save()50 int SkCanvas::save()
51 {
52 return 0;
53 }
54
translate(SkScalar dx,SkScalar dy)55 void SkCanvas::translate(SkScalar dx, SkScalar dy)
56 {
57 }
58
restore()59 void SkCanvas::restore()
60 {
61 }
62
63 namespace OHOS {
64 namespace Rosen {
65 namespace TextEngine {
66 class TexgineCanvasTest : public testing::Test {
67 };
68
69 /**
70 * @tc.name:DrawLine
71 * @tc.desc: Verify the DrawLine
72 * @tc.type:FUNC
73 */
74 HWTEST_F(TexgineCanvasTest, DrawLine, TestSize.Level1)
75 {
76 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
77 EXPECT_NO_THROW({
78 InitTcMockVars({});
79 tc->DrawLine(0.0, 0.0, 0.0, 0.0, *g_tcMockvars.texginePaint_);
80 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
81 tc->DrawLine(0.0, 0.0, 0.0, 0.0, *g_tcMockvars.texginePaint_);
82 });
83 }
84
85 /**
86 * @tc.name:DrawLine
87 * @tc.desc: Verify the DrawLine001
88 * @tc.type:FUNC
89 */
90 HWTEST_F(TexgineCanvasTest, DrawLine001, TestSize.Level1)
91 {
92 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
93 EXPECT_NO_THROW({
94 InitTcMockVars({});
95 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
96 tc->DrawLine(0.0, 0.0, 0.0, 0.0, *g_tcMockvars.texginePaint_);
97 g_tcMockvars.skCanvas_ = nullptr;
98 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
99 tc->DrawLine(0.0, 0.0, 0.0, 0.0, *g_tcMockvars.texginePaint_);
100 });
101 }
102
103 /**
104 * @tc.name:DrawRect
105 * @tc.desc: Verify the DrawRect
106 * @tc.type:FUNC
107 */
108 HWTEST_F(TexgineCanvasTest, DrawRect, TestSize.Level1)
109 {
110 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
111 EXPECT_NO_THROW({
112 InitTcMockVars({});
113 tc->DrawRect(*g_tcMockvars.texgineRect_, *g_tcMockvars.texginePaint_);
114 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
115 tc->DrawRect(*g_tcMockvars.texgineRect_, *g_tcMockvars.texginePaint_);
116 g_tcMockvars.texgineRect_->SetRect(SkRect::MakeEmpty());
117 tc->DrawRect(*g_tcMockvars.texgineRect_, *g_tcMockvars.texginePaint_);
118 });
119 }
120
121 /**
122 * @tc.name:DrawRect
123 * @tc.desc: Verify the DrawRect001
124 * @tc.type:FUNC
125 */
126 HWTEST_F(TexgineCanvasTest, DrawRect001, TestSize.Level1)
127 {
128 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
129 EXPECT_NO_THROW({
130 InitTcMockVars({});
131 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
132 tc->DrawRect(*g_tcMockvars.texgineRect_, *g_tcMockvars.texginePaint_);
133 g_tcMockvars.skCanvas_ = nullptr;
134 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
135 tc->DrawRect(*g_tcMockvars.texgineRect_, *g_tcMockvars.texginePaint_);
136 g_tcMockvars.texgineRect_->SetRect(SkRect::MakeEmpty());
137 tc->DrawRect(*g_tcMockvars.texgineRect_, *g_tcMockvars.texginePaint_);
138 });
139 }
140
141 /**
142 * @tc.name:DrawTextBlob
143 * @tc.desc: Verify the DrawTextBlob
144 * @tc.type:FUNC
145 */
146 HWTEST_F(TexgineCanvasTest, DrawTextBlob, TestSize.Level1)
147 {
148 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
149 EXPECT_NO_THROW({
150 InitTcMockVars({});
151 tc->DrawTextBlob(g_tcMockvars.blob_, 0.0, 0.0, *g_tcMockvars.texginePaint_);
152 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
153 std::shared_ptr<TexgineTextBlob> blob = nullptr;
154 tc->DrawTextBlob(blob, 0.0, 0.0, *g_tcMockvars.texginePaint_);
155 tc->DrawTextBlob(g_tcMockvars.blob_, 0.0, 0.0, *g_tcMockvars.texginePaint_);
156 });
157 }
158
159 /**
160 * @tc.name:DrawTextBlob
161 * @tc.desc: Verify the DrawTextBlob001
162 * @tc.type:FUNC
163 */
164 HWTEST_F(TexgineCanvasTest, DrawTextBlob001, TestSize.Level1)
165 {
166 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
167 EXPECT_NO_THROW({
168 InitTcMockVars({});
169 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
170 tc->DrawTextBlob(g_tcMockvars.blob_, 0.0, 0.0, *g_tcMockvars.texginePaint_);
171 g_tcMockvars.skCanvas_ = nullptr;
172 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
173 g_tcMockvars.blob_ = nullptr;
174 tc->DrawTextBlob(g_tcMockvars.blob_, 0.0, 0.0, *g_tcMockvars.texginePaint_);
175 });
176 }
177
178 /**
179 * @tc.name:Clear
180 * @tc.desc: Verify the Clear
181 * @tc.type:FUNC
182 */
183 HWTEST_F(TexgineCanvasTest, Clear, TestSize.Level1)
184 {
185 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
186 EXPECT_NO_THROW({
187 InitTcMockVars({});
188 tc->Clear(0);
189 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
190 tc->Clear(0);
191 });
192 }
193
194 /**
195 * @tc.name:Clear
196 * @tc.desc: Verify the Clear001
197 * @tc.type:FUNC
198 */
199 HWTEST_F(TexgineCanvasTest, Clear001, TestSize.Level1)
200 {
201 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
202 EXPECT_NO_THROW({
203 InitTcMockVars({});
204 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
205 tc->Clear(0);
206 g_tcMockvars.skCanvas_ = nullptr;
207 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
208 tc->Clear(0);
209 });
210 }
211
212 /**
213 * @tc.name:Save
214 * @tc.desc: Verify the Save
215 * @tc.type:FUNC
216 */
217 HWTEST_F(TexgineCanvasTest, Save, TestSize.Level1)
218 {
219 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
220 EXPECT_NO_THROW({
221 InitTcMockVars({});
222 EXPECT_EQ(tc->Save(), 1);
223 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
224 EXPECT_EQ(tc->Save(), 0);
225 });
226 }
227
228 /**
229 * @tc.name:Save
230 * @tc.desc: Verify the Save001
231 * @tc.type:FUNC
232 */
233 HWTEST_F(TexgineCanvasTest, Save001, TestSize.Level1)
234 {
235 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
236 EXPECT_NO_THROW({
237 InitTcMockVars({});
238 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
239 EXPECT_EQ(tc->Save(), 1);
240 g_tcMockvars.skCanvas_ = nullptr;
241 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
242 EXPECT_EQ(tc->Save(), 0);
243 });
244 }
245
246 /**
247 * @tc.name:Translate
248 * @tc.desc: Verify the Translate
249 * @tc.type:FUNC
250 */
251 HWTEST_F(TexgineCanvasTest, Translate, TestSize.Level1)
252 {
253 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
254 EXPECT_NO_THROW({
255 InitTcMockVars({});
256 tc->Translate(0.0, 0.0);
257 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
258 tc->Translate(0.0, 0.0);
259 });
260 }
261
262 /**
263 * @tc.name:Translate
264 * @tc.desc: Verify the Translate001
265 * @tc.type:FUNC
266 */
267 HWTEST_F(TexgineCanvasTest, Translate001, TestSize.Level1)
268 {
269 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
270 EXPECT_NO_THROW({
271 InitTcMockVars({});
272 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
273 tc->Translate(0.0, 0.0);
274 g_tcMockvars.skCanvas_ = nullptr;
275 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
276 tc->Translate(0.0, 0.0);
277 });
278 }
279
280 /**
281 * @tc.name:Restore
282 * @tc.desc: Verify the Restore
283 * @tc.type:FUNC
284 */
285 HWTEST_F(TexgineCanvasTest, Restore, TestSize.Level1)
286 {
287 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
288 EXPECT_NO_THROW({
289 InitTcMockVars({});
290 tc->Restore();
291 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
292 tc->Restore();
293 });
294 }
295
296 /**
297 * @tc.name:Restore
298 * @tc.desc: Verify the Restore001
299 * @tc.type:FUNC
300 */
301 HWTEST_F(TexgineCanvasTest, Restore001, TestSize.Level1)
302 {
303 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
304 EXPECT_NO_THROW({
305 InitTcMockVars({});
306 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
307 tc->Restore();
308 g_tcMockvars.skCanvas_ = nullptr;
309 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
310 tc->Restore();
311 });
312 }
313
314 /**
315 * @tc.name:GetCanvas
316 * @tc.desc: Verify the GetCanvas
317 * @tc.type:FUNC
318 */
319 HWTEST_F(TexgineCanvasTest, GetCanvas, TestSize.Level1)
320 {
321 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
322 EXPECT_NO_THROW({
323 InitTcMockVars({});
324 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
325 EXPECT_EQ(tc->GetCanvas(), g_tcMockvars.skCanvas_.get());
326 });
327 }
328 } // namespace TextEngine
329 } // namespace Rosen
330 } // namespace OHOS
331