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