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:DrawRect
87 * @tc.desc: Verify the DrawRect
88 * @tc.type:FUNC
89 */
90 HWTEST_F(TexgineCanvasTest, DrawRect, TestSize.Level1)
91 {
92 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
93 EXPECT_NO_THROW({
94 InitTcMockVars({});
95 tc->DrawRect(*g_tcMockvars.texgineRect_, *g_tcMockvars.texginePaint_);
96 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
97 tc->DrawRect(*g_tcMockvars.texgineRect_, *g_tcMockvars.texginePaint_);
98 g_tcMockvars.texgineRect_->SetRect(SkRect::MakeEmpty());
99 tc->DrawRect(*g_tcMockvars.texgineRect_, *g_tcMockvars.texginePaint_);
100 });
101 }
102
103 /**
104 * @tc.name:DrawTextBlob
105 * @tc.desc: Verify the DrawTextBlob
106 * @tc.type:FUNC
107 */
108 HWTEST_F(TexgineCanvasTest, DrawTextBlob, TestSize.Level1)
109 {
110 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
111 EXPECT_NO_THROW({
112 InitTcMockVars({});
113 tc->DrawTextBlob(g_tcMockvars.blob_, 0.0, 0.0, *g_tcMockvars.texginePaint_);
114 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
115 std::shared_ptr<TexgineTextBlob> blob = nullptr;
116 tc->DrawTextBlob(blob, 0.0, 0.0, *g_tcMockvars.texginePaint_);
117 tc->DrawTextBlob(g_tcMockvars.blob_, 0.0, 0.0, *g_tcMockvars.texginePaint_);
118 });
119 }
120
121 /**
122 * @tc.name:Clear
123 * @tc.desc: Verify the Clear
124 * @tc.type:FUNC
125 */
126 HWTEST_F(TexgineCanvasTest, Clear, TestSize.Level1)
127 {
128 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
129 EXPECT_NO_THROW({
130 InitTcMockVars({});
131 tc->Clear(0);
132 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
133 tc->Clear(0);
134 });
135 }
136
137 /**
138 * @tc.name:Save
139 * @tc.desc: Verify the Save
140 * @tc.type:FUNC
141 */
142 HWTEST_F(TexgineCanvasTest, Save, TestSize.Level1)
143 {
144 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
145 EXPECT_NO_THROW({
146 InitTcMockVars({});
147 EXPECT_EQ(tc->Save(), 1);
148 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
149 EXPECT_EQ(tc->Save(), 0);
150 });
151 }
152
153 /**
154 * @tc.name:Translate
155 * @tc.desc: Verify the Translate
156 * @tc.type:FUNC
157 */
158 HWTEST_F(TexgineCanvasTest, Translate, TestSize.Level1)
159 {
160 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
161 EXPECT_NO_THROW({
162 InitTcMockVars({});
163 tc->Translate(0.0, 0.0);
164 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
165 tc->Translate(0.0, 0.0);
166 });
167 }
168
169 /**
170 * @tc.name:Restore
171 * @tc.desc: Verify the Restore
172 * @tc.type:FUNC
173 */
174 HWTEST_F(TexgineCanvasTest, Restore, TestSize.Level1)
175 {
176 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
177 EXPECT_NO_THROW({
178 InitTcMockVars({});
179 tc->Restore();
180 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
181 tc->Restore();
182 });
183 }
184
185 /**
186 * @tc.name:GetCanvas
187 * @tc.desc: Verify the GetCanvas
188 * @tc.type:FUNC
189 */
190 HWTEST_F(TexgineCanvasTest, GetCanvas, TestSize.Level1)
191 {
192 std::shared_ptr<TexgineCanvas> tc = std::make_shared<TexgineCanvas>();
193 EXPECT_NO_THROW({
194 InitTcMockVars({});
195 tc->SetCanvas(g_tcMockvars.skCanvas_.get());
196 EXPECT_EQ(tc->GetCanvas(), g_tcMockvars.skCanvas_.get());
197 });
198 }
199 } // namespace TextEngine
200 } // namespace Rosen
201 } // namespace OHOS
202