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_brush.h"
18 #include "drawing_error_code.h"
19 #include "drawing_font.h"
20
21 using namespace testing;
22 using namespace testing::ext;
23
24 namespace OHOS {
25 namespace Rosen {
26 namespace Drawing {
27 class NativeFontTest : 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 NativeFontTest::SetUpTestCase() {}
TearDownTestCase()36 void NativeFontTest::TearDownTestCase() {}
SetUp()37 void NativeFontTest::SetUp() {}
TearDown()38 void NativeFontTest::TearDown() {}
39
40 /*
41 * @tc.name: NativeFontTest_GetMetrics001
42 * @tc.desc: test for GetMetrics.
43 * @tc.type: FUNC
44 * @tc.require: AR000GTO5R
45 */
46 HWTEST_F(NativeFontTest, NativeFontTest_GetMetrics001, TestSize.Level1)
47 {
48 OH_Drawing_Font* font = OH_Drawing_FontCreate();
49 EXPECT_NE(font, nullptr);
50 OH_Drawing_Font_Metrics cFontMetrics;
51 EXPECT_TRUE(OH_Drawing_FontGetMetrics(font, &cFontMetrics) >= 0);
52 EXPECT_TRUE(OH_Drawing_FontGetMetrics(font, nullptr) < 0);
53 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
54 EXPECT_TRUE(OH_Drawing_FontGetMetrics(nullptr, nullptr) < 0);
55 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
56 OH_Drawing_FontDestroy(font);
57 }
58
59 /*
60 * @tc.name: NativeFontTest_IsAndSetBaselineSnap002
61 * @tc.desc: test for SetBaselineSnap and IsBaselineSnap.
62 * @tc.type: FUNC
63 * @tc.require: AR000GTO5R
64 */
65 HWTEST_F(NativeFontTest, NativeFontTest_IsAndSetBaselineSnap002, TestSize.Level1)
66 {
67 OH_Drawing_Font* font = OH_Drawing_FontCreate();
68 EXPECT_NE(font, nullptr);
69 OH_Drawing_FontSetBaselineSnap(nullptr, true);
70 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
71 EXPECT_EQ(OH_Drawing_FontIsBaselineSnap(nullptr), false);
72 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
73 OH_Drawing_FontSetBaselineSnap(nullptr, false);
74 EXPECT_EQ(OH_Drawing_FontIsBaselineSnap(nullptr), false);
75 OH_Drawing_FontSetBaselineSnap(font, true);
76 EXPECT_EQ(OH_Drawing_FontIsBaselineSnap(font), true);
77 OH_Drawing_FontSetBaselineSnap(font, false);
78 EXPECT_EQ(OH_Drawing_FontIsBaselineSnap(font), false);
79 OH_Drawing_FontDestroy(font);
80 }
81
82 /*
83 * @tc.name: NativeFontTest_IsAndSetSubpixel003
84 * @tc.desc: test for SetSubpixel and IsSubpixel.
85 * @tc.type: FUNC
86 * @tc.require: AR000GTO5R
87 */
88 HWTEST_F(NativeFontTest, NativeFontTest_IsAndSetSubpixel003, TestSize.Level1)
89 {
90 OH_Drawing_Font* font = OH_Drawing_FontCreate();
91 EXPECT_NE(font, nullptr);
92 OH_Drawing_FontSetSubpixel(nullptr, false);
93 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
94 EXPECT_EQ(OH_Drawing_FontIsSubpixel(nullptr), false);
95 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
96 OH_Drawing_FontSetSubpixel(nullptr, true);
97 EXPECT_EQ(OH_Drawing_FontIsSubpixel(nullptr), false);
98 OH_Drawing_FontSetSubpixel(font, true);
99 EXPECT_EQ(OH_Drawing_FontIsSubpixel(font), true);
100 OH_Drawing_FontSetSubpixel(font, false);
101 EXPECT_EQ(OH_Drawing_FontIsSubpixel(font), false);
102 OH_Drawing_FontDestroy(font);
103 }
104
105 /*
106 * @tc.name: NativeFontTest_TextToGlyphs004
107 * @tc.desc: test for TextToGlyphs.
108 * @tc.type: FUNC
109 * @tc.require: AR000GTO5R
110 */
111 HWTEST_F(NativeFontTest, NativeFontTest_TextToGlyphs004, TestSize.Level1)
112 {
113 OH_Drawing_Font* font = OH_Drawing_FontCreate();
114 OH_Drawing_FontSetTextSize(font, 100); // 100 means font text size
115 EXPECT_NE(font, nullptr);
116 const char *str = "hello world";
117 OH_Drawing_FontCountText(nullptr, str, strlen(str), OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8);
118 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
119 OH_Drawing_FontCountText(font, nullptr, strlen(str), OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8);
120 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
121 uint32_t count = 0;
122 count = OH_Drawing_FontCountText(font, str, strlen(str), OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8);
123 EXPECT_EQ(11, count); // 11 means str length
124
125 uint16_t glyphs[50] = {0}; // 50 means glyphs array number
126 OH_Drawing_FontTextToGlyphs(nullptr, str, 0, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8, glyphs, 0);
127 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
128 OH_Drawing_FontTextToGlyphs(font, nullptr, 0, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8, glyphs, 0);
129 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
130 OH_Drawing_FontTextToGlyphs(font, str, strlen(str), OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8, nullptr, 0);
131 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
132 OH_Drawing_FontTextToGlyphs(font, str, strlen(str), OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8, glyphs, 0);
133 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
134 int glyphsCount = 0;
135 glyphsCount = OH_Drawing_FontTextToGlyphs(font, str, 0,
136 OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8, glyphs, 0);
137 EXPECT_EQ(0, glyphsCount);
138 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
139
140 glyphsCount = OH_Drawing_FontTextToGlyphs(font, str, strlen(str),
141 OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8, glyphs, count);
142 EXPECT_EQ(11, glyphsCount); // 11 means glyphsCount
143
144 float widths[50] = {0.f}; // 50 means widths array number
145 OH_Drawing_FontGetWidths(nullptr, glyphs, glyphsCount, widths);
146 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
147 OH_Drawing_FontGetWidths(font, nullptr, glyphsCount, widths);
148 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
149 OH_Drawing_FontGetWidths(font, glyphs, 0, widths);
150 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
151 OH_Drawing_FontGetWidths(font, glyphs, glyphsCount, nullptr);
152 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
153 OH_Drawing_FontGetWidths(font, glyphs, glyphsCount, widths);
154 EXPECT_EQ(58.0, widths[0]); // 58.0 means glyphs[0] width
155 OH_Drawing_FontDestroy(font);
156 }
157
158 /*
159 * @tc.name: NativeFontTest_SetAndGetScaleX005
160 * @tc.desc: test for SetAndGetScaleX.
161 * @tc.type: FUNC
162 * @tc.require: AR000GTO5R
163 */
164 HWTEST_F(NativeFontTest, NativeFontTest_SetAndGetScaleX005, TestSize.Level1)
165 {
166 OH_Drawing_Font* font = OH_Drawing_FontCreate();
167 EXPECT_NE(font, nullptr);
168 OH_Drawing_FontSetScaleX(nullptr, 2);
169 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
170 EXPECT_TRUE(OH_Drawing_FontGetScaleX(nullptr) == -1);
171 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
172 EXPECT_TRUE(OH_Drawing_FontGetScaleX(font) == 1);
173 OH_Drawing_FontSetScaleX(font, 2);
174 EXPECT_TRUE(OH_Drawing_FontGetScaleX(font) == 2);
175 OH_Drawing_FontDestroy(font);
176 }
177
178 /*
179 * @tc.name: NativeFontTest_GetAndSetEdging006
180 * @tc.desc: test for GetAndSetEdging.
181 * @tc.type: FUNC
182 * @tc.require: AR000GTO5R
183 */
184 HWTEST_F(NativeFontTest, NativeFontTest_GetAndSetEdging006, TestSize.Level1)
185 {
186 OH_Drawing_Font* font = OH_Drawing_FontCreate();
187 EXPECT_NE(font, nullptr);
188 EXPECT_EQ(OH_Drawing_FontGetEdging(font), OH_Drawing_FontEdging::FONT_EDGING_ANTI_ALIAS);
189 EXPECT_EQ(OH_Drawing_FontGetEdging(nullptr), OH_Drawing_FontEdging::FONT_EDGING_ALIAS);
190 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
191 OH_Drawing_FontSetEdging(nullptr, OH_Drawing_FontEdging::FONT_EDGING_ALIAS);
192 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
193 EXPECT_EQ(OH_Drawing_FontGetEdging(font), OH_Drawing_FontEdging::FONT_EDGING_ANTI_ALIAS);
194 OH_Drawing_FontSetEdging(font, OH_Drawing_FontEdging::FONT_EDGING_ALIAS);
195 EXPECT_EQ(OH_Drawing_FontGetEdging(font), OH_Drawing_FontEdging::FONT_EDGING_ALIAS);
196 OH_Drawing_FontSetEdging(font, OH_Drawing_FontEdging::FONT_EDGING_ANTI_ALIAS);
197 EXPECT_EQ(OH_Drawing_FontGetEdging(font), OH_Drawing_FontEdging::FONT_EDGING_ANTI_ALIAS);
198 OH_Drawing_FontSetEdging(font, OH_Drawing_FontEdging::FONT_EDGING_SUBPIXEL_ANTI_ALIAS);
199 EXPECT_EQ(OH_Drawing_FontGetEdging(font), OH_Drawing_FontEdging::FONT_EDGING_SUBPIXEL_ANTI_ALIAS);
200 OH_Drawing_FontDestroy(font);
201 }
202
203 /*
204 * @tc.name: NativeFontTest_GetAndSetForceAutoHinting007
205 * @tc.desc: test for GetAndSetForceAutoHinting.
206 * @tc.type: FUNC
207 * @tc.require: AR000GTO5R
208 */
209 HWTEST_F(NativeFontTest, NativeFontTest_GetAndSetForceAutoHinting007, TestSize.Level1)
210 {
211 OH_Drawing_Font* font = OH_Drawing_FontCreate();
212 EXPECT_NE(font, nullptr);
213 EXPECT_EQ(OH_Drawing_FontIsForceAutoHinting(nullptr), false);
214 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
215 OH_Drawing_FontSetForceAutoHinting(nullptr, true);
216 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
217 EXPECT_EQ(OH_Drawing_FontIsForceAutoHinting(font), false);
218 OH_Drawing_FontSetForceAutoHinting(font, true);
219 EXPECT_EQ(OH_Drawing_FontIsForceAutoHinting(font), true);
220 OH_Drawing_FontSetForceAutoHinting(font, false);
221 EXPECT_EQ(OH_Drawing_FontIsForceAutoHinting(font), false);
222 OH_Drawing_FontDestroy(font);
223 }
224
225 /*
226 * @tc.name: NativeFontTest_GetAndSetHinting008
227 * @tc.desc: test for GetHinting and SetHinting.
228 * @tc.type: FUNC
229 * @tc.require: AR000GTO5R
230 */
231 HWTEST_F(NativeFontTest, NativeFontTest_GetAndSetHinting008, TestSize.Level1)
232 {
233 OH_Drawing_Font* font = OH_Drawing_FontCreate();
234 EXPECT_NE(font, nullptr);
235 EXPECT_TRUE(OH_Drawing_FontGetHinting(nullptr) == OH_Drawing_FontHinting::FONT_HINTING_NONE);
236 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
237 OH_Drawing_FontSetHinting(nullptr, OH_Drawing_FontHinting::FONT_HINTING_NONE);
238 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
239 OH_Drawing_FontSetHinting(font, OH_Drawing_FontHinting::FONT_HINTING_NONE);
240 EXPECT_TRUE(OH_Drawing_FontGetHinting(font) == OH_Drawing_FontHinting::FONT_HINTING_NONE);
241 OH_Drawing_FontSetHinting(font, OH_Drawing_FontHinting::FONT_HINTING_SLIGHT);
242 EXPECT_TRUE(OH_Drawing_FontGetHinting(font) == OH_Drawing_FontHinting::FONT_HINTING_SLIGHT);
243 OH_Drawing_FontSetHinting(font, OH_Drawing_FontHinting::FONT_HINTING_SLIGHT);
244 EXPECT_TRUE(OH_Drawing_FontGetHinting(font) == OH_Drawing_FontHinting::FONT_HINTING_SLIGHT);
245 OH_Drawing_FontDestroy(font);
246 }
247
248 /*
249 * @tc.name: NativeFontTest_GetAndSetEmbeddedBitmaps009
250 * @tc.desc: test for GetEmbeddedBitmaps and SetEmbeddedBitmaps.
251 * @tc.type: FUNC
252 * @tc.require: AR000GTO5R
253 */
254 HWTEST_F(NativeFontTest, NativeFontTest_GetAndSetEmbeddedBitmaps009, TestSize.Level1)
255 {
256 OH_Drawing_Font* font = OH_Drawing_FontCreate();
257 EXPECT_NE(font, nullptr);
258 EXPECT_TRUE(OH_Drawing_FontIsEmbeddedBitmaps(nullptr) == false);
259 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
260 OH_Drawing_FontSetEmbeddedBitmaps(nullptr, true);
261 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
262 OH_Drawing_FontSetEmbeddedBitmaps(font, true);
263 EXPECT_TRUE(OH_Drawing_FontIsEmbeddedBitmaps(font) == true);
264 OH_Drawing_FontSetEmbeddedBitmaps(font, false);
265 EXPECT_TRUE(OH_Drawing_FontIsEmbeddedBitmaps(font) == false);
266 OH_Drawing_FontDestroy(font);
267 }
268
269 /*
270 * @tc.name: NativeFontTest_GetTextSize010
271 * @tc.desc: test for GetTextSize.
272 * @tc.type: FUNC
273 * @tc.require: AR000GTO5R
274 */
275 HWTEST_F(NativeFontTest, NativeFontTest_GetTextSize010, TestSize.Level1)
276 {
277 OH_Drawing_Font* font = OH_Drawing_FontCreate();
278 EXPECT_NE(font, nullptr);
279 OH_Drawing_FontSetTextSize(nullptr, 100);
280 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
281 OH_Drawing_FontGetTextSize(nullptr);
282 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
283 OH_Drawing_FontSetTextSize(font, 100);
284 float size = OH_Drawing_FontGetTextSize(font);
285 EXPECT_EQ(size, 100);
286 OH_Drawing_FontDestroy(font);
287 }
288
289 /*
290 * @tc.name: NativeFontTest_GetTextSkewX011
291 * @tc.desc: test for GetTextSkewX.
292 * @tc.type: FUNC
293 * @tc.require: AR000GTO5R
294 */
295 HWTEST_F(NativeFontTest, NativeFontTest_GetTextSkewX011, TestSize.Level1)
296 {
297 OH_Drawing_Font* font = OH_Drawing_FontCreate();
298 EXPECT_NE(font, nullptr);
299 OH_Drawing_FontSetTextSkewX(nullptr, 10);
300 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
301 OH_Drawing_FontGetTextSkewX(nullptr);
302 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
303 OH_Drawing_FontSetTextSkewX(font, 10);
304 float size = OH_Drawing_FontGetTextSkewX(font);
305 EXPECT_EQ(size, 10);
306 OH_Drawing_FontDestroy(font);
307 }
308
309 /*
310 * @tc.name: NativeFontTest_IsLinearText012
311 * @tc.desc: test for IsLinearText.
312 * @tc.type: FUNC
313 * @tc.require: AR000GTO5R
314 */
315 HWTEST_F(NativeFontTest, NativeFontTest_IsLinearText012, TestSize.Level1)
316 {
317 OH_Drawing_Font* font = OH_Drawing_FontCreate();
318 EXPECT_NE(font, nullptr);
319 OH_Drawing_FontSetLinearText(nullptr, true);
320 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
321 OH_Drawing_FontIsLinearText(nullptr);
322 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
323 bool ret = OH_Drawing_FontIsLinearText(font);
324 EXPECT_EQ(ret, false);
325 OH_Drawing_FontSetLinearText(font, true);
326 ret = OH_Drawing_FontIsLinearText(font);
327 EXPECT_EQ(ret, true);
328 OH_Drawing_FontDestroy(font);
329 }
330
331 /*
332 * @tc.name: NativeFontTest_SetFakeBoldText013
333 * @tc.desc: test for SetFakeBoldText.
334 * @tc.type: FUNC
335 * @tc.require: AR000GTO5R
336 */
337 HWTEST_F(NativeFontTest, NativeFontTest_SetFakeBoldText013, TestSize.Level1)
338 {
339 OH_Drawing_Font* font = OH_Drawing_FontCreate();
340 EXPECT_NE(font, nullptr);
341 OH_Drawing_FontSetFakeBoldText(nullptr, true);
342 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
343 OH_Drawing_FontIsFakeBoldText(nullptr);
344 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
345 bool ret = OH_Drawing_FontIsFakeBoldText(font);
346 EXPECT_EQ(ret, false);
347 OH_Drawing_FontSetFakeBoldText(font, true);
348 ret = OH_Drawing_FontIsFakeBoldText(font);
349 EXPECT_EQ(ret, true);
350 OH_Drawing_FontDestroy(font);
351 }
352
353 /*
354 * @tc.name: NativeFontTest_FontMeasureText014
355 * @tc.desc: test for FontMeasureText.
356 * @tc.type: FUNC
357 * @tc.require: AR000GTO5R
358 */
359 HWTEST_F(NativeFontTest, NativeFontTest_FontMeasureText014, TestSize.Level1)
360 {
361 OH_Drawing_Font* font = OH_Drawing_FontCreate();
362 EXPECT_NE(font, nullptr);
363 OH_Drawing_FontSetTextSize(font, 50);
364 const char* str = "hello world";
365 float textWidth = 0.f;
366 OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS;
367 drawingErrorCode = OH_Drawing_FontMeasureText(nullptr, str, strlen(str),
368 OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8, nullptr, &textWidth);
369 EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
370 EXPECT_EQ(textWidth, 0.f);
371 drawingErrorCode = OH_Drawing_FontMeasureText(font, str, 0, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8,
372 nullptr, &textWidth);
373 EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
374 EXPECT_EQ(textWidth, 0.f);
375 drawingErrorCode = OH_Drawing_FontMeasureText(font, str, strlen(str), OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8,
376 nullptr, &textWidth);
377 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
378 EXPECT_EQ(textWidth, 254.0); // 254.0 is textWidth
379
380 OH_Drawing_FontDestroy(font);
381 }
382
383 /*
384 * @tc.name: NativeFontTest_FontMeasureSingleCharacter015
385 * @tc.desc: test for OH_Drawing_FontMeasureSingleCharacter.
386 * @tc.type: FUNC
387 * @tc.require: AR000GTO5R
388 */
389 HWTEST_F(NativeFontTest, NativeFontTest_FontMeasureSingleCharacter015, TestSize.Level1)
390 {
391 OH_Drawing_Font* font = OH_Drawing_FontCreate();
392 EXPECT_NE(font, nullptr);
393 OH_Drawing_FontSetTextSize(font, 50); // 50 means font text size
394 const char* strOne = "a";
395 const char* strTwo = "你好";
396 float textWidth = 0.f;
397 OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS;
398 drawingErrorCode = OH_Drawing_FontMeasureSingleCharacter(nullptr, strOne, &textWidth);
399 EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
400 EXPECT_EQ(textWidth, 0.f);
401 drawingErrorCode = OH_Drawing_FontMeasureSingleCharacter(font, nullptr, &textWidth);
402 EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
403 EXPECT_EQ(textWidth, 0.f);
404 drawingErrorCode = OH_Drawing_FontMeasureSingleCharacter(font, strOne, nullptr);
405 EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
406 EXPECT_EQ(textWidth, 0.f);
407 const char* strThree = "";
408 drawingErrorCode = OH_Drawing_FontMeasureSingleCharacter(font, strThree, &textWidth);
409 EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
410 EXPECT_EQ(textWidth, 0.f);
411 drawingErrorCode = OH_Drawing_FontMeasureSingleCharacter(font, strOne, &textWidth);
412 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
413 EXPECT_TRUE(textWidth > 0);
414 drawingErrorCode = OH_Drawing_FontMeasureSingleCharacter(font, strTwo, &textWidth);
415 EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
416 EXPECT_TRUE(textWidth > 0);
417 OH_Drawing_FontDestroy(font);
418 }
419 } // namespace Drawing
420 } // namespace Rosen
421 } // namespace OHOS