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