• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Shenzhen Kaihong Digital Industry Development 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 "drawing_bitmap.h"
17 #include "drawing_brush.h"
18 #include "drawing_canvas.h"
19 #include "drawing_color.h"
20 #include "drawing_color_filter.h"
21 #include "drawing_filter.h"
22 #include "drawing_font.h"
23 #include "drawing_image.h"
24 #include "drawing_mask_filter.h"
25 #include "drawing_matrix.h"
26 #include "drawing_memory_stream.h"
27 #include "drawing_path.h"
28 #include "drawing_pen.h"
29 #include "drawing_point.h"
30 #include "drawing_rect.h"
31 #include "drawing_region.h"
32 #include "drawing_round_rect.h"
33 #include "drawing_sampling_options.h"
34 #include "drawing_shader_effect.h"
35 #include "drawing_text_blob.h"
36 #include "drawing_typeface.h"
37 #include "gtest/gtest.h"
38 #include <random>
39 
40 #define NUMBER_10 10
41 #define NUMBER_100 100
42 
43 using namespace testing;
44 using namespace testing::ext;
45 
46 namespace OHOS {
47 namespace Rosen {
48 namespace Drawing {
49 class DrawingNativeTypeFaceTest : public testing::Test {
50     protected:
51     // 在每个测试用例执行前调用
SetUp()52     void SetUp() override
53     {
54         // 设置代码
55         std::cout << "DrawingNativeTypeFaceTest Setup code called before each test case." << std::endl;
56         OH_Drawing_ErrorCodeReset();
57         std::cout << "DrawingNativeTypeFaceTest errorCodeReset before each test case." << std::endl;
58     }
TearDown()59     void TearDown() override
60     {
61         std::cout << "DrawingNativeTypeFaceTest Setup code called after each test case." << std::endl;
62         OH_Drawing_ErrorCodeReset();
63         std::cout << "DrawingNativeTypeFaceTest errorCodeReset after each test case." << std::endl;
64     }
65 };
66 
67 /*
68  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0100
69  * @tc.name: testTypefaceCreateDefaultNormal
70  * @tc.desc: test for testTypefaceCreateDefaultNormal.
71  * @tc.size  : SmallTest
72  * @tc.type  : Function
73  * @tc.level : Level 0
74  */
75 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateDefaultNormal, Function | SmallTest | Level0) {
76     // 1. OH_Drawing_FontCreate
77     OH_Drawing_Font *font = OH_Drawing_FontCreate();
78     // add assert
79     EXPECT_NE(font, nullptr);
80     // 2. OH_Drawing_TypefaceCreateDefault
81     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateDefault();
82     // add assert
83     EXPECT_NE(typeface, nullptr);
84     // 3. OH_Drawing_FontSetTypeface, call OH_Drawing_FontGetTypeface to get the typeface object
85     OH_Drawing_FontSetTypeface(font, typeface);
86     // add assert
87     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
88     OH_Drawing_Typeface *typefaceGet = OH_Drawing_FontGetTypeface(font);
89     EXPECT_NE(typefaceGet, nullptr);
90     // 4. Free memory
91     OH_Drawing_FontDestroy(font);
92     OH_Drawing_TypefaceDestroy(typeface);
93 }
94 
95 /*
96  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0101
97  * @tc.name: testTypefaceCreateDefaultNull
98  * @tc.desc: test for testTypefaceCreateDefaultNull.
99  * @tc.size  : SmallTest
100  * @tc.type  : Function
101  * @tc.level : Level 3
102  */
103 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateDefaultNull, Function | SmallTest | Level3) {
104     // 1. OH_Drawing_FontCreate
105     OH_Drawing_Font *font = OH_Drawing_FontCreate();
106     // add assert
107     EXPECT_NE(font, nullptr);
108     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateDefault();
109     // add assert
110     EXPECT_NE(typeface, nullptr);
111     // 2. OH_Drawing_FontSetTypeface, pass nullptr as the first parameter and check the error code with
112     // OH_Drawing_ErrorCodeGet
113     OH_Drawing_FontSetTypeface(nullptr, typeface);
114     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
115     OH_Drawing_ErrorCodeReset();
116     // 3. OH_Drawing_FontSetTypeface, pass nullptr as the second parameter
117     OH_Drawing_FontSetTypeface(font, nullptr);
118     OH_Drawing_Typeface *typefaceGet = OH_Drawing_FontGetTypeface(font);
119     EXPECT_NE(typefaceGet, nullptr);
120     // 4. OH_Drawing_FontGetTypeface, pass nullptr as the parameter and check the error code with
121     // OH_Drawing_ErrorCodeGet
122     OH_Drawing_FontGetTypeface(nullptr);
123     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
124     // 5. Free memory
125     OH_Drawing_FontDestroy(font);
126     OH_Drawing_TypefaceDestroy(typeface);
127 }
128 
129 /*
130  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0200
131  * @tc.name: testTypefaceCreateFromFileNormal
132  * @tc.desc: test for testTypefaceCreateFromFileNormal.
133  * @tc.size  : SmallTest
134  * @tc.type  : Function
135  * @tc.level : Level 0
136  */
137 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromFileNormal, Function | SmallTest | Level0) {
138     // 1. OH_Drawing_FontCreate
139     OH_Drawing_Font *font = OH_Drawing_FontCreate();
140     // add assert
141     EXPECT_NE(font, nullptr);
142     // 2. OH_Drawing_TypefaceCreateFromFile
143     OH_Drawing_Typeface *typefaceFromFile =
144         OH_Drawing_TypefaceCreateFromFile("/system/fonts/NotoSansBengaliUI-Regular", 0);
145     // 3. OH_Drawing_FontSetTypeface, call OH_Drawing_FontGetTypeface to get the typeface object
146     OH_Drawing_FontSetTypeface(font, typefaceFromFile);
147     OH_Drawing_Typeface *typefaceGet = OH_Drawing_FontGetTypeface(font);
148     EXPECT_NE(typefaceGet, nullptr);
149     // 4. When the index value is negative, count from the end of the sequence
150     OH_Drawing_Typeface *typefaceFromFile2 =
151         OH_Drawing_TypefaceCreateFromFile("/system/fonts/NotoSansBengaliUI-Regular", -1);
152     OH_Drawing_FontSetTypeface(font, typefaceFromFile2);
153     OH_Drawing_Typeface *typefaceGet2 = OH_Drawing_FontGetTypeface(font);
154     EXPECT_NE(typefaceGet2, nullptr);
155     // 5. Free memory
156     OH_Drawing_FontDestroy(font);
157     OH_Drawing_TypefaceDestroy(typefaceFromFile);
158     OH_Drawing_TypefaceDestroy(typefaceFromFile2);
159 }
160 
161 /*
162  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0201
163  * @tc.name: testTypefaceCreateFromFileNull
164  * @tc.desc: test for testTypefaceCreateFromFileNull.
165  * @tc.size  : SmallTest
166  * @tc.type  : Function
167  * @tc.level : Level 3
168  */
169 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromFileNull, Function | SmallTest | Level3) {
170     // 1. OH_Drawing_FontCreate
171     OH_Drawing_Font *font = OH_Drawing_FontCreate();
172     // add assert
173     EXPECT_NE(font, nullptr);
174     // 2. OH_Drawing_TypefaceCreateFromFile, pass nullptr as the first parameter and check the error code with
175     // OH_Drawing_ErrorCodeGet
176     OH_Drawing_Typeface *typefaceFromFile = OH_Drawing_TypefaceCreateFromFile(nullptr, 0);
177     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
178     OH_Drawing_ErrorCodeReset();
179     // 3. OH_Drawing_TypefaceCreateFromFile, pass nullptr as the second parameter
180     OH_Drawing_Typeface *typefaceFromFile2 =
181         OH_Drawing_TypefaceCreateFromFile("/system/fonts/NotoSansBengaliUI-Regular", 0);
182     OH_Drawing_FontSetTypeface(font, typefaceFromFile2);
183     OH_Drawing_Typeface *typefaceGet = OH_Drawing_FontGetTypeface(font);
184     EXPECT_NE(typefaceGet, nullptr);
185     // 4. OH_Drawing_TypefaceCreateFromFile, pass nullptr as the parameter and check the error code with
186     // OH_Drawing_ErrorCodeGet
187     OH_Drawing_Typeface *typefaceFromFile3 = OH_Drawing_TypefaceCreateFromFile(nullptr, 0);
188     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
189     // 5. Free memory
190     OH_Drawing_FontDestroy(font);
191     OH_Drawing_TypefaceDestroy(typefaceFromFile);
192     OH_Drawing_TypefaceDestroy(typefaceFromFile2);
193     OH_Drawing_TypefaceDestroy(typefaceFromFile3);
194 }
195 
196 /*
197  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0300
198  * @tc.name: testTypefaceCreateFromStreamNormal
199  * @tc.desc: test for testTypefaceCreateFromStreamNormal.
200  * @tc.size  : SmallTest
201  * @tc.type  : Function
202  * @tc.level : Level 0
203  */
204 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromStreamNormal, Function | SmallTest | Level0) {
205     // 1. OH_Drawing_FontCreate
206     OH_Drawing_Font *font = OH_Drawing_FontCreate();
207     // add assert
208     EXPECT_NE(font, nullptr);
209     // 2. OH_Drawing_MemoryStream
210     char testData[] = "Hello";
211     size_t length = sizeof(testData) - 1;
212     OH_Drawing_MemoryStream *memoryStream = OH_Drawing_MemoryStreamCreate(testData, length, false);
213     ASSERT_TRUE(memoryStream != nullptr);
214     // 3. OH_Drawing_TypefaceCreateFromStream
215     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromStream(memoryStream, 1);
216     // add assert
217     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
218     // 4. OH_Drawing_FontSetTypeface, call OH_Drawing_FontGetTypeface to get the typeface object
219     OH_Drawing_FontSetTypeface(font, typeface);
220     OH_Drawing_Typeface *typefaceGet = OH_Drawing_FontGetTypeface(font);
221     EXPECT_NE(typefaceGet, nullptr);
222     // 5. Free memory
223     OH_Drawing_FontDestroy(font);
224     OH_Drawing_TypefaceDestroy(typeface);
225 }
226 
227 /*
228  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0301
229  * @tc.name: testTypefaceCreateFromStreamNull
230  * @tc.desc: test for testTypefaceCreateFromStreamNull.
231  * @tc.size  : SmallTest
232  * @tc.type  : Function
233  * @tc.level : Level 3
234  */
235 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromStreamNull, Function | SmallTest | Level3) {
236     // 1. OH_Drawing_FontCreate
237     OH_Drawing_Font *font = OH_Drawing_FontCreate();
238     // add assert
239     EXPECT_NE(font, nullptr);
240     char testData[] = "Hello";
241     size_t length = sizeof(testData) - 1;
242     OH_Drawing_MemoryStream *memoryStream = OH_Drawing_MemoryStreamCreate(testData, length, false);
243     // 2. OH_Drawing_TypefaceCreateFromStream, pass nullptr as the first parameter and check the error code with
244     // OH_Drawing_ErrorCodeGet
245     OH_Drawing_Typeface *typeface1 = OH_Drawing_TypefaceCreateFromStream(nullptr, 1);
246     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
247     OH_Drawing_ErrorCodeReset();
248     // 3. OH_Drawing_TypefaceCreateFromStream, pass nullptr as the second parameter
249     OH_Drawing_Typeface *typeface2 = OH_Drawing_TypefaceCreateFromStream(memoryStream, 0);
250     // 4. OH_Drawing_TypefaceCreateFromStream, pass nullptr as the parameter and check the error code with
251     // OH_Drawing_ErrorCodeGet
252     OH_Drawing_Typeface *typeface3 = OH_Drawing_TypefaceCreateFromStream(nullptr, 0);
253     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
254     // 5. Free memory
255     OH_Drawing_FontDestroy(font);
256     OH_Drawing_TypefaceDestroy(typeface1);
257     OH_Drawing_TypefaceDestroy(typeface2);
258     OH_Drawing_TypefaceDestroy(typeface3);
259 }
260 
261 /*
262  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0400
263  * @tc.name: testTypefaceCreateDestroyNormal
264  * @tc.desc: test for testTypefaceCreateDestroyNormal.
265  * @tc.size  : SmallTest
266  * @tc.type  : Function
267  * @tc.level : Level 0
268  */
269 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateDestroyNormal, Function | SmallTest | Level0) {
270     // 1. OH_Drawing_TypefaceCreateDefault
271     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateDefault();
272     // add assert
273     EXPECT_NE(typeface, nullptr);
274     // 2. OH_Drawing_TypefaceDestroy
275     OH_Drawing_TypefaceDestroy(typeface);
276 }
277 
278 /*
279  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0401
280  * @tc.name: testTypefaceCreateDestroyNull
281  * @tc.desc: test for testTypefaceCreateDestroyNull.
282  * @tc.size  : SmallTest
283  * @tc.type  : Function
284  * @tc.level : Level 3
285  */
286 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateDestroyNull, Function | SmallTest | Level3) {
287     // 1. OH_Drawing_TypefaceDestroy
288     OH_Drawing_TypefaceDestroy(nullptr);
289     // add assert
290     EXPECT_TRUE(true);
291 }
292 
293 /*
294  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0500
295  * @tc.name: testTypefaceCreateFromFileWithArugumentsNormal
296  * @tc.desc: test for testTypefaceCreateFromFileWithArugumentsNormal.
297  * @tc.size  : SmallTest
298  * @tc.type  : Function
299  * @tc.level : Level 0
300  */
301 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromFileWithArugumentsNormal, Function | SmallTest | Level0) {
302     // 1. OH_Drawing_FontArgumentsCreate
303     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
304     // add assert
305     EXPECT_NE(fontArguments, nullptr);
306     // 2. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
307     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
308     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", 0);
309     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
310     // 3. OH_Drawing_TypefaceCreateFromFileWithArguments
311     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromFileWithArguments(
312         "/system/fonts/NotoSansBengaliUI-Regular", fontArguments);
313     // 4. OH_Drawing_TypefaceDestroy
314     OH_Drawing_TypefaceDestroy(typeface);
315     // 5. OH_Drawing_FontArgumentsDestroy
316     OH_Drawing_FontArgumentsDestroy(fontArguments);
317 }
318 
319 /*
320  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0501
321  * @tc.name: testTypefaceCreateFromFileWithArugumentsNull
322  * @tc.desc: test for testTypefaceCreateFromFileWithArugumentsNull.
323  * @tc.size  : SmallTest
324  * @tc.type  : Function
325  * @tc.level : Level 3
326  */
327 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromFileWithArugumentsNull, Function | SmallTest | Level3) {
328     // 1. OH_Drawing_FontArgumentsCreate
329     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
330     // add assert
331     EXPECT_NE(fontArguments, nullptr);
332     // 2. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
333     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
334     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
335     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
336     // 3. OH_Drawing_TypefaceCreateFromFileWithArguments,the first parameter is nullptr,return nullptr
337     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromFileWithArguments(nullptr, fontArguments);
338     EXPECT_EQ(typeface, nullptr);
339     // 4. OH_Drawing_TypefaceCreateFromFileWithArguments,the second parameter is nullptr,return nullptr
340     OH_Drawing_Typeface *typeface1 = OH_Drawing_TypefaceCreateFromFileWithArguments(
341         "/system/fonts/NotoSansBengaliUI-Regular", nullptr);
342     EXPECT_EQ(typeface1, nullptr);
343     // 5. OH_Drawing_TypefaceDestroy
344     OH_Drawing_TypefaceDestroy(typeface);
345     // 6. OH_Drawing_FontArgumentsDestroy
346     OH_Drawing_FontArgumentsDestroy(fontArguments);
347 }
348 
349 /*
350  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0502
351  * @tc.name: testTypefaceCreateFromFileWithArugumentsAbnormal
352  * @tc.desc: test for testTypefaceCreateFromFileWithArugumentsAbnormal.
353  * @tc.size  : SmallTest
354  * @tc.type  : Function
355  * @tc.level : Level 3
356  */
357 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromFileWithArugumentsAbnormal, Function | SmallTest | Level3) {
358     // 1. OH_Drawing_FontArgumentsCreate
359     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
360     // add assert
361     EXPECT_NE(fontArguments, nullptr);
362     // 2. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
363     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
364     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
365     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
366     // 3. OH_Drawing_TypefaceCreateFromFileWithArguments,the first parameter is nullptr,return nullptr
367     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromFileWithArguments("", fontArguments);
368     EXPECT_EQ(typeface, nullptr);
369     // 4. OH_Drawing_TypefaceCreateFromFileWithArguments,the second parameter is nullptr,return nullptr
370     OH_Drawing_Typeface *typeface1 = OH_Drawing_TypefaceCreateFromFileWithArguments("aaa", nullptr);
371     EXPECT_EQ(typeface1, nullptr);
372     // 5. OH_Drawing_TypefaceDestroy
373     OH_Drawing_TypefaceDestroy(typeface);
374     // 6. OH_Drawing_FontArgumentsDestroy
375     OH_Drawing_FontArgumentsDestroy(fontArguments);
376 }
377 
378 /*
379  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0503
380  * @tc.name: testTypefaceCreateFromFileWithArugumentsMultipleCalls
381  * @tc.desc: test for testTypefaceCreateFromFileWithArugumentsMultipleCalls.
382  * @tc.size  : SmallTest
383  * @tc.type  : Function
384  * @tc.level : Level 3
385  */
386 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromFileWithArugumentsMultipleCalls, Function | SmallTest | Level3) {
387     // 1. OH_Drawing_FontArgumentsCreate
388     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
389     // add assert
390     EXPECT_NE(fontArguments, nullptr);
391     // 2. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
392     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
393     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", 0);
394     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
395     // 3. OH_Drawing_TypefaceCreateFromFileWithArguments
396     OH_Drawing_Typeface *typeface = nullptr;
397     for (int i = 0; i < NUMBER_10; i++)
398     {
399         typeface = OH_Drawing_TypefaceCreateFromFileWithArguments(
400             "/system/fonts/NotoSansBengaliUI-Regular", fontArguments);
401     }
402     // 4. OH_Drawing_TypefaceDestroy
403     OH_Drawing_TypefaceDestroy(typeface);
404     // 5. OH_Drawing_FontArgumentsDestroy
405     OH_Drawing_FontArgumentsDestroy(fontArguments);
406 }
407 
408 /*
409  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0600
410  * @tc.name: testTypefaceCreateFromCurrentNormal
411  * @tc.desc: test for testTypefaceCreateFromCurrentNormal.
412  * @tc.size  : SmallTest
413  * @tc.type  : Function
414  * @tc.level : Level 0
415  */
416 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromCurrentNormal, Function | SmallTest | Level0) {
417     // 1. OH_Drawing_TypefaceCreateFromFile
418     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromFile("/system/fonts/NotoSansBengaliUI-Regular", 0);
419     // add assert
420     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
421     // 2. OH_Drawing_FontArgumentsCreate
422     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
423     // add assert
424     EXPECT_NE(fontArguments, nullptr);
425     // 3. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
426     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
427     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
428     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
429     // 4. OH_Drawing_TypefaceCreateFromCurrent
430     OH_Drawing_Typeface *typeface1 = OH_Drawing_TypefaceCreateFromCurrent(typeface, fontArguments);
431     // add assert
432     EXPECT_EQ(typeface1, nullptr);
433     // 5. OH_Drawing_TypefaceDestroy typeface1
434     OH_Drawing_TypefaceDestroy(typeface1);
435     // 6. OH_Drawing_TypefaceDestroy typeface
436     OH_Drawing_TypefaceDestroy(typeface);
437     // 7. OH_Drawing_FontArgumentsDestroy
438     OH_Drawing_FontArgumentsDestroy(fontArguments);
439 }
440 
441 /*
442  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0601
443  * @tc.name: testTypefaceCreateFromCurrentNull
444  * @tc.desc: test for testTypefaceCreateFromCurrentNull.
445  * @tc.size  : SmallTest
446  * @tc.type  : Function
447  * @tc.level : Level 3
448  */
449 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromCurrentNull, Function | SmallTest | Level3) {
450     // 1. OH_Drawing_TypefaceCreateFromFile
451     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromFile("/system/fonts/NotoSansBengaliUI-Regular", 0);
452     // add assert
453     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
454     // 2. OH_Drawing_FontArgumentsCreate
455     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
456     // add assert
457     EXPECT_NE(fontArguments, nullptr);
458     // 3. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
459     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
460     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
461     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
462     // 4. OH_Drawing_TypefaceCreateFromCurrent,the first parameter is nullptr
463     OH_Drawing_Typeface *typeface1 = OH_Drawing_TypefaceCreateFromCurrent(nullptr, fontArguments);
464     EXPECT_EQ(typeface1, nullptr);
465     // 5. OH_Drawing_TypefaceCreateFromCurrent,the second parameter is nullptr
466     OH_Drawing_Typeface *typeface2 = OH_Drawing_TypefaceCreateFromCurrent(typeface, nullptr);
467     EXPECT_EQ(typeface2, nullptr);
468     // 6. OH_Drawing_TypefaceDestroy typeface1
469     OH_Drawing_TypefaceDestroy(typeface1);
470     // 7. OH_Drawing_TypefaceDestroy typeface
471     OH_Drawing_TypefaceDestroy(typeface);
472     // 8. OH_Drawing_FontArgumentsDestroy
473     OH_Drawing_FontArgumentsDestroy(fontArguments);
474 }
475 
476 /*
477  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0602
478  * @tc.name: testTypefaceCreateFromCurrentMultipleCalls
479  * @tc.desc: test for testTypefaceCreateFromCurrentMultipleCalls.
480  * @tc.size  : SmallTest
481  * @tc.type  : Function
482  * @tc.level : Level 3
483  */
484 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromCurrentMultipleCalls, Function | SmallTest | Level3) {
485     // 1. OH_Drawing_TypefaceCreateFromFile
486     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromFile("/system/fonts/NotoSansBengaliUI-Regular", 0);
487     // add assert
488     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
489     // 2. OH_Drawing_FontArgumentsCreate
490     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
491     // add assert
492     EXPECT_NE(fontArguments, nullptr);
493     // 3. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
494     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
495     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
496     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
497     // 4. OH_Drawing_TypefaceCreateFromCurrent
498     OH_Drawing_Typeface *typeface1 = nullptr;
499     for (int i = 0; i < NUMBER_10; i++)
500     {
501         typeface1 = OH_Drawing_TypefaceCreateFromCurrent(typeface, fontArguments);
502     }
503     // 5. OH_Drawing_TypefaceDestroy typeface1
504     OH_Drawing_TypefaceDestroy(typeface1);
505     // 6. OH_Drawing_TypefaceDestroy typeface
506     OH_Drawing_TypefaceDestroy(typeface);
507     // 7. OH_Drawing_FontArgumentsDestroy
508     OH_Drawing_FontArgumentsDestroy(fontArguments);
509 }
510 
511 } // namespace Drawing
512 } // namespace Rosen
513 } // namespace OHOS