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