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