• 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 #define NUMBER_400_1 400.1
44 #define NUMBER_900 900
45 #define NUMBER_1000000 1000000
46 
47 
48 using namespace testing;
49 using namespace testing::ext;
50 
51 namespace OHOS {
52 namespace Rosen {
53 namespace Drawing {
54 class DrawingNativeFontTest : public testing::Test {};
55 
56 /*
57  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2000
58  * @tc.name: testFontArgumentsCreateNormal
59  * @tc.desc: Test for testFontArgumentsCreateNormal.
60  * @tc.size  : SmallTest
61  * @tc.type  : Function
62  * @tc.level : Level 0
63  */
64 HWTEST_F(DrawingNativeFontTest, testFontArgumentsCreateNormal, TestSize.Level0) {
65     // 1. OH_Drawing_FontArgumentsCreate
66     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
67     OH_Drawing_FontArgumentsDestroy(fontArguments);
68 }
69 
70 /*
71  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2100
72  * @tc.name: testFontArgumentsAddVariationNormal
73  * @tc.desc: test for testFontArgumentsAddVariationNormal.
74  * @tc.size  : SmallTest
75  * @tc.type  : Function
76  * @tc.level : Level 3
77  */
78 HWTEST_F(DrawingNativeFontTest, testFontArgumentsAddVariationNormal, TestSize.Level0) {
79     // 1. OH_Drawing_FontArgumentsCreate
80     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
81     // 2. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
82     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
83     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", 0);
84     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
85     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", -1);
86     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
87     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
88     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
89     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_400_1);
90     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
91     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_900);
92     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
93     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_1000000);
94     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
95 }
96 
97 /*
98  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2101
99  * @tc.name: testFontArgumentsAddVariationNull
100  * @tc.desc: test for testFontArgumentsAddVariationNull.
101  * @tc.size  : SmallTest
102  * @tc.type  : Function
103  * @tc.level : Level 3
104  */
105 HWTEST_F(DrawingNativeFontTest, testFontArgumentsAddVariationNull, TestSize.Level3) {
106     // 1. OH_Drawing_FontArgumentsCreate
107     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
108     // 2. OH_Drawing_FontArgumentsAddVariation, the first parameter is nullptr
109     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS;
110     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(nullptr, "wght", NUMBER_100);
111     EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
112     // 3. OH_Drawing_FontArgumentsAddVariation, the second parameter is nullptr
113     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, nullptr, NUMBER_100);
114     EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
115 }
116 
117 /*
118  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2102
119  * @tc.name: testFontArgumentsAddVariationAbnormal
120  * @tc.desc: test for testFontArgumentsAddVariationAbnormal.
121  * @tc.size  : SmallTest
122  * @tc.type  : Function
123  * @tc.level : Level 3
124  */
125 HWTEST_F(DrawingNativeFontTest, testFontArgumentsAddVariationAbnormal, TestSize.Level3) {
126     // 1. OH_Drawing_FontArgumentsCreate
127     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
128     // 2. OH_Drawing_FontArgumentsAddVariation, the second parameter is error
129     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS;
130     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "WGHT", NUMBER_100);
131     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
132     // 3. OH_Drawing_FontArgumentsAddVariation, the second parameter is error
133     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "w", NUMBER_100);
134     EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
135 }
136 
137 /*
138  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2103
139  * @tc.name: testFontArgumentsAddVariationMultipleCalls
140  * @tc.desc: test for testFontArgumentsAddVariationMultipleCalls.
141  * @tc.size  : SmallTest
142  * @tc.type  : Function
143  * @tc.level : Level 3
144  */
145 HWTEST_F(DrawingNativeFontTest, testFontArgumentsAddVariationMultipleCalls, TestSize.Level3) {
146     // 1. OH_Drawing_FontArgumentsCreate
147     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
148     // 2. OH_Drawing_FontArgumentsAddVariation, should return OH_DRAWING_SUCCESS
149     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
150     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
151     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_900);
152     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
153     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
154     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", 0.0f);
155     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
156     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", NUMBER_100);
157     drawingErrorCode = OH_Drawing_FontArgumentsAddVariation(fontArguments, "wght", -1);
158     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
159 }
160 
161 /*
162  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2200
163  * @tc.name: testFontArgumentsDestoryNormal
164  * @tc.desc: test for testFontArgumentsDestoryNormal.
165  * @tc.size  : SmallTest
166  * @tc.type  : Function
167  * @tc.level : Level 3
168  */
169 HWTEST_F(DrawingNativeFontTest, testFontArgumentsDestoryNormal, TestSize.Level0) {
170     // 1. OH_Drawing_FontArgumentsCreate
171     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
172     // 2. OH_Drawing_FontArgumentsDestroy
173     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
174     drawingErrorCode = OH_Drawing_FontArgumentsDestroy(fontArguments);
175     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
176 }
177 
178 /*
179  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2201
180  * @tc.name: testFontArgumentsDestoryNull
181  * @tc.desc: test for testFontArgumentsDestoryNull.
182  * @tc.size  : SmallTest
183  * @tc.type  : Function
184  * @tc.level : Level 3
185  */
186 HWTEST_F(DrawingNativeFontTest, testFontArgumentsDestoryNull, TestSize.Level0) {
187     // 1. OH_Drawing_FontArgumentsCreate
188     OH_Drawing_FontArguments *fontArguments = OH_Drawing_FontArgumentsCreate();
189     // 2. OH_Drawing_FontArgumentsDestroy, parameter is null
190     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS;
191     drawingErrorCode = OH_Drawing_FontArgumentsDestroy(nullptr);
192     EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
193     OH_Drawing_FontArgumentsDestroy(fontArguments);
194 }
195 
196 /*
197  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2202
198  * @tc.name: testFontArgumentsDestoryMultiplieCalls
199  * @tc.desc: test for testFontArgumentsDestoryMultiplieCalls.
200  * @tc.size  : SmallTest
201  * @tc.type  : Function
202  * @tc.level : Level 3
203  */
204 HWTEST_F(DrawingNativeFontTest, testFontArgumentsDestoryMultiplieCalls, TestSize.Level0) {
205     // 1. OH_Drawing_FontCreate
206     OH_Drawing_FontArguments *fontArguments = nullptr;
207     for (int i = 0; i < NUMBER_10; i++)
208     {
209         fontArguments = OH_Drawing_FontArgumentsCreate();
210     }
211     // 2. OH_Drawing_FontCreate, OH_Drawing_FontArgumentsAddVariation
212     OH_Drawing_ErrorCode drawingErrorCode1 = OH_DRAWING_ERROR_INVALID_PARAMETER;
213     for (size_t i = 0; i < NUMBER_10; i++)
214     {
215         OH_Drawing_FontArguments *fontArguments1 = OH_Drawing_FontArgumentsCreate();
216         drawingErrorCode1 = OH_Drawing_FontArgumentsDestroy(fontArguments1);
217         EXPECT_EQ(drawingErrorCode1, OH_DRAWING_SUCCESS);
218     }
219 }
220 /*
221  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2203
222  * @tc.name: testFontSetThemeFontFollowedNormal
223  * @tc.desc: test for testFontSetThemeFontFollowedNormal.
224  * @tc.size  : SmallTest
225  * @tc.type  : Function
226  * @tc.level : Level 0
227  */
228 HWTEST_F(DrawingNativeFontTest, testFontSetThemeFontFollowedNormal, TestSize.Level0) {
229     // 1. OH_Drawing_FontCreate
230     OH_Drawing_Font *font = OH_Drawing_FontCreate();
231     // add assert
232     EXPECT_NE(font, nullptr);
233     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
234     drawingErrorCode = OH_Drawing_FontSetThemeFontFollowed(font, true);
235     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
236     drawingErrorCode = OH_Drawing_FontSetThemeFontFollowed(font, false);
237     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
238     // 2. OH_Drawing_FontDestroy
239     OH_Drawing_FontDestroy(font);
240 }
241 /*
242  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2204
243  * @tc.name: testFontSetThemeFontFollowedMuitipleCalls
244  * @tc.desc: test for testFontSetThemeFontFollowedMuitipleCalls.
245  * @tc.size  : SmallTest
246  * @tc.type  : Function
247  * @tc.level : Level 0
248  */
249 HWTEST_F(DrawingNativeFontTest, testFontSetThemeFontFollowedMuitipleCalls, TestSize.Level0) {
250     // 1. OH_Drawing_FontCreate
251     OH_Drawing_Font *font = OH_Drawing_FontCreate();
252     // add assert
253     EXPECT_NE(font, nullptr);
254     for (int i = 0; i < 10; i++) {
255         OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
256         drawingErrorCode = OH_Drawing_FontSetThemeFontFollowed(font, true);
257         EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
258     }
259     // 2. OH_Drawing_FontDestroy
260     OH_Drawing_FontDestroy(font);
261 }
262 /*
263  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2205
264  * @tc.name: testFontSetThemeFontFollowedNull
265  * @tc.desc: test for testFontSetThemeFontFollowedNull.
266  * @tc.size  : SmallTest
267  * @tc.type  : Function
268  * @tc.level : Level 0
269  */
270 HWTEST_F(DrawingNativeFontTest, testFontSetThemeFontFollowedNull, TestSize.Level0) {
271     // 1. OH_Drawing_FontCreate
272     OH_Drawing_Font *font = OH_Drawing_FontCreate();
273     // add assert
274     EXPECT_NE(font, nullptr);
275     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_SUCCESS;
276     drawingErrorCode = OH_Drawing_FontSetThemeFontFollowed(nullptr, true);
277     EXPECT_EQ(drawingErrorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
278     // 2. OH_Drawing_FontDestroy
279     OH_Drawing_FontDestroy(font);
280 }
281 /*
282  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2206
283  * @tc.name: testFontIsThemeFontFollowedNormal
284  * @tc.desc: test for testFontIsThemeFontFollowedNormal.
285  * @tc.size  : SmallTest
286  * @tc.type  : Function
287  * @tc.level : Level 0
288  */
289 HWTEST_F(DrawingNativeFontTest, testFontIsThemeFontFollowedNormal, TestSize.Level0) {
290     // 1. OH_Drawing_FontCreate
291     OH_Drawing_Font *font = OH_Drawing_FontCreate();
292     // add assert
293     EXPECT_NE(font, nullptr);
294     bool followed = true;
295     OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
296     OH_Drawing_ErrorCode drawingErrorCode2 = OH_DRAWING_ERROR_INVALID_PARAMETER;
297     drawingErrorCode2 = OH_Drawing_FontIsThemeFontFollowed(font, &followed);
298     EXPECT_EQ(drawingErrorCode2, OH_DRAWING_SUCCESS);
299     EXPECT_EQ(followed, false);
300     drawingErrorCode = OH_Drawing_FontSetThemeFontFollowed(font, true);
301     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
302     drawingErrorCode2 = OH_Drawing_FontIsThemeFontFollowed(font, &followed);
303     EXPECT_EQ(drawingErrorCode2, OH_DRAWING_SUCCESS);
304     EXPECT_EQ(followed, true);
305     drawingErrorCode = OH_Drawing_FontSetThemeFontFollowed(font, false);
306     EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
307     drawingErrorCode2 = OH_Drawing_FontIsThemeFontFollowed(font, &followed);
308     EXPECT_EQ(drawingErrorCode2, OH_DRAWING_SUCCESS);
309     EXPECT_EQ(followed, false);
310     // 2. OH_Drawing_FontDestroy
311     OH_Drawing_FontDestroy(font);
312 }
313 /*
314  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2207
315  * @tc.name: testFontIsThemeFontFollowedMultipleCalls
316  * @tc.desc: test for testFontIsThemeFontFollowedMultipleCalls.
317  * @tc.size  : SmallTest
318  * @tc.type  : Function
319  * @tc.level : Level 0
320  */
321 HWTEST_F(DrawingNativeFontTest, testFontIsThemeFontFollowedMultipleCalls, TestSize.Level0) {
322     // 1. OH_Drawing_FontCreate
323     OH_Drawing_Font *font = OH_Drawing_FontCreate();
324     // add assert
325     EXPECT_NE(font, nullptr);
326     bool followed = true;
327     bool isFollowed[] = {true, false, false, true, true, true, false, false, true, false};
328     for (int i = 0; i < 10; i++) {
329         OH_Drawing_ErrorCode drawingErrorCode = OH_DRAWING_ERROR_INVALID_PARAMETER;
330         OH_Drawing_ErrorCode drawingErrorCode2 = OH_DRAWING_ERROR_INVALID_PARAMETER;
331         drawingErrorCode = OH_Drawing_FontSetThemeFontFollowed(font, isFollowed[i]);
332         EXPECT_EQ(drawingErrorCode, OH_DRAWING_SUCCESS);
333         drawingErrorCode2 = OH_Drawing_FontIsThemeFontFollowed(font, &followed);
334         EXPECT_EQ(drawingErrorCode2, OH_DRAWING_SUCCESS);
335         EXPECT_EQ(followed, isFollowed[i]);
336     }
337     // 2. OH_Drawing_FontDestroy
338     OH_Drawing_FontDestroy(font);
339 }
340 /*
341  * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_FONT_2208
342  * @tc.name: testFontIsThemeFontFollowedNull
343  * @tc.desc: test for testFontIsThemeFontFollowedNull.
344  * @tc.size  : SmallTest
345  * @tc.type  : Function
346  * @tc.level : Level 0
347  */
348 HWTEST_F(DrawingNativeFontTest, testFontIsThemeFontFollowedNull, TestSize.Level0) {
349     // 1. OH_Drawing_FontCreate
350     OH_Drawing_Font *font = OH_Drawing_FontCreate();
351     // add assert
352     EXPECT_NE(font, nullptr);
353     bool followed = true;
354     OH_Drawing_ErrorCode drawingErrorCode1 = OH_DRAWING_SUCCESS;
355     OH_Drawing_ErrorCode drawingErrorCode2 = OH_DRAWING_SUCCESS;
356     drawingErrorCode1 = OH_Drawing_FontIsThemeFontFollowed(nullptr, &followed);
357     EXPECT_EQ(drawingErrorCode1, OH_DRAWING_ERROR_INVALID_PARAMETER);
358     drawingErrorCode2 = OH_Drawing_FontIsThemeFontFollowed(font, nullptr);
359     EXPECT_EQ(drawingErrorCode2, OH_DRAWING_ERROR_INVALID_PARAMETER);
360     // 2. OH_Drawing_FontDestroy
361     OH_Drawing_FontDestroy(font);
362 }
363 } // namespace Drawing
364 } // namespace Rosen
365 } // namespace OHOS