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 */
HWTEST_F(DrawingNativeFontTest, testFontArgumentsCreateNormal, TestSize.Level0)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 */
HWTEST_F(DrawingNativeFontTest, testFontArgumentsAddVariationNormal, TestSize.Level0)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 */
HWTEST_F(DrawingNativeFontTest, testFontArgumentsAddVariationNull, TestSize.Level3)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 */
HWTEST_F(DrawingNativeFontTest, testFontArgumentsAddVariationAbnormal, TestSize.Level3)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 */
HWTEST_F(DrawingNativeFontTest, testFontArgumentsAddVariationMultipleCalls, TestSize.Level3)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 */
HWTEST_F(DrawingNativeFontTest, testFontArgumentsDestoryNormal, TestSize.Level0)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 */
HWTEST_F(DrawingNativeFontTest, testFontArgumentsDestoryNull, TestSize.Level0)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 */
HWTEST_F(DrawingNativeFontTest, testFontArgumentsDestoryMultiplieCalls, TestSize.Level0)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 } // namespace Drawing
221 } // namespace Rosen
222 } // namespace OHOS