• 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 "utils/scalar.h"
38 #include "gtest/gtest.h"
39 #include <random>
40 
41 #define NUMBER_10 10
42 #define NUMBER_100 100
43 
44 using namespace testing;
45 using namespace testing::ext;
46 
47 namespace OHOS {
48 namespace Rosen {
49 namespace Drawing {
50 class DrawingNativeTypeFaceTest : public testing::Test {};
51 
52 /*
53  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0100
54  * @tc.name: testTypefaceCreateDefaultNormal
55  * @tc.desc: test for testTypefaceCreateDefaultNormal.
56  * @tc.size  : SmallTest
57  * @tc.type  : Function
58  * @tc.level : Level 0
59  */
60 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateDefaultNormal, TestSize.Level0) {
61     // 1. OH_Drawing_FontCreate
62     OH_Drawing_Font *font = OH_Drawing_FontCreate();
63     // 2. OH_Drawing_TypefaceCreateDefault
64     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateDefault();
65     // 3. OH_Drawing_FontSetTypeface, call OH_Drawing_FontGetTypeface to get the typeface object
66     OH_Drawing_FontSetTypeface(font, typeface);
67     OH_Drawing_Typeface *typefaceGet = OH_Drawing_FontGetTypeface(font);
68     EXPECT_NE(typefaceGet, nullptr);
69     // 4. Free memory
70     OH_Drawing_FontDestroy(font);
71     OH_Drawing_TypefaceDestroy(typeface);
72 }
73 
74 /*
75  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0101
76  * @tc.name: testTypefaceCreateDefaultNull
77  * @tc.desc: test for testTypefaceCreateDefaultNull.
78  * @tc.size  : SmallTest
79  * @tc.type  : Function
80  * @tc.level : Level 3
81  */
82 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateDefaultNull, TestSize.Level3) {
83     // 1. OH_Drawing_FontCreate
84     OH_Drawing_Font *font = OH_Drawing_FontCreate();
85     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateDefault();
86     // 2. OH_Drawing_FontSetTypeface, pass nullptr as the first parameter and check the error code with
87     // OH_Drawing_ErrorCodeGet
88     OH_Drawing_FontSetTypeface(nullptr, typeface);
89     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
90     // 3. OH_Drawing_FontSetTypeface, pass nullptr as the second parameter
91     OH_Drawing_FontSetTypeface(font, nullptr);
92     OH_Drawing_Typeface *typefaceGet = OH_Drawing_FontGetTypeface(font);
93     EXPECT_NE(typefaceGet, nullptr);
94     // 4. OH_Drawing_FontGetTypeface, pass nullptr as the parameter and check the error code with
95     // OH_Drawing_ErrorCodeGet
96     OH_Drawing_FontGetTypeface(nullptr);
97     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
98     // 5. Free memory
99     OH_Drawing_FontDestroy(font);
100     OH_Drawing_TypefaceDestroy(typeface);
101 }
102 
103 /*
104  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0200
105  * @tc.name: testTypefaceCreateFromFileNormal
106  * @tc.desc: test for testTypefaceCreateFromFileNormal.
107  * @tc.size  : SmallTest
108  * @tc.type  : Function
109  * @tc.level : Level 0
110  */
111 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromFileNormal, TestSize.Level0) {
112     // 1. OH_Drawing_FontCreate
113     OH_Drawing_Font *font = OH_Drawing_FontCreate();
114     // 2. OH_Drawing_TypefaceCreateFromFile
115     OH_Drawing_Typeface *typefaceFromFile =
116         OH_Drawing_TypefaceCreateFromFile("/system/fonts/NotoSansBengaliUI-Regular", 0);
117     // 3. OH_Drawing_FontSetTypeface, call OH_Drawing_FontGetTypeface to get the typeface object
118     OH_Drawing_FontSetTypeface(font, typefaceFromFile);
119     OH_Drawing_Typeface *typefaceGet = OH_Drawing_FontGetTypeface(font);
120     EXPECT_NE(typefaceGet, nullptr);
121     // 4. When the index value is negative, count from the end of the sequence
122     OH_Drawing_Typeface *typefaceFromFile2 =
123         OH_Drawing_TypefaceCreateFromFile("/system/fonts/NotoSansBengaliUI-Regular", -1);
124     OH_Drawing_FontSetTypeface(font, typefaceFromFile2);
125     OH_Drawing_Typeface *typefaceGet2 = OH_Drawing_FontGetTypeface(font);
126     EXPECT_NE(typefaceGet2, nullptr);
127     // 5. Free memory
128     OH_Drawing_FontDestroy(font);
129     OH_Drawing_TypefaceDestroy(typefaceFromFile);
130     OH_Drawing_TypefaceDestroy(typefaceFromFile2);
131 }
132 
133 /*
134  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0201
135  * @tc.name: testTypefaceCreateFromFileNull
136  * @tc.desc: test for testTypefaceCreateFromFileNull.
137  * @tc.size  : SmallTest
138  * @tc.type  : Function
139  * @tc.level : Level 3
140  */
141 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromFileNull, TestSize.Level3) {
142     // 1. OH_Drawing_FontCreate
143     OH_Drawing_Font *font = OH_Drawing_FontCreate();
144     // 2. OH_Drawing_TypefaceCreateFromFile, pass nullptr as the first parameter and check the error code with
145     // OH_Drawing_ErrorCodeGet
146     OH_Drawing_Typeface *typefaceFromFile = OH_Drawing_TypefaceCreateFromFile(nullptr, 0);
147     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
148     // 3. OH_Drawing_TypefaceCreateFromFile, pass nullptr as the second parameter
149     OH_Drawing_Typeface *typefaceFromFile2 =
150         OH_Drawing_TypefaceCreateFromFile("/system/fonts/NotoSansBengaliUI-Regular", 0);
151     OH_Drawing_FontSetTypeface(font, typefaceFromFile2);
152     OH_Drawing_Typeface *typefaceGet = OH_Drawing_FontGetTypeface(font);
153     EXPECT_NE(typefaceGet, nullptr);
154     // 4. OH_Drawing_TypefaceCreateFromFile, pass nullptr as the parameter and check the error code with
155     // OH_Drawing_ErrorCodeGet
156     OH_Drawing_Typeface *typefaceFromFile3 = OH_Drawing_TypefaceCreateFromFile(nullptr, 0);
157     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
158     // 5. Free memory
159     OH_Drawing_FontDestroy(font);
160     OH_Drawing_TypefaceDestroy(typefaceFromFile);
161     OH_Drawing_TypefaceDestroy(typefaceFromFile2);
162     OH_Drawing_TypefaceDestroy(typefaceFromFile3);
163 }
164 
165 /*
166  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0300
167  * @tc.name: testTypefaceCreateFromStreamNormal
168  * @tc.desc: test for testTypefaceCreateFromStreamNormal.
169  * @tc.size  : SmallTest
170  * @tc.type  : Function
171  * @tc.level : Level 0
172  */
173 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromStreamNormal, TestSize.Level0) {
174     // 1. OH_Drawing_FontCreate
175     OH_Drawing_Font *font = OH_Drawing_FontCreate();
176     // 2. OH_Drawing_MemoryStream
177     char testData[] = "Hello";
178     size_t length = sizeof(testData) - 1;
179     OH_Drawing_MemoryStream *memoryStream = OH_Drawing_MemoryStreamCreate(testData, length, false);
180     ASSERT_TRUE(memoryStream != nullptr);
181     // 3. OH_Drawing_TypefaceCreateFromStream
182     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromStream(memoryStream, 1);
183     // 4. OH_Drawing_FontSetTypeface, call OH_Drawing_FontGetTypeface to get the typeface object
184     OH_Drawing_FontSetTypeface(font, typeface);
185     OH_Drawing_Typeface *typefaceGet = OH_Drawing_FontGetTypeface(font);
186     EXPECT_NE(typefaceGet, nullptr);
187     // 5. Free memory
188     OH_Drawing_FontDestroy(font);
189     OH_Drawing_TypefaceDestroy(typeface);
190 }
191 
192 /*
193  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0301
194  * @tc.name: testTypefaceCreateFromStreamNull
195  * @tc.desc: test for testTypefaceCreateFromStreamNull.
196  * @tc.size  : SmallTest
197  * @tc.type  : Function
198  * @tc.level : Level 3
199  */
200 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromStreamNull, TestSize.Level3) {
201     // 1. OH_Drawing_FontCreate
202     OH_Drawing_Font *font = OH_Drawing_FontCreate();
203     char testData[] = "Hello";
204     size_t length = sizeof(testData) - 1;
205     OH_Drawing_MemoryStream *memoryStream = OH_Drawing_MemoryStreamCreate(testData, length, false);
206     // 2. OH_Drawing_TypefaceCreateFromStream, pass nullptr as the first parameter and check the error code with
207     // OH_Drawing_ErrorCodeGet
208     OH_Drawing_Typeface *typeface1 = OH_Drawing_TypefaceCreateFromStream(nullptr, 1);
209     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
210     // 3. OH_Drawing_TypefaceCreateFromStream, pass nullptr as the second parameter
211     OH_Drawing_Typeface *typeface2 = OH_Drawing_TypefaceCreateFromStream(memoryStream, 0);
212     // 4. OH_Drawing_TypefaceCreateFromStream, pass nullptr as the parameter and check the error code with
213     // OH_Drawing_ErrorCodeGet
214     OH_Drawing_Typeface *typeface3 = OH_Drawing_TypefaceCreateFromStream(nullptr, 0);
215     EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
216     // 5. Free memory
217     OH_Drawing_FontDestroy(font);
218     OH_Drawing_TypefaceDestroy(typeface1);
219     OH_Drawing_TypefaceDestroy(typeface2);
220     OH_Drawing_TypefaceDestroy(typeface3);
221 }
222 
223 /*
224  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0400
225  * @tc.name: testTypefaceCreateDestroyNormal
226  * @tc.desc: test for testTypefaceCreateDestroyNormal.
227  * @tc.size  : SmallTest
228  * @tc.type  : Function
229  * @tc.level : Level 0
230  */
231 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateDestroyNormal, TestSize.Level0) {
232     // 1. OH_Drawing_TypefaceCreateDefault
233     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateDefault();
234     // 2. OH_Drawing_TypefaceDestroy
235     OH_Drawing_TypefaceDestroy(typeface);
236 }
237 
238 /*
239  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0401
240  * @tc.name: testTypefaceCreateDestroyNull
241  * @tc.desc: test for testTypefaceCreateDestroyNull.
242  * @tc.size  : SmallTest
243  * @tc.type  : Function
244  * @tc.level : Level 3
245  */
246 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateDestroyNull, TestSize.Level3) {
247     // 1. OH_Drawing_TypefaceDestroy
248     OH_Drawing_TypefaceDestroy(nullptr);
249 }
250 
251 /*
252  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0500
253  * @tc.name: testTypefaceCreateFromFileWithArugumentsNormal
254  * @tc.desc: test for testTypefaceCreateFromFileWithArugumentsNormal.
255  * @tc.size  : SmallTest
256  * @tc.type  : Function
257  * @tc.level : Level 0
258  */
259 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromFileWithArugumentsNormal, TestSize.Level0) {
260     // 1. OH_Drawing_FontArgumentsCreate
261     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
262     // 2. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
263     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
264     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", 0);
265     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
266     // 3. OH_Drawing_TypefaceCreateFromFileWithArguments
267     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromFileWithArguments(
268         "/system/fonts/NotoSansBengaliUI-Regular", fontArguments);
269     // 4. OH_Drawing_TypefaceDestroy
270     OH_Drawing_TypefaceDestroy(typeface);
271     // 5. OH_Drawing_FontArgumentsDestroy
272     OH_Drawing_FontArgumentsDestroy(fontArguments);
273 }
274 
275 /*
276  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0501
277  * @tc.name: testTypefaceCreateFromFileWithArugumentsNull
278  * @tc.desc: test for testTypefaceCreateFromFileWithArugumentsNull.
279  * @tc.size  : SmallTest
280  * @tc.type  : Function
281  * @tc.level : Level 3
282  */
283 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromFileWithArugumentsNull, TestSize.Level3) {
284     // 1. OH_Drawing_FontArgumentsCreate
285     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
286     // 2. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
287     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
288     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
289     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
290     // 3. OH_Drawing_TypefaceCreateFromFileWithArguments,the first parameter is nullptr,return nullptr
291     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromFileWithArguments(nullptr, fontArguments);
292     EXPECT_EQ(typeface, nullptr);
293     // 4. OH_Drawing_TypefaceCreateFromFileWithArguments,the second parameter is nullptr,return nullptr
294     OH_Drawing_Typeface *typeface1 = OH_Drawing_TypefaceCreateFromFileWithArguments(
295         "/system/fonts/NotoSansBengaliUI-Regular", nullptr);
296     EXPECT_EQ(typeface1, nullptr);
297     // 5. OH_Drawing_TypefaceDestroy
298     OH_Drawing_TypefaceDestroy(typeface);
299     // 6. OH_Drawing_FontArgumentsDestroy
300     OH_Drawing_FontArgumentsDestroy(fontArguments);
301 }
302 
303 /*
304  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0502
305  * @tc.name: testTypefaceCreateFromFileWithArugumentsAbnormal
306  * @tc.desc: test for testTypefaceCreateFromFileWithArugumentsAbnormal.
307  * @tc.size  : SmallTest
308  * @tc.type  : Function
309  * @tc.level : Level 3
310  */
311 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromFileWithArugumentsAbnormal, TestSize.Level3) {
312     // 1. OH_Drawing_FontArgumentsCreate
313     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
314     // 2. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
315     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
316     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
317     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
318     // 3. OH_Drawing_TypefaceCreateFromFileWithArguments,the first parameter is nullptr,return nullptr
319     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromFileWithArguments("", fontArguments);
320     EXPECT_EQ(typeface, nullptr);
321     // 4. OH_Drawing_TypefaceCreateFromFileWithArguments,the second parameter is nullptr,return nullptr
322     OH_Drawing_Typeface *typeface1 = OH_Drawing_TypefaceCreateFromFileWithArguments("aaa", nullptr);
323     EXPECT_EQ(typeface1, nullptr);
324     // 5. OH_Drawing_TypefaceDestroy
325     OH_Drawing_TypefaceDestroy(typeface);
326     // 6. OH_Drawing_FontArgumentsDestroy
327     OH_Drawing_FontArgumentsDestroy(fontArguments);
328 }
329 
330 /*
331  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0503
332  * @tc.name: testTypefaceCreateFromFileWithArugumentsMultipleCalls
333  * @tc.desc: test for testTypefaceCreateFromFileWithArugumentsMultipleCalls.
334  * @tc.size  : SmallTest
335  * @tc.type  : Function
336  * @tc.level : Level 3
337  */
338 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromFileWithArugumentsMultipleCalls, TestSize.Level3) {
339     // 1. OH_Drawing_FontArgumentsCreate
340     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
341     // 2. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
342     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
343     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", 0);
344     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
345     // 3. OH_Drawing_TypefaceCreateFromFileWithArguments
346     OH_Drawing_Typeface *typeface = nullptr;
347     for (int i = 0; i < NUMBER_10; i++)
348     {
349         typeface = OH_Drawing_TypefaceCreateFromFileWithArguments(
350             "/system/fonts/NotoSansBengaliUI-Regular", fontArguments);
351     }
352     // 4. OH_Drawing_TypefaceDestroy
353     OH_Drawing_TypefaceDestroy(typeface);
354     // 5. OH_Drawing_FontArgumentsDestroy
355     OH_Drawing_FontArgumentsDestroy(fontArguments);
356 }
357 
358 /*
359  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0600
360  * @tc.name: testTypefaceCreateFromCurrentNormal
361  * @tc.desc: test for testTypefaceCreateFromCurrentNormal.
362  * @tc.size  : SmallTest
363  * @tc.type  : Function
364  * @tc.level : Level 0
365  */
366 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromCurrentNormal, TestSize.Level0) {
367     // 1. OH_Drawing_TypefaceCreateFromFile
368     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromFile("/system/fonts/NotoSansBengaliUI-Regular", 0);
369     // 2. OH_Drawing_FontArgumentsCreate
370     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
371     // 3. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
372     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
373     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
374     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
375     // 4. OH_Drawing_TypefaceCreateFromCurrent
376     OH_Drawing_Typeface *typeface1 = OH_Drawing_TypefaceCreateFromCurrent(typeface, fontArguments);
377     // 5. OH_Drawing_TypefaceDestroy typeface1
378     OH_Drawing_TypefaceDestroy(typeface1);
379     // 6. OH_Drawing_TypefaceDestroy typeface
380     OH_Drawing_TypefaceDestroy(typeface);
381     // 7. OH_Drawing_FontArgumentsDestroy
382     OH_Drawing_FontArgumentsDestroy(fontArguments);
383 }
384 
385 /*
386  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0601
387  * @tc.name: testTypefaceCreateFromCurrentNull
388  * @tc.desc: test for testTypefaceCreateFromCurrentNull.
389  * @tc.size  : SmallTest
390  * @tc.type  : Function
391  * @tc.level : Level 3
392  */
393 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromCurrentNull, TestSize.Level3) {
394     // 1. OH_Drawing_TypefaceCreateFromFile
395     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromFile("/system/fonts/NotoSansBengaliUI-Regular", 0);
396     // 2. OH_Drawing_FontArgumentsCreate
397     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
398     // 3. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
399     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
400     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
401     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
402     // 4. OH_Drawing_TypefaceCreateFromCurrent,the first parameter is nullptr
403     OH_Drawing_Typeface *typeface1 = OH_Drawing_TypefaceCreateFromCurrent(nullptr, fontArguments);
404     EXPECT_EQ(typeface1, nullptr);
405     // 5. OH_Drawing_TypefaceCreateFromCurrent,the second parameter is nullptr
406     OH_Drawing_Typeface *typeface2 = OH_Drawing_TypefaceCreateFromCurrent(typeface, nullptr);
407     EXPECT_EQ(typeface2, nullptr);
408     // 6. OH_Drawing_TypefaceDestroy typeface1
409     OH_Drawing_TypefaceDestroy(typeface1);
410     // 7. OH_Drawing_TypefaceDestroy typeface
411     OH_Drawing_TypefaceDestroy(typeface);
412     // 8. OH_Drawing_FontArgumentsDestroy
413     OH_Drawing_FontArgumentsDestroy(fontArguments);
414 }
415 
416 /*
417  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_TYPEFACE_0602
418  * @tc.name: testTypefaceCreateFromCurrentMultipleCalls
419  * @tc.desc: test for testTypefaceCreateFromCurrentMultipleCalls.
420  * @tc.size  : SmallTest
421  * @tc.type  : Function
422  * @tc.level : Level 3
423  */
424 HWTEST_F(DrawingNativeTypeFaceTest, testTypefaceCreateFromCurrentMultipleCalls, TestSize.Level3) {
425     // 1. OH_Drawing_TypefaceCreateFromFile
426     OH_Drawing_Typeface *typeface = OH_Drawing_TypefaceCreateFromFile("/system/fonts/NotoSansBengaliUI-Regular", 0);
427     // 2. OH_Drawing_FontArgumentsCreate
428     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
429     // 3. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
430     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
431     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
432     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
433     // 4. OH_Drawing_TypefaceCreateFromCurrent
434     OH_Drawing_Typeface *typeface1 = nullptr;
435     for (int i = 0; i < NUMBER_10; i++)
436     {
437         typeface1 = OH_Drawing_TypefaceCreateFromCurrent(typeface, fontArguments);
438     }
439     // 5. OH_Drawing_TypefaceDestroy typeface1
440     OH_Drawing_TypefaceDestroy(typeface1);
441     // 6. OH_Drawing_TypefaceDestroy typeface
442     OH_Drawing_TypefaceDestroy(typeface);
443     // 7. OH_Drawing_FontArgumentsDestroy
444     OH_Drawing_FontArgumentsDestroy(fontArguments);
445 }
446 
447 } // namespace Drawing
448 } // namespace Rosen
449 } // namespace OHOS