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_color.h" 17 #include "drawing_color_filter.h" 18 #include "drawing_filter.h" 19 #include "drawing_image.h" 20 #include "drawing_matrix.h" 21 #include "drawing_path.h" 22 #include "drawing_path_effect.h" 23 #include "drawing_pen.h" 24 #include "drawing_point.h" 25 #include "drawing_rect.h" 26 #include "drawing_region.h" 27 #include "drawing_round_rect.h" 28 #include "utils/scalar.h" 29 #include "gtest/gtest.h" 30 31 using namespace testing; 32 using namespace testing::ext; 33 34 namespace OHOS { 35 namespace Rosen { 36 namespace Drawing { 37 class DrawingNativePathEffectTest : public testing::Test { 38 protected: 39 // 在每个测试用例执行前调用 SetUp()40 void SetUp() override 41 { 42 // 设置代码 43 std::cout << "DrawingNativePathEffectTest Setup code called before each test case." << std::endl; 44 OH_Drawing_ErrorCodeReset(); 45 std::cout << "DrawingNativePathEffectTest errorCodeReset before each test case." << std::endl; 46 } TearDown()47 void TearDown() override 48 { 49 std::cout << "DrawingNativePathEffectTest Setup code called after each test case." << std::endl; 50 OH_Drawing_ErrorCodeReset(); 51 std::cout << "DrawingNativePathEffectTest errorCodeReset after each test case." << std::endl; 52 } 53 }; 54 55 /* 56 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0100 57 * @tc.name: testCreateDashPathEffectNormal 58 * @tc.desc: test for testCreateDashPathEffectNormal. 59 * @tc.size : SmallTest 60 * @tc.type : Function 61 * @tc.level : Level 0 62 */ 63 HWTEST_F(DrawingNativePathEffectTest, testCreateDashPathEffectNormal, TestSize.Level0) { 64 // 1. OH_Drawing_CreateDashPathEffect 65 float intervals[] = {1, 1, 1}; 66 OH_Drawing_PathEffect *pathEffect = OH_Drawing_CreateDashPathEffect(intervals, 3, 0.0); 67 // add assert 68 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS); 69 // add assert 70 EXPECT_NE(pathEffect, nullptr); 71 // 2. Free memory 72 OH_Drawing_PathEffectDestroy(pathEffect); 73 } 74 75 /* 76 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0101 77 * @tc.name: testCreateDashPathEffectNull 78 * @tc.desc: test for testCreateDashPathEffectNull. 79 * @tc.size : SmallTest 80 * @tc.type : Function 81 * @tc.level : Level 3 82 */ 83 HWTEST_F(DrawingNativePathEffectTest, testCreateDashPathEffectNull, TestSize.Level3) { 84 float intervals[] = {1, 1}; 85 // 1. OH_Drawing_CreateDashPathEffect with nullptr as the first parameter, check the error code with 86 // OH_Drawing_ErrorCodeGet 87 OH_Drawing_PathEffect *pathEffect1 = OH_Drawing_CreateDashPathEffect(nullptr, 2, 1.0); 88 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 89 OH_Drawing_ErrorCodeReset(); 90 // 2. OH_Drawing_CreateDashPathEffect with 0 as the second parameter, check the error code with 91 // OH_Drawing_ErrorCodeGet 92 OH_Drawing_PathEffect *pathEffect2 = OH_Drawing_CreateDashPathEffect(intervals, 0, 1.0); 93 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 94 // 3. OH_Drawing_CreateDashPathEffect with 0.0 as the third parameter 95 OH_Drawing_PathEffect *pathEffect3 = OH_Drawing_CreateDashPathEffect(intervals, 2, 0.0); 96 // add assert 97 EXPECT_NE(pathEffect3, nullptr); 98 // 4. Free memory 99 OH_Drawing_PathEffectDestroy(pathEffect1); 100 OH_Drawing_PathEffectDestroy(pathEffect2); 101 OH_Drawing_PathEffectDestroy(pathEffect3); 102 } 103 104 /* 105 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0102 106 * @tc.name: testCreateDashPathEffectAbnormal 107 * @tc.desc: test for testCreateDashPathEffectAbnormal. 108 * @tc.size : SmallTest 109 * @tc.type : Function 110 * @tc.level : Level 3 111 */ 112 HWTEST_F(DrawingNativePathEffectTest, testCreateDashPathEffectAbnormal, TestSize.Level3) { 113 float intervals[] = {1, 1, 1}; 114 // 1. OH_Drawing_CreateDashPathEffect with the first parameter not being even 115 OH_Drawing_PathEffect *pathEffect1 = OH_Drawing_CreateDashPathEffect(intervals, 3, 1.0); 116 // add assert 117 EXPECT_NE(pathEffect1, nullptr); 118 // 2. OH_Drawing_CreateDashPathEffect with the second parameter being negative, check the error code with 119 // OH_Drawing_ErrorCodeGet 120 OH_Drawing_PathEffect *pathEffect2 = OH_Drawing_CreateDashPathEffect(intervals, -3, 1.0); 121 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 122 // 3. OH_Drawing_CreateDashPathEffect with the second parameter being 1 123 OH_Drawing_PathEffect *pathEffect3 = OH_Drawing_CreateDashPathEffect(intervals, 1, 1.0); 124 // add assert 125 EXPECT_NE(pathEffect3, nullptr); 126 // 4. OH_Drawing_CreateDashPathEffect with the third parameter being negative 127 OH_Drawing_PathEffect *pathEffect4 = OH_Drawing_CreateDashPathEffect(intervals, 3, -1.0); 128 // add assert 129 EXPECT_NE(pathEffect4, nullptr); 130 // 5. Free memory 131 OH_Drawing_PathEffectDestroy(pathEffect1); 132 OH_Drawing_PathEffectDestroy(pathEffect2); 133 OH_Drawing_PathEffectDestroy(pathEffect3); 134 OH_Drawing_PathEffectDestroy(pathEffect4); 135 } 136 137 /* 138 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0104 139 * @tc.name: testCreateDashPathEffectMultipleCalls 140 * @tc.desc: test for testCreateDashPathEffectMultipleCalls. 141 * @tc.size : SmallTest 142 * @tc.type : Function 143 * @tc.level : Level 3 144 */ 145 HWTEST_F(DrawingNativePathEffectTest, testCreateDashPathEffectMultipleCalls, TestSize.Level3) { 146 float intervals[] = {1, 1}; 147 // 1. Call OH_Drawing_CreateDashPathEffect 10 times 148 for (int i = 0; i < 10; i++) { 149 OH_Drawing_PathEffect *pathEffect = OH_Drawing_CreateDashPathEffect(intervals, 2, 1.0); 150 // add assert 151 EXPECT_NE(pathEffect, nullptr); 152 // 2. Free memory 153 OH_Drawing_PathEffectDestroy(pathEffect); 154 } 155 } 156 157 /* 158 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0200 159 * @tc.name: testPathEffectDestroyNormal 160 * @tc.desc: test for testPathEffectDestroyNormal. 161 * @tc.size : SmallTest 162 * @tc.type : Function 163 * @tc.level : Level 0 164 */ 165 HWTEST_F(DrawingNativePathEffectTest, testPathEffectDestroyNormal, TestSize.Level0) { 166 float intervals[] = {1, 1, 1}; 167 // 1. OH_Drawing_CreateDashPathEffect 168 OH_Drawing_PathEffect *pathEffect = OH_Drawing_CreateDashPathEffect(intervals, 3, 0.0); 169 // add assert 170 EXPECT_NE(pathEffect, nullptr); 171 // 2. OH_Drawing_PathEffectDestroy 172 OH_Drawing_PathEffectDestroy(pathEffect); 173 } 174 175 /* 176 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0201 177 * @tc.name: testPathEffectDestroyNull 178 * @tc.desc: test for testPathEffectDestroyNull. 179 * @tc.size : SmallTest 180 * @tc.type : Function 181 * @tc.level : Level 3 182 */ 183 HWTEST_F(DrawingNativePathEffectTest, testPathEffectDestroyNull, TestSize.Level3) { 184 // 1. OH_Drawing_PathEffectDestroy with nullptr as the parameter 185 OH_Drawing_PathEffectDestroy(nullptr); 186 // add assert 187 EXPECT_TRUE(true); 188 } 189 190 /* 191 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0300 192 * @tc.name: testCreateCornerPathEffectNormal 193 * @tc.desc: test for testCreateCornerPathEffectNormal. 194 * @tc.size : SmallTest 195 * @tc.type : Function 196 * @tc.level : Level 0 197 */ 198 HWTEST_F(DrawingNativePathEffectTest, testCreateCornerPathEffectNormal, TestSize.Level0) { 199 // 1. OH_Drawing_CreateCornerPathEffect with normal parameter 200 OH_Drawing_PathEffect *pathEffect = OH_Drawing_CreateCornerPathEffect(10.0); 201 // add assert 202 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS); 203 EXPECT_NE(pathEffect, nullptr); 204 // 2. Free memory 205 OH_Drawing_PathEffectDestroy(pathEffect); 206 } 207 208 /* 209 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0301 210 * @tc.name: testCreateCornerPathEffectNull 211 * @tc.desc: test for testCreateCornerPathEffectNull. 212 * @tc.size : SmallTest 213 * @tc.type : Function 214 * @tc.level : Level 3 215 */ 216 HWTEST_F(DrawingNativePathEffectTest, testCreateCornerPathEffectNull, TestSize.Level3) { 217 // 1. OH_Drawing_CreateCornerPathEffect with 0 as the parameter 218 OH_Drawing_PathEffect *pathEffect = OH_Drawing_CreateCornerPathEffect(0); 219 // add assert 220 EXPECT_EQ(pathEffect, nullptr); 221 // 2. Free memory 222 OH_Drawing_PathEffectDestroy(pathEffect); 223 } 224 225 /* 226 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0302 227 * @tc.name: testCreateCornerPathEffectAbnormal 228 * @tc.desc: test for testCreateCornerPathEffectAbnormal. 229 * @tc.size : SmallTest 230 * @tc.type : Function 231 * @tc.level : Level 3 232 */ 233 HWTEST_F(DrawingNativePathEffectTest, testCreateCornerPathEffectAbnormal, TestSize.Level3) { 234 // 1. OH_Drawing_CreateCornerPathEffect with 0xFFFFFFFF as the parameter 235 OH_Drawing_PathEffect *pathEffect1 = OH_Drawing_CreateCornerPathEffect(0xFFFFFFFF); 236 // add assert 237 EXPECT_NE(pathEffect1, nullptr); 238 // 2. OH_Drawing_CreateCornerPathEffect with 0.0001 as the parameter 239 OH_Drawing_PathEffect *pathEffect2 = OH_Drawing_CreateCornerPathEffect(0.0001); 240 // add assert 241 EXPECT_NE(pathEffect2, nullptr); 242 // 3. OH_Drawing_CreateCornerPathEffect with -0.1 as the parameter 243 OH_Drawing_PathEffect *pathEffect3 = OH_Drawing_CreateCornerPathEffect(-0.1); 244 // add assert 245 EXPECT_EQ(pathEffect3, nullptr); 246 // 4. OH_Drawing_CreateCornerPathEffect with -1 as the parameter 247 OH_Drawing_PathEffect *pathEffect4 = OH_Drawing_CreateCornerPathEffect(-1); 248 // add assert 249 EXPECT_EQ(pathEffect4, nullptr); 250 // 5. Free memory 251 OH_Drawing_PathEffectDestroy(pathEffect1); 252 OH_Drawing_PathEffectDestroy(pathEffect2); 253 OH_Drawing_PathEffectDestroy(pathEffect3); 254 OH_Drawing_PathEffectDestroy(pathEffect4); 255 } 256 257 /* 258 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0400 259 * @tc.name: testCreateDiscreatePathEffectNormal 260 * @tc.desc: test for testCreateDiscreatePathEffectNormal. 261 * @tc.size : SmallTest 262 * @tc.type : Function 263 * @tc.level : Level 0 264 */ 265 HWTEST_F(DrawingNativePathEffectTest, testCreateDiscreatePathEffectNormal, TestSize.Level0) { 266 // 1. OH_Drawing_CreateDiscretePathEffect with normal parameter 267 OH_Drawing_PathEffect *pathEffect = OH_Drawing_CreateDiscretePathEffect(10.0, 2.0); 268 // add assert 269 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS); 270 EXPECT_NE(pathEffect, nullptr); 271 // 2. Free memory 272 OH_Drawing_PathEffectDestroy(pathEffect); 273 } 274 275 /* 276 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0401 277 * @tc.name: testCreateDiscreatePathEffectNull 278 * @tc.desc: test for testCreateDiscreatePathEffectNull. 279 * @tc.size : SmallTest 280 * @tc.type : Function 281 * @tc.level : Level 3 282 */ 283 HWTEST_F(DrawingNativePathEffectTest, testCreateDiscreatePathEffectNull, TestSize.Level3) { 284 // 1. OH_Drawing_CreateDiscretePathEffect with 0 as the first parameter 285 OH_Drawing_PathEffect *pathEffect1 = OH_Drawing_CreateDiscretePathEffect(0, 2.0); 286 // add assert 287 EXPECT_NE(pathEffect1, nullptr); 288 // 2. OH_Drawing_CreateDiscretePathEffect with 0 as the second parameter 289 OH_Drawing_PathEffect *pathEffect2 = OH_Drawing_CreateDiscretePathEffect(10.0, 0); 290 // add assert 291 EXPECT_NE(pathEffect2, nullptr); 292 // 3. Free memory 293 OH_Drawing_PathEffectDestroy(pathEffect1); 294 OH_Drawing_PathEffectDestroy(pathEffect2); 295 } 296 297 /* 298 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0402 299 * @tc.name: testCreateDiscreatePathEffectAbnormal 300 * @tc.desc: test for testCreateDiscreatePathEffectAbnormal. 301 * @tc.size : SmallTest 302 * @tc.type : Function 303 * @tc.level : Level 3 304 */ 305 HWTEST_F(DrawingNativePathEffectTest, testCreateDiscreatePathEffectAbnormal, TestSize.Level3) { 306 // 1. OH_Drawing_CreateDiscretePathEffect with 0xFFFFFFFF as the first and second parameter 307 OH_Drawing_PathEffect *pathEffect1 = OH_Drawing_CreateDiscretePathEffect(0xFFFFFFFF, 0xFFFFFFFF); 308 // add assert 309 EXPECT_NE(pathEffect1, nullptr); 310 // 2. OH_Drawing_CreateDiscretePathEffect with 0xFFFFFFFF as the first parameter 311 OH_Drawing_PathEffect *pathEffect2 = OH_Drawing_CreateDiscretePathEffect(0xFFFFFFFF, 2.0); 312 // add assert 313 EXPECT_NE(pathEffect2, nullptr); 314 // 3. OH_Drawing_CreateDiscretePathEffect with 0xFFFFFFFF as the first parameter 315 OH_Drawing_PathEffect *pathEffect3 = OH_Drawing_CreateDiscretePathEffect(0xFFFFFFFF, -0.1); 316 // add assert 317 EXPECT_NE(pathEffect3, nullptr); 318 // 4. OH_Drawing_CreateDiscretePathEffect with 0xFFFFFFFF as the first parameter 319 OH_Drawing_PathEffect *pathEffect4 = OH_Drawing_CreateDiscretePathEffect(0xFFFFFFFF, -1); 320 // add assert 321 EXPECT_NE(pathEffect4, nullptr); 322 // 5. OH_Drawing_CreateDiscretePathEffect with -0.1 as the first parameter 323 OH_Drawing_PathEffect *pathEffect5 = OH_Drawing_CreateDiscretePathEffect(-0.1, 2.0); 324 // add assert 325 EXPECT_NE(pathEffect5, nullptr); 326 // 6. OH_Drawing_CreateDiscretePathEffect with -1 as the first parameter 327 OH_Drawing_PathEffect *pathEffect6 = OH_Drawing_CreateDiscretePathEffect(-1, 2.0); 328 // add assert 329 EXPECT_NE(pathEffect6, nullptr); 330 // 8. Free memory 331 OH_Drawing_PathEffectDestroy(pathEffect1); 332 OH_Drawing_PathEffectDestroy(pathEffect2); 333 OH_Drawing_PathEffectDestroy(pathEffect3); 334 OH_Drawing_PathEffectDestroy(pathEffect4); 335 OH_Drawing_PathEffectDestroy(pathEffect5); 336 OH_Drawing_PathEffectDestroy(pathEffect6); 337 } 338 339 /* 340 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0500 341 * @tc.name: testCreateComposePathEffectNormal 342 * @tc.desc: test for testCreateComposePathEffectNormal. 343 * @tc.size : SmallTest 344 * @tc.type : Function 345 * @tc.level : Level 0 346 */ 347 HWTEST_F(DrawingNativePathEffectTest, testCreateComposePathEffectNormal, TestSize.Level0) { 348 // 1. OH_Drawing_CreateCornerPathEffect 349 OH_Drawing_PathEffect *cornerPathEffect = OH_Drawing_CreateCornerPathEffect(10.0); 350 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS); 351 EXPECT_NE(cornerPathEffect, nullptr); 352 353 // 2. OH_Drawing_CreateDiscretePathEffect 354 OH_Drawing_PathEffect *discretePathEffect = OH_Drawing_CreateDiscretePathEffect(10.0, 2.0); 355 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS); 356 EXPECT_NE(discretePathEffect, nullptr); 357 358 // 3. OH_Drawing_CreateComposePathEffect with normal parameters 359 OH_Drawing_PathEffect *composePathEffect = OH_Drawing_CreateComposePathEffect(cornerPathEffect, 360 discretePathEffect); 361 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS); 362 EXPECT_NE(composePathEffect, nullptr); 363 364 // 4. Free memory 365 OH_Drawing_PathEffectDestroy(cornerPathEffect); 366 OH_Drawing_PathEffectDestroy(discretePathEffect); 367 OH_Drawing_PathEffectDestroy(composePathEffect); 368 } 369 370 /* 371 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0501 372 * @tc.name: testCreateComposePathEffectNull 373 * @tc.desc: test for testCreateComposePathEffectNull. 374 * @tc.size : SmallTest 375 * @tc.type : Function 376 * @tc.level : Level 3 377 */ 378 HWTEST_F(DrawingNativePathEffectTest, testCreateComposePathEffectNull, TestSize.Level3) { 379 // 1. OH_Drawing_CreateCornerPathEffect 380 OH_Drawing_PathEffect *cornerPathEffect = OH_Drawing_CreateCornerPathEffect(10.0); 381 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS); 382 EXPECT_NE(cornerPathEffect, nullptr); 383 384 // 2. OH_Drawing_CreateDiscretePathEffect 385 OH_Drawing_PathEffect *discretePathEffect = OH_Drawing_CreateDiscretePathEffect(10.0, 2.0); 386 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS); 387 EXPECT_NE(discretePathEffect, nullptr); 388 389 // 3. OH_Drawing_CreateComposePathEffect with first parameter as nullptr 390 OH_Drawing_PathEffect *composePathEffect1 = OH_Drawing_CreateComposePathEffect(nullptr, discretePathEffect); 391 EXPECT_EQ(composePathEffect1, nullptr); 392 393 // 4. OH_Drawing_CreateComposePathEffect with second parameter as nullptr 394 OH_Drawing_PathEffect *composePathEffect2 = OH_Drawing_CreateComposePathEffect(cornerPathEffect, nullptr); 395 EXPECT_EQ(composePathEffect2, nullptr); 396 397 // 5. Free memory 398 OH_Drawing_PathEffectDestroy(cornerPathEffect); 399 OH_Drawing_PathEffectDestroy(discretePathEffect); 400 OH_Drawing_PathEffectDestroy(composePathEffect1); 401 OH_Drawing_PathEffectDestroy(composePathEffect2); 402 } 403 404 /* 405 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0600 406 * @tc.name: testCreatePathDashEffectNormal 407 * @tc.desc: test for testCreatePathDashEffectNormal. 408 * @tc.size : SmallTest 409 * @tc.type : Function 410 * @tc.level : Level 0 411 */ 412 HWTEST_F(DrawingNativePathEffectTest, testCreatePathDashEffectNormal, TestSize.Level0) { 413 // 1. OH_Drawing_PathCreate 414 OH_Drawing_Path *path = OH_Drawing_PathCreate(); 415 EXPECT_NE(path, nullptr); 416 // 2. OH_Drawing_PathAddRect 417 OH_Drawing_PathAddRect(path, 10, 10, 100, 100, OH_Drawing_PathDirection::PATH_DIRECTION_CW); 418 // 3. OH_Drawing_PathCreate 419 OH_Drawing_Path *path2 = OH_Drawing_PathCreate(); 420 EXPECT_NE(path2, nullptr); 421 // 4. OH_Drawing_PathMoveTo 422 OH_Drawing_PathMoveTo(path2, 50.0f, 50.0f); 423 // 5. OH_Drawing_PathLineTo 424 OH_Drawing_PathLineTo(path2, 100.0f, 50.0f); 425 // 6. OH_Drawing_CreatePathDashEffect 参数正常入参并且遍历第四个枚举参数 426 OH_Drawing_PathEffect *pathEffect = OH_Drawing_CreatePathDashEffect(path2, 50.0f, 50.0f, 427 DRAWING_PATH_DASH_STYLE_TRANSLATE); 428 EXPECT_NE(pathEffect, nullptr); 429 pathEffect = OH_Drawing_CreatePathDashEffect(path2, 50.0f, 50.0f, DRAWING_PATH_DASH_STYLE_ROTATE); 430 EXPECT_NE(pathEffect, nullptr); 431 pathEffect = OH_Drawing_CreatePathDashEffect(path2, 50.0f, 50.0f, DRAWING_PATH_DASH_STYLE_MORPH); 432 EXPECT_NE(pathEffect, nullptr); 433 // 7. 释放内存 434 OH_Drawing_PathDestroy(path); 435 OH_Drawing_PathDestroy(path2); 436 OH_Drawing_PathEffectDestroy(pathEffect); 437 } 438 439 /* 440 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0601 441 * @tc.name: testCreatePathDashEffectNull 442 * @tc.desc: test for testCreatePathDashEffectNull. 443 * @tc.size : SmallTest 444 * @tc.type : Function 445 * @tc.level : Level 3 446 */ 447 HWTEST_F(DrawingNativePathEffectTest, testCreatePathDashEffectNull, TestSize.Level3) { 448 // 1. OH_Drawing_PathCreate 449 OH_Drawing_Path *path = OH_Drawing_PathCreate(); 450 EXPECT_NE(path, nullptr); 451 // 2. OH_Drawing_PathAddRect 452 OH_Drawing_PathAddRect(path, 10, 10, 100, 100, OH_Drawing_PathDirection::PATH_DIRECTION_CW); 453 // 3. OH_Drawing_PathCreate 454 OH_Drawing_Path *path2 = OH_Drawing_PathCreate(); 455 // 4. OH_Drawing_PathMoveTo 456 OH_Drawing_PathMoveTo(path2, 50.0f, 50.0f); 457 // 5. OH_Drawing_PathLineTo 458 OH_Drawing_PathLineTo(path2, 100.0f, 50.0f); 459 // 6. OH_Drawing_CreatePathDashEffect第一个参数传nullptr 460 OH_Drawing_PathEffect *pathEffect = OH_Drawing_CreatePathDashEffect(nullptr, 50.0f, 50.0f, 461 DRAWING_PATH_DASH_STYLE_TRANSLATE); 462 EXPECT_EQ(pathEffect, nullptr); 463 // 7. OH_Drawing_CreatePathDashEffect第二个参数传0 464 pathEffect = OH_Drawing_CreatePathDashEffect(path2, 0, 50.0f, DRAWING_PATH_DASH_STYLE_TRANSLATE); 465 EXPECT_EQ(pathEffect, nullptr); 466 // 8. OH_Drawing_CreatePathDashEffect第三个参数传0 467 pathEffect = OH_Drawing_CreatePathDashEffect(path2, 50.0f, 0, DRAWING_PATH_DASH_STYLE_TRANSLATE); 468 EXPECT_NE(pathEffect, nullptr); 469 // 9. 释放内存 470 OH_Drawing_PathDestroy(path); 471 OH_Drawing_PathDestroy(path2); 472 OH_Drawing_PathEffectDestroy(pathEffect); 473 } 474 475 /* 476 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0602 477 * @tc.name: testCreatePathDashEffectAbnormal 478 * @tc.desc: test for testCreatePathDashEffectAbnormal. 479 * @tc.size : SmallTest 480 * @tc.type : Function 481 * @tc.level : Level 3 482 */ 483 HWTEST_F(DrawingNativePathEffectTest, testCreatePathDashEffectAbnormal, TestSize.Level3) { 484 // 1. OH_Drawing_PathCreate 485 OH_Drawing_Path *path = OH_Drawing_PathCreate(); 486 EXPECT_NE(path, nullptr); 487 // 2. OH_Drawing_PathAddRect 488 OH_Drawing_PathAddRect(path, 10, 10, 100, 100, OH_Drawing_PathDirection::PATH_DIRECTION_CW); 489 // 3. OH_Drawing_PathCreate 490 OH_Drawing_Path *path2 = OH_Drawing_PathCreate(); 491 // 4. OH_Drawing_PathMoveTo 492 OH_Drawing_PathMoveTo(path2, 50.0f, 50.0f); 493 // 5. OH_Drawing_PathLineTo 494 OH_Drawing_PathLineTo(path2, 100.0f, 50.0f); 495 // 6. OH_Drawing_CreatePathDashEffect第二个参数传0xFFFFFFFF 496 OH_Drawing_PathEffect *pathEffect = OH_Drawing_CreatePathDashEffect(path2, 0xFFFFFFFF, 497 50.0f, DRAWING_PATH_DASH_STYLE_TRANSLATE); 498 EXPECT_NE(pathEffect, nullptr); 499 // 7. OH_Drawing_CreatePathDashEffect第二个参数传0.0001 500 pathEffect = OH_Drawing_CreatePathDashEffect(path2, 0.0001, 50.0f, DRAWING_PATH_DASH_STYLE_TRANSLATE); 501 EXPECT_NE(pathEffect, nullptr); 502 // 8. OH_Drawing_CreatePathDashEffect第二个参数传-0.1 503 pathEffect = OH_Drawing_CreatePathDashEffect(path2, -0.1, 50.0f, DRAWING_PATH_DASH_STYLE_TRANSLATE); 504 EXPECT_EQ(pathEffect, nullptr); 505 // 9. OH_Drawing_CreatePathDashEffect第二个参数传-1 506 pathEffect = OH_Drawing_CreatePathDashEffect(path2, -1, 50.0f, DRAWING_PATH_DASH_STYLE_TRANSLATE); 507 EXPECT_EQ(pathEffect, nullptr); 508 // 10. 释放内存 509 OH_Drawing_PathDestroy(path); 510 OH_Drawing_PathDestroy(path2); 511 OH_Drawing_PathEffectDestroy(pathEffect); 512 } 513 514 /* 515 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0700 516 * @tc.name: testCreateSumPathEffectNormal 517 * @tc.desc: test for testCreateSumPathEffectNormal. 518 * @tc.size : SmallTest 519 * @tc.type : Function 520 * @tc.level : Level 0 521 */ 522 HWTEST_F(DrawingNativePathEffectTest, testCreateSumPathEffectNormal, TestSize.Level0) { 523 // 1. OH_Drawing_CreateCornerPathEffect 524 OH_Drawing_PathEffect *firstPathEffect = OH_Drawing_CreateCornerPathEffect(50.0f); 525 EXPECT_NE(firstPathEffect, nullptr); 526 // 2. OH_Drawing_CreateDiscreatePathEffect 527 OH_Drawing_PathEffect *secondPathEffect = OH_Drawing_CreateDiscretePathEffect(50.0f, 50.0f); 528 EXPECT_NE(secondPathEffect, nullptr); 529 // 3. OH_Drawing_CreateSumPathEffect正常入参 530 OH_Drawing_PathEffect *pathEffect = OH_Drawing_CreateSumPathEffect(firstPathEffect, secondPathEffect); 531 EXPECT_NE(pathEffect, nullptr); 532 // 4. 释放内存 533 OH_Drawing_PathEffectDestroy(firstPathEffect); 534 OH_Drawing_PathEffectDestroy(secondPathEffect); 535 OH_Drawing_PathEffectDestroy(pathEffect); 536 } 537 538 /* 539 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_PATH_EFFECT_0701 540 * @tc.name: testCreateSumPathEffectNull 541 * @tc.desc: test for testCreateSumPathEffectNull. 542 * @tc.size : SmallTest 543 * @tc.type : Function 544 * @tc.level : Level 3 545 */ 546 HWTEST_F(DrawingNativePathEffectTest, testCreateSumPathEffectNull, TestSize.Level3) { 547 // 1. OH_Drawing_CreateCornerPathEffect 548 OH_Drawing_PathEffect *firstPathEffect = OH_Drawing_CreateCornerPathEffect(50.0f); 549 EXPECT_NE(firstPathEffect, nullptr); 550 // 2. OH_Drawing_CreateDiscreatePathEffect 551 OH_Drawing_PathEffect *secondPathEffect = OH_Drawing_CreateDiscretePathEffect(50.0f, 50.0f); 552 EXPECT_NE(secondPathEffect, nullptr); 553 // 3. OH_Drawing_CreateSumPathEffect 第一个参数传nullptr 554 OH_Drawing_PathEffect *pathEffect = OH_Drawing_CreateSumPathEffect(nullptr, secondPathEffect); 555 EXPECT_EQ(pathEffect, nullptr); 556 // 4. OH_Drawing_CreateSumPathEffect 第二个参数传nullptr 557 pathEffect = OH_Drawing_CreateSumPathEffect(firstPathEffect, nullptr); 558 EXPECT_EQ(pathEffect, nullptr); 559 // 5. 释放内存 560 OH_Drawing_PathEffectDestroy(firstPathEffect); 561 OH_Drawing_PathEffectDestroy(secondPathEffect); 562 OH_Drawing_PathEffectDestroy(pathEffect); 563 } 564 565 } // namespace Drawing 566 } // namespace Rosen 567 } // namespace OHOS