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