1/* 2 * Copyright (c) 2022-2024 Huawei Device 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, Hardware 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 <cstdio> 17#include "gtest/gtest.h" 18 19#include "drawing_path.h" 20#include "drawing_matrix.h" 21#include "drawing_rect.h" 22#include "drawing_round_rect.h" 23#include "draw/path.h" 24#include "utils/scalar.h" 25 26using namespace testing; 27using namespace testing::ext; 28 29namespace OHOS { 30namespace Rosen { 31namespace Drawing { 32class NativeDrawingPathTest : public testing::Test { 33public: 34 static void SetUpTestCase(); 35 static void TearDownTestCase(); 36 void SetUp() override; 37 void TearDown() override; 38}; 39 40void NativeDrawingPathTest::SetUpTestCase() {} 41void NativeDrawingPathTest::TearDownTestCase() {} 42void NativeDrawingPathTest::SetUp() {} 43void NativeDrawingPathTest::TearDown() {} 44 45/* 46 * @tc.name: NativeDrawingPathTest_pathCreate001 47 * @tc.desc: test for create drawing_path. 48 * @tc.size : MediumTest 49 * @tc.type : Function 50 * @tc.level : Level 1 51 */ 52HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathCreate001, TestSize.Level1) 53{ 54 OH_Drawing_Path* path = OH_Drawing_PathCreate(); 55 EXPECT_EQ(path == nullptr, false); 56 OH_Drawing_PathDestroy(path); 57} 58 59/* 60 * @tc.name: NativeDrawingPathTest_pathMoveTo002 61 * @tc.desc: test for PathMoveTo func. 62 * @tc.size : MediumTest 63 * @tc.type : Function 64 * @tc.level : Level 1 65 */ 66HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathMoveTo002, TestSize.Level1) 67{ 68 OH_Drawing_Path* path1 = OH_Drawing_PathCreate(); 69 OH_Drawing_PathMoveTo(path1, 20, 20); 70 OH_Drawing_PathMoveTo(path1, -1, 20.6f); 71 OH_Drawing_PathDestroy(path1); 72} 73 74/* 75 * @tc.name: NativeDrawingPathTest_pathLineTo003 76 * @tc.desc: test for PathLineTo func. 77 * @tc.size : MediumTest 78 * @tc.type : Function 79 * @tc.level : Level 1 80 */ 81HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathLineTo003, TestSize.Level1) 82{ 83 OH_Drawing_Path* path2 = OH_Drawing_PathCreate(); 84 OH_Drawing_PathLineTo(path2, 50, 40); 85 OH_Drawing_PathLineTo(path2, -50, 10.2f); 86 OH_Drawing_PathDestroy(path2); 87} 88 89/* 90 * @tc.name: NativeDrawingPathTest_pathReset004 91 * @tc.desc: test for PathReset func. 92 * @tc.size : MediumTest 93 * @tc.type : Function 94 * @tc.level : Level 1 95 */ 96HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathReset004, TestSize.Level1) 97{ 98 OH_Drawing_Path* path3 = OH_Drawing_PathCreate(); 99 OH_Drawing_PathMoveTo(path3, 20, 20); 100 OH_Drawing_PathReset(path3); 101 OH_Drawing_PathDestroy(path3); 102} 103 104/* 105 * @tc.name: NativeDrawingPathTest_pathArcTo005 106 * @tc.desc: test for PathArcTo func. 107 * @tc.size : MediumTest 108 * @tc.type : Function 109 * @tc.level : Level 1 110 */ 111HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathArcTo005, TestSize.Level1) 112{ 113 OH_Drawing_Path* path4 = OH_Drawing_PathCreate(); 114 OH_Drawing_PathArcTo(path4, 10, 10, 20, 0, 0, 90); 115 OH_Drawing_PathArcTo(path4, -10, 10, 10, -10, 0, 90); 116 OH_Drawing_PathDestroy(path4); 117} 118 119/* 120 * @tc.name: NativeDrawingPathTest_pathQuadTo006 121 * @tc.desc: test for PathQuadTo func. 122 * @tc.size : MediumTest 123 * @tc.type : Function 124 * @tc.level : Level 1 125 */ 126HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathQuadTo006, TestSize.Level1) 127{ 128 OH_Drawing_Path* path5 = OH_Drawing_PathCreate(); 129 OH_Drawing_PathQuadTo(path5, 0, 0, 30, 30); 130 OH_Drawing_PathQuadTo(path5, -20.5f, -20.5f, 30, 0); 131 OH_Drawing_PathDestroy(path5); 132} 133 134/* 135 * @tc.name: NativeDrawingPathTest_pathCubicTo007 136 * @tc.desc: test for PathCubicTo func. 137 * @tc.size : MediumTest 138 * @tc.type : Function 139 * @tc.level : Level 1 140 */ 141HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathCubicTo007, TestSize.Level1) 142{ 143 OH_Drawing_Path* path6 = OH_Drawing_PathCreate(); 144 OH_Drawing_PathCubicTo(path6, 30, 40, 60, 0, 50, 20); 145 OH_Drawing_PathCubicTo(path6, -30, 40, 60, -30.6f, 50, -20); 146 OH_Drawing_PathDestroy(path6); 147} 148 149/* 150 * @tc.name: NativeDrawingPathTest_pathClose008 151 * @tc.desc: test for PathClose func. 152 * @tc.size : MediumTest 153 * @tc.type : Function 154 * @tc.level : Level 1 155 */ 156HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathClose008, TestSize.Level1) 157{ 158 OH_Drawing_Path* path7 = OH_Drawing_PathCreate(); 159 OH_Drawing_PathLineTo(path7, 50, 40); 160 OH_Drawing_PathClose(path7); 161 OH_Drawing_PathDestroy(path7); 162} 163 164/* 165 * @tc.name: NativeDrawingPathTest_pathCopy009 166 * @tc.desc: test for PathCopy func. 167 * @tc.size : MediumTest 168 * @tc.type : Function 169 * @tc.level : Level 1 170 */ 171HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathCopy009, TestSize.Level1) 172{ 173 OH_Drawing_Path* path7 = OH_Drawing_PathCreate(); 174 OH_Drawing_PathLineTo(path7, 50, 40); 175 OH_Drawing_PathClose(path7); 176 EXPECT_EQ(OH_Drawing_PathCopy(nullptr), nullptr); 177 OH_Drawing_Path* pathCopy = OH_Drawing_PathCopy(path7); 178 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(pathCopy)->GetBounds().GetWidth(), 50.0)); 179 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(pathCopy)->GetBounds().GetHeight(), 40.0)); 180 OH_Drawing_PathDestroy(path7); 181 OH_Drawing_PathDestroy(pathCopy); 182} 183 184/* 185 * @tc.name: NativeDrawingPathTest_pathAddRect010 186 * @tc.desc: test for PathAddRect func. 187 * @tc.size : MediumTest 188 * @tc.type : Function 189 * @tc.level : Level 1 190 */ 191HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathAddRect010, TestSize.Level1) 192{ 193 OH_Drawing_Path* path = OH_Drawing_PathCreate(); 194 OH_Drawing_PathAddRect(nullptr, 50, 50, 250, 250, OH_Drawing_PathDirection::PATH_DIRECTION_CW); 195 OH_Drawing_PathAddRect(path, 50, 50, 250, 250, OH_Drawing_PathDirection::PATH_DIRECTION_CW); 196 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetWidth(), 200.0)); 197 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetHeight(), 200.0)); 198 OH_Drawing_PathDestroy(path); 199} 200 201/* 202 * @tc.name: NativeDrawingPathTest_pathAddRoundRect011 203 * @tc.desc: test for PathAddRoundRect func. 204 * @tc.size : MediumTest 205 * @tc.type : Function 206 * @tc.level : Level 1 207 */ 208HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathAddRoundRect011, TestSize.Level1) 209{ 210 OH_Drawing_Path* path = OH_Drawing_PathCreate(); 211 OH_Drawing_PathAddRect(nullptr, 50, 50, 250, 250, OH_Drawing_PathDirection::PATH_DIRECTION_CW); 212 OH_Drawing_Rect* rect = OH_Drawing_RectCreate(50, 50, 250, 250); 213 OH_Drawing_RoundRect* roundRect = OH_Drawing_RoundRectCreate(rect, 20, 20); 214 OH_Drawing_PathAddRoundRect(path, roundRect, OH_Drawing_PathDirection::PATH_DIRECTION_CW); 215 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetWidth(), 200.0)); 216 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetHeight(), 200.0)); 217 OH_Drawing_PathDestroy(path); 218 OH_Drawing_RoundRectDestroy(roundRect); 219 OH_Drawing_RectDestroy(rect); 220} 221 222/* 223 * @tc.name: NativeDrawingPathTest_pathAddArc012 224 * @tc.desc: test for PathAddArc func. 225 * @tc.size : MediumTest 226 * @tc.type : Function 227 * @tc.level : Level 1 228 */ 229HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathAddArc012, TestSize.Level1) 230{ 231 OH_Drawing_Path* path = OH_Drawing_PathCreate(); 232 OH_Drawing_Rect* rect = OH_Drawing_RectCreate(50, 50, 250, 250); 233 OH_Drawing_PathAddArc(nullptr, rect, 0, 180); 234 OH_Drawing_PathAddArc(path, nullptr, 0, 180); 235 OH_Drawing_PathAddArc(path, rect, 0, 180); 236 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetWidth(), 200.0)); 237 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetHeight(), 100.0)); 238 OH_Drawing_PathDestroy(path); 239 OH_Drawing_RectDestroy(rect); 240} 241 242/* 243 * @tc.name: NativeDrawingPathTest_pathContains013 244 * @tc.desc: test for PathContains func. 245 * @tc.size : MediumTest 246 * @tc.type : Function 247 * @tc.level : Level 1 248 */ 249HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathContains013, TestSize.Level1) 250{ 251 OH_Drawing_Path* path = OH_Drawing_PathCreate(); 252 OH_Drawing_PathAddRect(path, 50, 50, 250, 250, OH_Drawing_PathDirection::PATH_DIRECTION_CW); 253 OH_Drawing_PathContains(nullptr, 0, 0); 254 bool ret = OH_Drawing_PathContains(path, 0, 0); 255 EXPECT_EQ(ret, false); 256 ret = OH_Drawing_PathContains(path, 60, 60); 257 EXPECT_EQ(ret, true); 258 OH_Drawing_PathDestroy(path); 259} 260 261/* 262 * @tc.name: NativeDrawingPathTest_pathTransform014 263 * @tc.desc: test for PathTransform func. 264 * @tc.size : MediumTest 265 * @tc.type : Function 266 * @tc.level : Level 1 267 */ 268HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathTransform014, TestSize.Level1) 269{ 270 OH_Drawing_Path* path = OH_Drawing_PathCreate(); 271 OH_Drawing_PathAddRect(path, 50, 50, 250, 250, OH_Drawing_PathDirection::PATH_DIRECTION_CW); 272 OH_Drawing_Matrix* matrix = OH_Drawing_MatrixCreateTranslation(1, 1); 273 OH_Drawing_PathTransform(nullptr, matrix); 274 OH_Drawing_PathTransform(path, nullptr); 275 276 bool ret = OH_Drawing_PathContains(path, 50, 50); 277 EXPECT_EQ(ret, true); 278 OH_Drawing_PathTransform(path, matrix); 279 ret = OH_Drawing_PathContains(path, 50, 50); 280 EXPECT_EQ(ret, false); 281 OH_Drawing_PathDestroy(path); 282} 283 284/* 285 * @tc.name: NativeDrawingPathTest_pathSetFilltype015 286 * @tc.desc: test for PathSetFillType func. 287 * @tc.size : MediumTest 288 * @tc.type : Function 289 * @tc.level : Level 1 290 */ 291HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathSetFilltype015, TestSize.Level1) 292{ 293 OH_Drawing_Path* path = OH_Drawing_PathCreate(); 294 OH_Drawing_PathSetFillType(nullptr, PATH_FILL_TYPE_WINDING); 295 OH_Drawing_PathSetFillType(path, PATH_FILL_TYPE_WINDING); 296 297 OH_Drawing_PathLineTo(path, 50, 40); 298 OH_Drawing_PathClose(path); 299 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetWidth(), 50.0)); 300 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetHeight(), 40.0)); 301 float ret = OH_Drawing_PathGetLength(path, true); 302 EXPECT_TRUE(IsScalarAlmostEqual(ret, 128.062485)); // 128.062485 is length of path 303 OH_Drawing_PathDestroy(path); 304} 305/* 306 * @tc.name: NativeDrawingPathTest_pathConicTo016 307 * @tc.desc: test for PathConicTo func. 308 * @tc.size : MediumTest 309 * @tc.type : Function 310 * @tc.level : Level 1 311 */ 312HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathConicTo016, TestSize.Level1) 313{ 314 OH_Drawing_Path* path = OH_Drawing_PathCreate(); 315 OH_Drawing_PathConicTo(path, 0, 0, 30, 30, 1); 316 OH_Drawing_PathConicTo(path, -20.5f, -20.5f, 30, 0, 1); 317 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetWidth(), 50.5)); 318 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetHeight(), 50.5)); 319 OH_Drawing_PathDestroy(path); 320} 321 322/* 323 * @tc.name: NativeDrawingPathTest_pathAddRectWithInitialCorner017 324 * @tc.desc: test for PathAddRectWithInitialCorner func. 325 * @tc.size : MediumTest 326 * @tc.type : Function 327 * @tc.level : Level 1 328 */ 329HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathAddRectWithInitialCorner017, TestSize.Level1) 330{ 331 OH_Drawing_Path* path = OH_Drawing_PathCreate(); 332 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0.0f, 0.0f, 200.0f, 300.0f); 333 OH_Drawing_PathAddRectWithInitialCorner(path, rect, PATH_DIRECTION_CW, 0); 334 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetWidth(), 200.0)); 335 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetHeight(), 300.0)); 336 OH_Drawing_PathClose(path); 337 OH_Drawing_PathDestroy(path); 338 OH_Drawing_RectDestroy(rect); 339} 340 341/* 342 * @tc.name: NativeDrawingPathTest_pathAddPathWithMode018 343 * @tc.desc: test for PathAddPathWithMode func. 344 * @tc.size : MediumTest 345 * @tc.type : Function 346 * @tc.level : Level 1 347 */ 348HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathAddPathWithMode018, TestSize.Level1) 349{ 350 OH_Drawing_Path* path = OH_Drawing_PathCreate(); 351 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0.0f, 0.0f, 200.0f, 300.0f); 352 OH_Drawing_PathAddRectWithInitialCorner(path, rect, PATH_DIRECTION_CW, 0); 353 OH_Drawing_Path* path2 = OH_Drawing_PathCreate(); 354 OH_Drawing_PathAddPathWithMode(path2, path, PATH_ADD_MODE_APPEND); 355 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path2)->GetBounds().GetWidth(), 200.0)); 356 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path2)->GetBounds().GetHeight(), 300.0)); 357 OH_Drawing_PathDestroy(path); 358 OH_Drawing_RectDestroy(rect); 359 OH_Drawing_PathDestroy(path2); 360} 361 362/* 363 * @tc.name: NativeDrawingPathTest_pathAddPathWithOffsetAndMode019 364 * @tc.desc: test for PathAddPathWithOffsetAndMode func. 365 * @tc.size : MediumTest 366 * @tc.type : Function 367 * @tc.level : Level 1 368 */ 369HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathAddPathWithOffsetAndMode019, TestSize.Level1) 370{ 371 OH_Drawing_Path* path = OH_Drawing_PathCreate(); 372 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0.0f, 0.0f, 200.0f, 300.0f); 373 OH_Drawing_PathAddRectWithInitialCorner(path, rect, PATH_DIRECTION_CW, 0); 374 OH_Drawing_Path* path2 = OH_Drawing_PathCreate(); 375 OH_Drawing_PathAddPathWithOffsetAndMode(path2, path, 0, 0, PATH_ADD_MODE_APPEND); 376 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path2)->GetBounds().GetWidth(), 200.0)); 377 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path2)->GetBounds().GetHeight(), 300.0)); 378 OH_Drawing_PathDestroy(path); 379 OH_Drawing_RectDestroy(rect); 380 OH_Drawing_PathDestroy(path2); 381} 382 383/* 384 * @tc.name: NativeDrawingPathTest_pathAddPathWithMatrixAndMode020 385 * @tc.desc: test for PathAddPathWithMatrixAndMode func. 386 * @tc.size : MediumTest 387 * @tc.type : Function 388 * @tc.level : Level 1 389 */ 390HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathAddPathWithMatrixAndMode020, TestSize.Level1) 391{ 392 OH_Drawing_Path* path = OH_Drawing_PathCreate(); 393 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0.0f, 0.0f, 200.0f, 300.0f); 394 OH_Drawing_PathAddRectWithInitialCorner(path, rect, PATH_DIRECTION_CW, 0); 395 OH_Drawing_Path* path2 = OH_Drawing_PathCreate(); 396 OH_Drawing_Matrix* matrix = OH_Drawing_MatrixCreate(); 397 398 OH_Drawing_PathAddPathWithMatrixAndMode(path2, path, matrix, PATH_ADD_MODE_APPEND); 399 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path2)->GetBounds().GetWidth(), 200.0)); 400 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path2)->GetBounds().GetHeight(), 300.0)); 401 402 OH_Drawing_Path* pathRect = OH_Drawing_PathCreate(); 403 OH_Drawing_PathAddRect(pathRect, 0.0f, 0.0f, 200.0f, 300.0f, OH_Drawing_PathDirection::PATH_DIRECTION_CW); 404 OH_Drawing_MatrixSetMatrix( 405 matrix, 406 5, 4, 0, 407 0, -1, 0, 408 0, 0, 1); 409 OH_Drawing_PathAddPath(pathRect, pathRect, nullptr); 410 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(pathRect)->GetBounds().GetWidth(), 200.0)); 411 OH_Drawing_PathAddPath(pathRect, pathRect, matrix); 412 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(pathRect)->GetBounds().GetWidth(), 2200.0)); 413 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(pathRect)->GetBounds().GetHeight(), 600.0)); 414 OH_Drawing_PathAddPath(nullptr, pathRect, matrix); 415 OH_Drawing_PathAddPath(pathRect, nullptr, matrix); 416 OH_Drawing_PathDestroy(path); 417 OH_Drawing_RectDestroy(rect); 418 OH_Drawing_PathDestroy(path2); 419 OH_Drawing_PathDestroy(pathRect); 420 OH_Drawing_MatrixDestroy(matrix); 421} 422 423/* 424 * @tc.name: NativeDrawingPathTest_pathOffset021 425 * @tc.desc: test for PathOffset func. 426 * @tc.size : MediumTest 427 * @tc.type : Function 428 * @tc.level : Level 1 429 */ 430HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathOffset021, TestSize.Level1) 431{ 432 OH_Drawing_Path* path = OH_Drawing_PathCreate(); 433 OH_Drawing_Path* path2 = OH_Drawing_PathCreate(); 434 OH_Drawing_PathOffset(path, path2, 50, 40); 435 OH_Drawing_PathReset(path); 436 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetWidth(), 0.0)); 437 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path)->GetBounds().GetHeight(), 0.0)); 438 OH_Drawing_PathDestroy(path); 439 OH_Drawing_PathDestroy(path2); 440} 441 442/* 443 * @tc.name: NativeDrawingPathTest_pathAddOvalWithInitialPoint022 444 * @tc.desc: test for PathAddOvalWithInitialPoint func. 445 * @tc.size : MediumTest 446 * @tc.type : Function 447 * @tc.level : Level 1 448 */ 449HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathAddOvalWithInitialPoint022, TestSize.Level1) 450{ 451 OH_Drawing_Path* path9 = OH_Drawing_PathCreate(); 452 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 100, 500, 400); 453 OH_Drawing_PathAddOvalWithInitialPoint(path9, rect, 10, PATH_DIRECTION_CW); 454 OH_Drawing_PathClose(path9); 455 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path9)->GetBounds().GetWidth(), 500.0)); 456 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path9)->GetBounds().GetHeight(), 300.0)); 457 OH_Drawing_PathDestroy(path9); 458 OH_Drawing_RectDestroy(rect); 459} 460 461/* 462 * @tc.name: NativeDrawingPathTest_pathRMoveTo023 463 * @tc.desc: test for PathRMoveTo func. 464 * @tc.size : MediumTest 465 * @tc.type : Function 466 * @tc.level : Level 1 467 */ 468HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathRMoveTo023, TestSize.Level1) 469{ 470 OH_Drawing_Path* path10 = OH_Drawing_PathCreate(); 471 OH_Drawing_PathRMoveTo(path10, 100, 100); 472 OH_Drawing_PathLineTo(path10, 300, 300); 473 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path10)->GetBounds().GetWidth(), 200.0)); 474 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path10)->GetBounds().GetHeight(), 200.0)); 475 OH_Drawing_PathDestroy(path10); 476} 477 478/* 479 * @tc.name: NativeDrawingPathTest_pathRLineTo024 480 * @tc.desc: test for PathRLineTo func. 481 * @tc.size : MediumTest 482 * @tc.type : Function 483 * @tc.level : Level 1 484 */ 485HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathRLineTo024, TestSize.Level1) 486{ 487 OH_Drawing_Path* path11 = OH_Drawing_PathCreate(); 488 OH_Drawing_PathMoveTo(path11, 100, 100); 489 OH_Drawing_PathRLineTo(path11, 300, 300); 490 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path11)->GetBounds().GetWidth(), 300.0)); 491 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path11)->GetBounds().GetHeight(), 300.0)); 492 OH_Drawing_PathDestroy(path11); 493} 494 495/* 496 * @tc.name: NativeDrawingPathTest_pathRQuadTo025 497 * @tc.desc: test for PathRQuadTo func. 498 * @tc.size : MediumTest 499 * @tc.type : Function 500 * @tc.level : Level 1 501 */ 502HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathRQuadTo025, TestSize.Level1) 503{ 504 OH_Drawing_Path* path12 = OH_Drawing_PathCreate(); 505 OH_Drawing_PathQuadTo(path12, 0, 0, 30, 30); 506 OH_Drawing_PathRQuadTo(path12, 100, 100, 100, 300); 507 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path12)->GetBounds().GetWidth(), 130.0)); 508 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path12)->GetBounds().GetHeight(), 330.0)); 509 OH_Drawing_PathDestroy(path12); 510} 511 512/* 513 * @tc.name: NativeDrawingPathTest_pathRConicTo026 514 * @tc.desc: test for PathRConicTo func. 515 * @tc.size : MediumTest 516 * @tc.type : Function 517 * @tc.level : Level 1 518 */ 519HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathRConicTo026, TestSize.Level1) 520{ 521 OH_Drawing_Path* path13 = OH_Drawing_PathCreate(); 522 OH_Drawing_PathRConicTo(path13, 100, 100, 100, 300, 5); 523 OH_Drawing_PathRConicTo(path13, 100, 100, 100, 300, 5); 524 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path13)->GetBounds().GetWidth(), 200.0)); 525 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path13)->GetBounds().GetHeight(), 600.0)); 526 OH_Drawing_PathDestroy(path13); 527} 528 529/* 530 * @tc.name: NativeDrawingPathTest_pathRCubicTo027 531 * @tc.desc: test for PathRCubicTo func. 532 * @tc.size : MediumTest 533 * @tc.type : Function 534 * @tc.level : Level 1 535 */ 536HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathRCubicTo027, TestSize.Level1) 537{ 538 OH_Drawing_Path* path14 = OH_Drawing_PathCreate(); 539 OH_Drawing_PathCubicTo(path14, 30, 40, 60, 0, 50, 20); 540 OH_Drawing_PathRCubicTo(path14, 30, 40, 60, 0, 50, 20); 541 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path14)->GetBounds().GetWidth(), 110.0)); 542 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path14)->GetBounds().GetHeight(), 60.0)); 543 OH_Drawing_PathDestroy(path14); 544} 545 546/* 547 * @tc.name: NativeDrawingPathTest_pathTransformWithPerspectiveClip028 548 * @tc.desc: test for PathTransformWithPerspectiveClip func. 549 * @tc.size : MediumTest 550 * @tc.type : Function 551 * @tc.level : Level 1 552 */ 553HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathTransformWithPerspectiveClip028, TestSize.Level1) 554{ 555 OH_Drawing_Path* path15 = OH_Drawing_PathCreate(); 556 OH_Drawing_PathAddRect(path15, 100, 500, 500, 100, PATH_DIRECTION_CW); 557 OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateTranslation(100, 100); 558 OH_Drawing_PathTransformWithPerspectiveClip(path15, matrix, path15, true); 559 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path15)->GetBounds().GetWidth(), 400.0)); 560 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path15)->GetBounds().GetHeight(), 400.0)); 561 OH_Drawing_PathDestroy(path15); 562 OH_Drawing_MatrixDestroy(matrix); 563} 564/* 565 * @tc.name : NativeDrawingPathTest_pathAddPath029 566 * @tc.desc : test for PathAddPath func. 567 * @tc.size : MediumTest 568 * @tc.type : Function 569 * @tc.level : Level 1 570 */ 571HWTEST_F(NativeDrawingPathTest, NativeDrawingPathTest_pathAddPath029, TestSize.Level1) 572{ 573 OH_Drawing_Path* path16 = OH_Drawing_PathCreate(); 574 OH_Drawing_PathAddRect(path16, 100, 500, 500, 100, OH_Drawing_PathDirection::PATH_DIRECTION_CW); 575 OH_Drawing_Matrix* matrix = OH_Drawing_MatrixCreate(); 576 OH_Drawing_MatrixSetMatrix( 577 matrix, 578 1, 0, 0, 579 0, -1, 0, 580 0, 0, 1); 581 OH_Drawing_PathAddPath(path16, path16, matrix); 582 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path16)->GetBounds().GetWidth(), 400.0)); 583 EXPECT_TRUE(IsScalarAlmostEqual(reinterpret_cast<Path*>(path16)->GetBounds().GetHeight(), 1000.0)); 584 OH_Drawing_PathDestroy(path16); 585 OH_Drawing_MatrixDestroy(matrix); 586} 587} // namespace Drawing 588} // namespace Rosen 589} // namespace OHOS