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_error_code.h" 18#include "drawing_filter.h" 19#include "drawing_mask_filter.h" 20#include "drawing_rect.h" 21#include "drawing_round_rect.h" 22#include "utils/scalar.h" 23#include "gtest/gtest.h" 24 25using namespace testing; 26using namespace testing::ext; 27 28namespace OHOS { 29namespace Rosen { 30namespace Drawing { 31class DrawingNativeRectTest : public testing::Test {}; 32 33/* 34 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0100 35 * @tc.name: testRectCreateNormal 36 * @tc.desc: Test for creating and destroying a rectangle object with normal parameters. 37 * @tc.size : SmallTest 38 * @tc.type : Function 39 * @tc.level : Level 0 40 */ 41HWTEST_F(DrawingNativeRectTest, testRectCreateNormal, TestSize.Level0) { 42 // 1. Call OH_Drawing_RectCreate to create a rectangle object 43 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(100, 200, 500, 600); 44 // 2. Free memory 45 OH_Drawing_RectDestroy(rect); 46} 47 48/* 49 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0200 50 * @tc.name: testRectIntersectNormal 51 * @tc.desc: Test for intersecting two rectangles with normal parameters. 52 * @tc.size : SmallTest 53 * @tc.type : Function 54 * @tc.level : Level 0 55 */ 56HWTEST_F(DrawingNativeRectTest, testRectIntersectNormal, TestSize.Level0) { 57 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 58 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(100, 200, 500, 600); 59 // 2. Call OH_Drawing_RectCreate to create another rectangle object other 60 OH_Drawing_Rect *other = OH_Drawing_RectCreate(300, 400, 700, 800); 61 // 3. Call OH_Drawing_RectSetLeft to set the x-coordinate of the top-left corner of rect 62 OH_Drawing_RectSetLeft(rect, 0); 63 // 4. Call OH_Drawing_RectSetTop to set the y-coordinate of the top-left corner of rect 64 OH_Drawing_RectSetTop(rect, 0); 65 // 5. Call OH_Drawing_RectSetRight to set the x-coordinate of the bottom-right corner of rect 66 OH_Drawing_RectSetRight(rect, 200); 67 // 6. Call OH_Drawing_RectSetBottom to set the y-coordinate of the bottom-right corner of rect 68 OH_Drawing_RectSetBottom(rect, 200); 69 // 7. Repeat steps 3-6 to set the coordinates of the other rectangle object 70 OH_Drawing_RectSetLeft(other, 100); 71 OH_Drawing_RectSetTop(other, 100); 72 OH_Drawing_RectSetRight(other, 300); 73 OH_Drawing_RectSetBottom(other, 300); 74 // 8. Call OH_Drawing_RectIntersect to check if the two rectangles intersect, Returns true if they intersect, 75 // false otherwise 76 bool ret = OH_Drawing_RectIntersect(rect, other); 77 EXPECT_EQ(ret, true); 78 // 9. Free memory 79 OH_Drawing_RectDestroy(rect); 80 OH_Drawing_RectDestroy(other); 81} 82 83/* 84 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0201 85 * @tc.name: testRectIntersectNull 86 * @tc.desc: Test for intersecting rectangles with NULL parameters. 87 * @tc.size : SmallTest 88 * @tc.type : Function 89 * @tc.level : Level 3 90 */ 91HWTEST_F(DrawingNativeRectTest, testRectIntersectNull, TestSize.Level3) { 92 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 93 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(100, 200, 500, 600); 94 // 2. Call OH_Drawing_RectCreate to create another rectangle object other 95 OH_Drawing_Rect *other = OH_Drawing_RectCreate(300, 400, 700, 800); 96 // 3. Call OH_Drawing_RectIntersect with the first parameter as nullptr, Returns error code 97 // OH_DRAWING_ERROR_INVALID_PARAMETER 98 OH_Drawing_RectIntersect(nullptr, other); 99 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 100 // 4. Call OH_Drawing_RectIntersect with the second parameter as nullptr, Returns error code 101 // OH_DRAWING_ERROR_INVALID_PARAMETER 102 OH_Drawing_RectIntersect(rect, nullptr); 103 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 104 // 5. Free memory 105 OH_Drawing_RectDestroy(rect); 106 OH_Drawing_RectDestroy(other); 107} 108 109/* 110 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0300 111 * @tc.name: testRectJoinNormal 112 * @tc.desc: Test for joining two rectangles with normal parameters. 113 * @tc.size : SmallTest 114 * @tc.type : Function 115 * @tc.level : Level 0 116 */ 117HWTEST_F(DrawingNativeRectTest, testRectJoinNormal, TestSize.Level0) { 118 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 119 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 120 // 2. Call OH_Drawing_RectCreate to create another rectangle object other 121 OH_Drawing_Rect *other = OH_Drawing_RectCreate(100, 100, 300, 300); 122 // 3. Call OH_Drawing_RectSetLeft to set the x-coordinate of the top-left corner of rect 123 OH_Drawing_RectSetLeft(rect, 0); 124 // 4. Call OH_Drawing_RectSetTop to set the y-coordinate of the top-left corner of rect 125 OH_Drawing_RectSetTop(rect, 0); 126 // 5. Call OH_Drawing_RectSetRight to set the x-coordinate of the bottom-right corner of rect 127 OH_Drawing_RectSetRight(rect, 200); 128 // 6. Call OH_Drawing_RectSetBottom to set the y-coordinate of the bottom-right corner of rect 129 OH_Drawing_RectSetBottom(rect, 200); 130 // 7. Repeat steps 3-6 to set the coordinates of the other rectangle object 131 OH_Drawing_RectSetLeft(other, 100); 132 OH_Drawing_RectSetTop(other, 100); 133 OH_Drawing_RectSetRight(other, 300); 134 OH_Drawing_RectSetBottom(other, 300); 135 // 8. Call OH_Drawing_RectJoin to take the union of the two rectangles 136 bool ret = OH_Drawing_RectJoin(rect, other); 137 EXPECT_TRUE(ret); 138 // 9. Free memory 139 OH_Drawing_RectDestroy(rect); 140 OH_Drawing_RectDestroy(other); 141} 142 143/* 144 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0301 145 * @tc.name: testRectJoinNull 146 * @tc.desc: Test for joining rectangles with NULL parameters. 147 * @tc.size : SmallTest 148 * @tc.type : Function 149 * @tc.level : Level 3 150 */ 151HWTEST_F(DrawingNativeRectTest, testRectJoinNull, TestSize.Level3) { 152 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 153 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 154 // 2. Call OH_Drawing_RectCreate to create another rectangle object other 155 OH_Drawing_Rect *other = OH_Drawing_RectCreate(100, 100, 300, 300); 156 // 3. Call OH_Drawing_RectJoin with the first parameter as nullptr, Returns error code 157 // OH_DRAWING_ERROR_INVALID_PARAMETER 158 OH_Drawing_RectJoin(nullptr, other); 159 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 160 // 4. Call OH_Drawing_RectJoin with the second parameter as nullptr, Returns error code 161 // OH_DRAWING_ERROR_INVALID_PARAMETER 162 OH_Drawing_RectJoin(rect, nullptr); 163 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 164 // 5. Free memory 165 OH_Drawing_RectDestroy(rect); 166 OH_Drawing_RectDestroy(other); 167} 168 169/* 170 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0400 171 * @tc.name: testRectSetLeftNormal 172 * @tc.desc: Test for setting and getting the left coordinate of a rectangle with normal parameters. 173 * @tc.size : SmallTest 174 * @tc.type : Function 175 * @tc.level : Level 0 176 */ 177HWTEST_F(DrawingNativeRectTest, testRectSetLeftNormal, TestSize.Level0) { 178 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 179 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 180 // 2. Call OH_Drawing_RectSetLeft to set the x-coordinate of the top-left corner of rect 181 OH_Drawing_RectSetLeft(rect, 100); 182 // 3. Call OH_Drawing_RectGetLeft to get the x-coordinate of the top-left corner of rect, Returns the value set 183 // in step 2 184 float left = OH_Drawing_RectGetLeft(rect); 185 EXPECT_TRUE(IsScalarAlmostEqual(left, 100)); 186 // 4. Free memory 187 OH_Drawing_RectDestroy(rect); 188} 189 190/* 191 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0401 192 * @tc.name: testRectSetLeftNull 193 * @tc.desc: Test for setting the left coordinate of a rectangle with NULL parameters. 194 * @tc.size : SmallTest 195 * @tc.type : Function 196 * @tc.level : Level 3 197 */ 198HWTEST_F(DrawingNativeRectTest, testRectSetLeftNull, TestSize.Level3) { 199 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 200 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 201 // 2. Call OH_Drawing_RectSetLeft with the first parameter as nullptr, Returns error code 202 // OH_DRAWING_ERROR_INVALID_PARAMETER 203 OH_Drawing_RectSetLeft(nullptr, 0.00); 204 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 205 // 3. Call OH_Drawing_RectSetLeft with the second parameter as 0.00, Call fails without crashing 206 OH_Drawing_RectSetLeft(rect, 0.00); 207 // 4. Free memory 208 OH_Drawing_RectDestroy(rect); 209} 210 211/* 212 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0402 213 * @tc.name: testRectSetLeftAbnormal 214 * @tc.desc: Test for setting the left coordinate of a rectangle with abnormal parameters. 215 * @tc.size : SmallTest 216 * @tc.type : Function 217 * @tc.level : Level 3 218 */ 219HWTEST_F(DrawingNativeRectTest, testRectSetLeftAbnormal, TestSize.Level3) { 220 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 221 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 222 // 2. Call OH_Drawing_RectSetLeft with the second parameter as an integer or character data 223 OH_Drawing_RectSetLeft(rect, 100); 224 // 3. Call OH_Drawing_RectGetLeft to get the x-coordinate of the top-left corner of rect, Returns the value set 225 // in step 2 (the passed parameter is forcibly converted) 226 float left = OH_Drawing_RectGetLeft(rect); 227 EXPECT_TRUE(IsScalarAlmostEqual(left, 100)); 228 // 4. Free memory 229 OH_Drawing_RectDestroy(rect); 230} 231 232/* 233 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0403 234 * @tc.name: testRectSetLeftMultipleCalls 235 * @tc.desc: Test for repeatedly setting and getting the left coordinate of a rectangle. 236 * @tc.size : SmallTest 237 * @tc.type : Function 238 * @tc.level : Level 3 239 */ 240HWTEST_F(DrawingNativeRectTest, testRectSetLeftMultipleCalls, TestSize.Level3) { 241 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 242 for (int i = 0; i < 10; i++) { 243 OH_Drawing_RectSetLeft(rect, i * 10); 244 float left = OH_Drawing_RectGetLeft(rect); 245 EXPECT_TRUE(IsScalarAlmostEqual(left, i * 10)); 246 } 247 OH_Drawing_RectDestroy(rect); 248} 249 250/* 251 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0500 252 * @tc.name: testRectSetTopNormal 253 * @tc.desc: Test for setting and getting the top coordinate of a rectangle with normal parameters. 254 * @tc.size : SmallTest 255 * @tc.type : Function 256 * @tc.level : Level 0 257 */ 258HWTEST_F(DrawingNativeRectTest, testRectSetTopNormal, TestSize.Level0) { 259 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 260 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 261 // 2. Call OH_Drawing_RectSetTop to set the y-coordinate of the top-left corner of rect 262 OH_Drawing_RectSetTop(rect, 100); 263 // 3. Call OH_Drawing_RectGetTop to get the y-coordinate of the top-left corner of rect, Returns the value set in 264 // step 2 265 float top = OH_Drawing_RectGetTop(rect); 266 EXPECT_TRUE(IsScalarAlmostEqual(top, 100)); 267 // 4. Free memory 268 OH_Drawing_RectDestroy(rect); 269} 270 271/* 272 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0501 273 * @tc.name: testRectSetTopNull 274 * @tc.desc: Test for setting the top coordinate of a rectangle with NULL parameters. 275 * @tc.size : SmallTest 276 * @tc.type : Function 277 * @tc.level : Level 3 278 */ 279HWTEST_F(DrawingNativeRectTest, testRectSetTopNull, TestSize.Level3) { 280 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 281 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 282 // 2. Call OH_Drawing_RectSetTop with the first parameter as nullptr, Returns error code 283 // OH_DRAWING_ERROR_INVALID_PARAMETER 284 OH_Drawing_RectSetTop(nullptr, 0.00); 285 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 286 // 3. Call OH_Drawing_RectSetTop with the second parameter as 0.00, Call fails without crashing 287 OH_Drawing_RectSetTop(rect, 0.00); 288 // 4. Free memory 289 OH_Drawing_RectDestroy(rect); 290} 291 292/* 293 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0502 294 * @tc.name: testRectSetTopAbnormal 295 * @tc.desc: Test for setting the top coordinate of a rectangle with abnormal parameters. 296 * @tc.size : SmallTest 297 * @tc.type : Function 298 * @tc.level : Level 3 299 */ 300HWTEST_F(DrawingNativeRectTest, testRectSetTopAbnormal, TestSize.Level3) { 301 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 302 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 303 // 2. Call OH_Drawing_RectSetTop with the second parameter as an integer or character data 304 OH_Drawing_RectSetTop(rect, 100); 305 // 3. Call OH_Drawing_RectGetTop to get the y-coordinate of the top-left corner of rect, Returns the value set in 306 // step 2 (the passed parameter is forcibly converted) 307 float top = OH_Drawing_RectGetTop(rect); 308 EXPECT_TRUE(IsScalarAlmostEqual(top, 100)); 309 // 4. Free memory 310 OH_Drawing_RectDestroy(rect); 311} 312 313/* 314 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0503 315 * @tc.name: testRectSetTopMultipleCalls 316 * @tc.desc: Test for repeatedly setting and getting the top coordinate of a rectangle. 317 * @tc.size : SmallTest 318 * @tc.type : Function 319 * @tc.level : Level 3 320 */ 321HWTEST_F(DrawingNativeRectTest, testRectSetTopMultipleCalls, TestSize.Level3) { 322 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 323 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 324 // 2. Loop to call OH_Drawing_RectSetTop to set the y-coordinate of the top-left corner of rect 10 times (each time 325 // with a different value) 326 for (int i = 0; i < 10; i++) { 327 OH_Drawing_RectSetTop(rect, i * 10); 328 // 3. Loop to call OH_Drawing_RectGetTop to get the y-coordinate of the top-left corner of rect 10 times, Each 329 // time the returned value is consistent with the set value 330 float top = OH_Drawing_RectGetTop(rect); 331 EXPECT_TRUE(IsScalarAlmostEqual(top, i * 10)); 332 } 333 // 3. Loop to call OH_Drawing_RectGetTop to get the y-coordinate of the top-left corner of rect 10 times, Each time 334 // the returned value is consistent with the set value 335 for (int i = 0; i < 10; i++) { 336 OH_Drawing_RectSetTop(rect, 10); 337 // 3. Loop to call OH_Drawing_RectGetTop to get the y-coordinate of the top-left corner of rect 10 times, Each 338 // time the returned value is consistent with the set value 339 float top = OH_Drawing_RectGetTop(rect); 340 EXPECT_TRUE(IsScalarAlmostEqual(top, 10)); 341 } 342 // 4. Free memory 343 OH_Drawing_RectDestroy(rect); 344} 345 346/* 347 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0600 348 * @tc.name: testRectSetRightNormal 349 * @tc.desc: Test for setting and getting the right coordinate of a rectangle with normal parameters. 350 * @tc.size : SmallTest 351 * @tc.type : Function 352 * @tc.level : Level 0 353 */ 354HWTEST_F(DrawingNativeRectTest, testRectSetRightNormal, TestSize.Level0) { 355 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 356 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 357 // 2. Call OH_Drawing_RectSetRight to set the x-coordinate of the bottom-right corner of rect 358 OH_Drawing_RectSetRight(rect, 300); 359 // 3. Call OH_Drawing_RectGetRight to get the x-coordinate of the bottom-right corner of rect, Returns the value set 360 // in step 2 361 float right = OH_Drawing_RectGetRight(rect); 362 EXPECT_TRUE(IsScalarAlmostEqual(right, 300)); 363 // 4. Free memory 364 OH_Drawing_RectDestroy(rect); 365} 366 367/* 368 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0601 369 * @tc.name: testRectSetRightNull 370 * @tc.desc: Test for setting the right coordinate of a rectangle with NULL parameters. 371 * @tc.size : SmallTest 372 * @tc.type : Function 373 * @tc.level : Level 3 374 */ 375HWTEST_F(DrawingNativeRectTest, testRectSetRightNull, TestSize.Level3) { 376 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 377 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 378 // 2. Call OH_Drawing_RectSetRight with the first parameter as nullptr, Returns error code 379 // OH_DRAWING_ERROR_INVALID_PARAMETER 380 OH_Drawing_RectSetRight(nullptr, 0.00); 381 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 382 // 3. Call OH_Drawing_RectSetRight with the second parameter as 0.00, 3. Call fails without crashing 383 OH_Drawing_RectSetRight(rect, 0.00); 384 // 4. Free memory 385 OH_Drawing_RectDestroy(rect); 386} 387 388/* 389 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0602 390 * @tc.name: testRectSetRightAbnormal 391 * @tc.desc: Test for setting the right coordinate of a rectangle with abnormal parameters. 392 * @tc.size : SmallTest 393 * @tc.type : Function 394 * @tc.level : Level 3 395 */ 396HWTEST_F(DrawingNativeRectTest, testRectSetRightAbnormal, TestSize.Level3) { 397 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 398 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 399 // 2. Call OH_Drawing_RectSetRight with the second parameter as an integer or character data 400 OH_Drawing_RectSetRight(rect, 100); 401 // 3. Call OH_Drawing_RectGetRight to get the x-coordinate of the bottom-right corner of rect, Returns the value set 402 // in step 2 (the passed parameter is forcibly converted) 403 float right = OH_Drawing_RectGetRight(rect); 404 EXPECT_TRUE(IsScalarAlmostEqual(right, 100)); 405 // 4. Free memory 406 OH_Drawing_RectDestroy(rect); 407} 408 409/* 410 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0603 411 * @tc.name: testRectSetRightMultipleCalls 412 * @tc.desc: Test for repeatedly setting and getting the right coordinate of a rectangle. 413 * @tc.size : SmallTest 414 * @tc.type : Function 415 * @tc.level : Level 3 416 */ 417HWTEST_F(DrawingNativeRectTest, testRectSetRightMultipleCalls, TestSize.Level3) { 418 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 419 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 420 // 2. Loop to call OH_Drawing_RectSetRight to set the x-coordinate of the bottom-right corner of rect 10 times (each 421 // time with a different value) 422 for (int i = 0; i < 10; i++) { 423 OH_Drawing_RectSetRight(rect, i * 10); 424 // 3. Loop to call OH_Drawing_RectGetRight to get the x-coordinate of the bottom-right corner of rect 10 times, 425 // Each time the returned value is consistent with the set value 426 float right = OH_Drawing_RectGetRight(rect); 427 EXPECT_TRUE(IsScalarAlmostEqual(right, i * 10)); 428 } 429 // 3. Loop to call OH_Drawing_RectGetRight to get the x-coordinate of the bottom-right corner of rect 10 times, Each 430 // time the returned value is consistent with the set value 431 for (int i = 0; i < 10; i++) { 432 OH_Drawing_RectSetRight(rect, 10); 433 // 3. Loop to call OH_Drawing_RectGetRight to get the x-coordinate of the bottom-right corner of rect 10 times, 434 // Each time the returned value is consistent with the set value 435 float right = OH_Drawing_RectGetRight(rect); 436 EXPECT_TRUE(IsScalarAlmostEqual(right, 10)); 437 } 438 // 4. Free memory 439 OH_Drawing_RectDestroy(rect); 440} 441 442/* 443 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0700 444 * @tc.name: testRectSetBottomNormal 445 * @tc.desc: Test for setting and getting the bottom coordinate of a rectangle with normal parameters. 446 * @tc.size : SmallTest 447 * @tc.type : Function 448 * @tc.level : Level 0 449 */ 450HWTEST_F(DrawingNativeRectTest, testRectSetBottomNormal, TestSize.Level0) { 451 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 452 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 453 // 2. Call OH_Drawing_RectSetBottom to set the y-coordinate of the bottom-right corner of rect 454 OH_Drawing_RectSetBottom(rect, 300); 455 // 3. Call OH_Drawing_RectGetBottom to get the y-coordinate of the bottom-right corner of rect, 3. Returns the value 456 // set in step 2 457 float bottom = OH_Drawing_RectGetBottom(rect); 458 EXPECT_TRUE(IsScalarAlmostEqual(bottom, 300)); 459 // 4. Free memory 460 OH_Drawing_RectDestroy(rect); 461} 462 463/* 464 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0701 465 * @tc.name: testRectSetBottomNull 466 * @tc.desc: Test for setting the bottom coordinate of a rectangle with NULL parameters. 467 * @tc.size : SmallTest 468 * @tc.type : Function 469 * @tc.level : Level 3 470 */ 471HWTEST_F(DrawingNativeRectTest, testRectSetBottomNull, TestSize.Level3) { 472 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 473 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 474 // 2. Call OH_Drawing_RectSetBottom with the first parameter as nullptr, returns error code 475 // OH_DRAWING_ERROR_INVALID_PARAMETER 476 OH_Drawing_RectSetBottom(nullptr, 0.00); 477 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 478 // 3. Call OH_Drawing_RectSetBottom with the second parameter as 0.00, the call fails without crashing 479 OH_Drawing_RectSetBottom(rect, 0.00); 480 // 4. Free memory 481 OH_Drawing_RectDestroy(rect); 482} 483 484/* 485 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0702 486 * @tc.name: testRectSetBottomAbnormal 487 * @tc.desc: Test for setting the bottom coordinate of a rectangle with abnormal parameters. 488 * @tc.size : SmallTest 489 * @tc.type : Function 490 * @tc.level : Level 3 491 */ 492HWTEST_F(DrawingNativeRectTest, testRectSetBottomAbnormal, TestSize.Level3) { 493 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 494 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 495 // 2. Call OH_Drawing_RectSetBottom with the second parameter as an integer or character data 496 OH_Drawing_RectSetBottom(rect, 100); 497 // 3. Call OH_Drawing_RectGetBottom to get the y-coordinate of the bottom-right corner of rect 498 float bottom = OH_Drawing_RectGetBottom(rect); 499 EXPECT_TRUE(IsScalarAlmostEqual(bottom, 100)); 500 // 4. Free memory 501 OH_Drawing_RectDestroy(rect); 502} 503 504/* 505 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0703 506 * @tc.name: testRectSetBottomMultipleCalls 507 * @tc.desc: Test for repeatedly setting and getting the bottom coordinate of a rectangle. 508 * @tc.size : SmallTest 509 * @tc.type : Function 510 * @tc.level : Level 3 511 */ 512HWTEST_F(DrawingNativeRectTest, testRectSetBottomMultipleCalls, TestSize.Level3) { 513 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 514 515 for (int i = 0; i < 10; i++) { 516 OH_Drawing_RectSetBottom(rect, i * 10); 517 float bottom = OH_Drawing_RectGetBottom(rect); 518 EXPECT_TRUE(IsScalarAlmostEqual(bottom, i * 10)); 519 } 520 521 OH_Drawing_RectDestroy(rect); 522} 523 524/* 525 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0800 526 * @tc.name: testRectGetLeftNormal 527 * @tc.desc: Test for setting and getting the left coordinate of a rectangle with normal parameters. 528 * @tc.size : SmallTest 529 * @tc.type : Function 530 * @tc.level : Level 0 531 */ 532HWTEST_F(DrawingNativeRectTest, testRectGetLeftNormal, TestSize.Level0) { 533 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 534 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 535 // 2. Call OH_Drawing_RectSetLeft to set the x-coordinate of the top-left corner of rect 536 OH_Drawing_RectSetLeft(rect, 100); 537 // 3. Call OH_Drawing_RectGetLeft to get the x-coordinate of the top-left corner of rect 538 float left = OH_Drawing_RectGetLeft(rect); 539 EXPECT_TRUE(IsScalarAlmostEqual(left, 100)); 540 // 4. Free memory 541 OH_Drawing_RectDestroy(rect); 542} 543 544/* 545 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0801 546 * @tc.name: testRectGetLeftNull 547 * @tc.desc: Test for getting the left coordinate of a rectangle with NULL parameters. 548 * @tc.size : SmallTest 549 * @tc.type : Function 550 * @tc.level : Level 3 551 */ 552HWTEST_F(DrawingNativeRectTest, testRectGetLeftNull, TestSize.Level3) { 553 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 554 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 555 // 2. Call OH_Drawing_RectGetLeft with nullptr as the parameter 556 OH_Drawing_RectGetLeft(nullptr); 557 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 558 // 3. Free memory 559 OH_Drawing_RectDestroy(rect); 560} 561 562/* 563 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0900 564 * @tc.name: testRectGetTopNormal 565 * @tc.desc: Test for setting and getting the top coordinate of a rectangle with normal parameters. 566 * @tc.size : SmallTest 567 * @tc.type : Function 568 * @tc.level : Level 0 569 */ 570HWTEST_F(DrawingNativeRectTest, testRectGetTopNormal, TestSize.Level0) { 571 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 572 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 573 // 2. Call OH_Drawing_RectSetTop to set the y-coordinate of the top-left corner of rect 574 OH_Drawing_RectSetTop(rect, 100); 575 // 3. Call OH_Drawing_RectGetTop to get the y-coordinate of the top-left corner of rect 576 float top = OH_Drawing_RectGetTop(rect); 577 EXPECT_TRUE(IsScalarAlmostEqual(top, 100)); 578 // 4. Free memory 579 OH_Drawing_RectDestroy(rect); 580} 581 582/* 583 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_0901 584 * @tc.name: testRectGetTopNull 585 * @tc.desc: Test for getting the top coordinate of a rectangle with NULL parameters. 586 * @tc.size : SmallTest 587 * @tc.type : Function 588 * @tc.level : Level 3 589 */ 590HWTEST_F(DrawingNativeRectTest, testRectGetTopNull, TestSize.Level3) { 591 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 592 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 593 // 2. Call OH_Drawing_RectGetTop with nullptr as the parameter 594 OH_Drawing_RectGetTop(nullptr); 595 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 596 // 3. Free memory 597 OH_Drawing_RectDestroy(rect); 598} 599 600/* 601 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_1000 602 * @tc.name: testRectGetRightNormal 603 * @tc.desc: Test for setting and getting the right coordinate of a rectangle with normal parameters. 604 * @tc.size : SmallTest 605 * @tc.type : Function 606 * @tc.level : Level 0 607 */ 608HWTEST_F(DrawingNativeRectTest, testRectGetRightNormal, TestSize.Level0) { 609 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 610 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 611 // 2. Call OH_Drawing_RectSetRight to set the x-coordinate of the bottom-right corner of rect 612 OH_Drawing_RectSetRight(rect, 300); 613 // 3. Call OH_Drawing_RectGetRight to get the x-coordinate of the bottom-right corner of rect 614 float right = OH_Drawing_RectGetRight(rect); 615 EXPECT_TRUE(IsScalarAlmostEqual(right, 300)); 616 // 4. Free memory 617 OH_Drawing_RectDestroy(rect); 618} 619 620/* 621 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_1001 622 * @tc.name: testRectGetRightNull 623 * @tc.desc: Test for getting the right coordinate of a rectangle with NULL parameters. 624 * @tc.size : SmallTest 625 * @tc.type : Function 626 * @tc.level : Level 3 627 */ 628HWTEST_F(DrawingNativeRectTest, testRectGetRightNull, TestSize.Level3) { 629 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 630 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 631 // 2. Call OH_Drawing_RectGetRight with nullptr as the parameter, returns error code 632 // OH_DRAWING_ERROR_INVALID_PARAMETER 633 OH_Drawing_RectGetRight(nullptr); 634 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 635 // 3. Free memory 636 OH_Drawing_RectDestroy(rect); 637} 638 639/* 640 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_1100 641 * @tc.name: testRectGetBottomNormal 642 * @tc.desc: Test for setting and getting the bottom coordinate of a rectangle with normal parameters. 643 * @tc.size : SmallTest 644 * @tc.type : Function 645 * @tc.level : Level 0 646 */ 647HWTEST_F(DrawingNativeRectTest, testRectGetBottomNormal, TestSize.Level0) { 648 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 649 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 650 // 2. Call OH_Drawing_RectSetBottom to set the y-coordinate of the bottom-right corner of rect 651 OH_Drawing_RectSetBottom(rect, 300); 652 // 3. Call OH_Drawing_RectGetBottom to get the y-coordinate of the bottom-right corner of rect, the return value 653 // should be the same as the set value 654 float bottom = OH_Drawing_RectGetBottom(rect); 655 EXPECT_TRUE(IsScalarAlmostEqual(bottom, 300)); 656 // 4. Free memory 657 OH_Drawing_RectDestroy(rect); 658} 659 660/* 661 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_1101 662 * @tc.name: testRectGetBottomNull 663 * @tc.desc: Test for getting the bottom coordinate of a rectangle with NULL parameters. 664 * @tc.size : SmallTest 665 * @tc.type : Function 666 * @tc.level : Level 3 667 */ 668HWTEST_F(DrawingNativeRectTest, testRectGetBottomNull, TestSize.Level3) { 669 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 670 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 671 // 2. Call OH_Drawing_RectGetBottom with nullptr as the parameter, returns error code 672 // OH_DRAWING_ERROR_INVALID_PARAMETER 673 OH_Drawing_RectGetBottom(nullptr); 674 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 675 // 3. Free memory 676 OH_Drawing_RectDestroy(rect); 677} 678 679/* 680 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_1200 681 * @tc.name: testRectGetHeightNormal 682 * @tc.desc: Test for setting coordinates and getting the height of a rectangle with normal parameters. 683 * @tc.size : SmallTest 684 * @tc.type : Function 685 * @tc.level : Level 0 686 */ 687HWTEST_F(DrawingNativeRectTest, testRectGetHeightNormal, TestSize.Level0) { 688 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 689 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 690 // 2. Call OH_Drawing_RectSetLeft to set the x-coordinate of the top-left corner of rect 691 OH_Drawing_RectSetLeft(rect, 0); 692 // 3. Call OH_Drawing_RectSetTop to set the y-coordinate of the top-left corner of rect 693 OH_Drawing_RectSetTop(rect, 0); 694 // 4. Call OH_Drawing_RectSetRight to set the x-coordinate of the bottom-right corner of rect 695 OH_Drawing_RectSetRight(rect, 200); 696 // 5. Call OH_Drawing_RectSetBottom to set the y-coordinate of the bottom-right corner of rect 697 OH_Drawing_RectSetBottom(rect, 200); 698 // 6. Call OH_Drawing_RectGetHeight to get the height of the rectangle, which is the difference between the 699 // y-coordinate of the bottom-right corner and the y-coordinate of the top-left corner 700 float height = OH_Drawing_RectGetHeight(rect); 701 EXPECT_TRUE(IsScalarAlmostEqual(height, 200 - 0)); 702 // 7. Free memory 703 OH_Drawing_RectDestroy(rect); 704} 705 706/* 707 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_1201 708 * @tc.name: testRectGetHeightNull 709 * @tc.desc: Test for getting the height of a rectangle with NULL parameters. 710 * @tc.size : SmallTest 711 * @tc.type : Function 712 * @tc.level : Level 3 713 */ 714HWTEST_F(DrawingNativeRectTest, testRectGetHeightNull, TestSize.Level3) { 715 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 716 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 717 // 2. Call OH_Drawing_RectGetHeight with nullptr as the parameter, returns error code 718 // OH_DRAWING_ERROR_INVALID_PARAMETER 719 OH_Drawing_RectGetHeight(nullptr); 720 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 721 // 3. Free memory 722 OH_Drawing_RectDestroy(rect); 723} 724 725/* 726 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_1300 727 * @tc.name: testRectGetWidthNormal 728 * @tc.desc: Test for setting coordinates and getting the width of a rectangle with normal parameters. 729 * @tc.size : SmallTest 730 * @tc.type : Function 731 * @tc.level : Level 0 732 */ 733HWTEST_F(DrawingNativeRectTest, testRectGetWidthNormal, TestSize.Level0) { 734 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 735 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 736 // 2. Call OH_Drawing_RectSetLeft to set the x-coordinate of the top-left corner 737 OH_Drawing_RectSetLeft(rect, 0); 738 // 3. Call OH_Drawing_RectSetTop to set the y-coordinate of the top-left corner 739 OH_Drawing_RectSetTop(rect, 0); 740 // 4. Call OH_Drawing_RectSetRight to set the x-coordinate of the bottom-right corner 741 OH_Drawing_RectSetRight(rect, 200); 742 // 5. Call OH_Drawing_RectSetBottom to set the y-coordinate of the bottom-right corner 743 OH_Drawing_RectSetBottom(rect, 200); 744 // 6. Call OH_Drawing_RectGetWidth to get the width of the rectangle, which is the difference between the 745 // x-coordinate of the bottom-right corner and the x-coordinate of the top-left corner 746 float width = OH_Drawing_RectGetWidth(rect); 747 EXPECT_TRUE(IsScalarAlmostEqual(width, 200 - 0)); 748 // 7. Free memory 749 OH_Drawing_RectDestroy(rect); 750} 751 752/* 753 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_1301 754 * @tc.name: testRectGetWidthNull 755 * @tc.desc: Test for getting the width of a rectangle with NULL parameters. 756 * @tc.size : SmallTest 757 * @tc.type : Function 758 * @tc.level : Level 3 759 */ 760HWTEST_F(DrawingNativeRectTest, testRectGetWidthNull, TestSize.Level3) { 761 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 762 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 763 // 2. Call OH_Drawing_RectGetWidth with nullptr as the parameter, returns error code 764 // OH_DRAWING_ERROR_INVALID_PARAMETER 765 OH_Drawing_RectGetWidth(nullptr); 766 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 767 // 3. Free memory 768 OH_Drawing_RectDestroy(rect); 769} 770 771/* 772 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_1302 773 * @tc.name: testRectGetWidthBoundary 774 * @tc.desc: Test for setting coordinates and getting the width of a rectangle with normal parameters. 775 * @tc.size : SmallTest 776 * @tc.type : Function 777 * @tc.level : Level 0 778 */ 779HWTEST_F(DrawingNativeRectTest, testRectGetWidthBoundary, TestSize.Level0) { 780 // 1. Call OH_Drawing_RectCreate to create a rectangle object rect 781 uint32_t width = 4096; 782 uint32_t height = 2160; 783 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, width, height); 784 // 2. Call OH_Drawing_RectSetLeft to set the x-coordinate of the top-left corner 785 OH_Drawing_RectSetLeft(rect, 0); 786 // 3. Call OH_Drawing_RectSetTop to set the y-coordinate of the top-left corner 787 OH_Drawing_RectSetTop(rect, 0); 788 // 4. Call OH_Drawing_RectSetRight to set the x-coordinate of the bottom-right corner 789 OH_Drawing_RectSetRight(rect, width); 790 // 5. Call OH_Drawing_RectSetBottom to set the y-coordinate of the bottom-right corner 791 OH_Drawing_RectSetBottom(rect, height); 792 // 6. Call OH_Drawing_RectGetWidth to get the width of the rectangle, which is the difference between the 793 // x-coordinate of the bottom-right corner and the x-coordinate of the top-left corner 794 float getWidth = OH_Drawing_RectGetWidth(rect); 795 EXPECT_TRUE(IsScalarAlmostEqual(getWidth, width - 0)); 796 // 7. Free memory 797 OH_Drawing_RectDestroy(rect); 798} 799 800/* 801 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_1400 802 * @tc.name: testRectCopyNormal 803 * @tc.desc: Test for copying a rectangle with normal parameters and checking the copied values. 804 * @tc.size : SmallTest 805 * @tc.type : Function 806 * @tc.level : Level 0 807 */ 808HWTEST_F(DrawingNativeRectTest, testRectCopyNormal, TestSize.Level0) { 809 // 1. Call OH_Drawing_RectCreate to create a rectangle object src 810 OH_Drawing_Rect *src = OH_Drawing_RectCreate(0, 0, 200, 200); 811 // 2. Call OH_Drawing_RectCreate to create a rectangle object dst 812 OH_Drawing_Rect *dst = OH_Drawing_RectCreate(0, 0, 0, 0); 813 // 3. Call OH_Drawing_RectSetLeft to set the x-coordinate of the top-left corner of src 814 OH_Drawing_RectSetLeft(src, 100); 815 // 4. Call OH_Drawing_RectSetTop to set the y-coordinate of the top-left corner of src 816 OH_Drawing_RectSetTop(src, 100); 817 // 5. Call OH_Drawing_RectSetRight to set the x-coordinate of the bottom-right corner of src 818 OH_Drawing_RectSetRight(src, 300); 819 // 6. Call OH_Drawing_RectSetBottom to set the y-coordinate of the bottom-right corner of src 820 OH_Drawing_RectSetBottom(src, 300); 821 // 7. Call OH_Drawing_RectCopy to copy the source rectangle object src to the destination rectangle object dst 822 OH_Drawing_RectCopy(src, dst); 823 // 8. Call OH_Drawing_RectGetLeft to get the x-coordinate of the top-left corner of dst, which should be the same as 824 // the value set in src 825 float left = OH_Drawing_RectGetLeft(dst); 826 EXPECT_TRUE(IsScalarAlmostEqual(left, 100)); 827 // 9. Call OH_Drawing_RectGetTop to get the y-coordinate of the top-left corner of dst, which should be the same as 828 // the value set in src 829 float top = OH_Drawing_RectGetTop(dst); 830 EXPECT_TRUE(IsScalarAlmostEqual(top, 100)); 831 // 10. Call OH_Drawing_RectGetRight to get the x-coordinate of the bottom-right corner of dst, which should be the 832 // same as the value set in src 833 float right = OH_Drawing_RectGetRight(dst); 834 EXPECT_TRUE(IsScalarAlmostEqual(right, 300)); 835 // 11. Call OH_Drawing_RectGetBottom to get the y-coordinate of the bottom-right corner of dst, which should be the 836 // same as the value set in src 837 float bottom = OH_Drawing_RectGetBottom(dst); 838 EXPECT_TRUE(IsScalarAlmostEqual(bottom, 300)); 839 // 12. Call OH_Drawing_RectSetLeft to modify the x-coordinate of the top-left corner of src 840 OH_Drawing_RectSetLeft(src, 200); 841 // 13. Call OH_Drawing_RectSetTop to modify the y-coordinate of the top-left corner of src 842 OH_Drawing_RectSetTop(src, 200); 843 // 14. Call OH_Drawing_RectGetLeft to get the x-coordinate of the top-left corner of dst, which should be the same 844 // as the previous value (indicating that the modification in src does not affect the result in dst) 845 left = OH_Drawing_RectGetLeft(dst); 846 EXPECT_TRUE(IsScalarAlmostEqual(left, 100)); 847 // 15. Call OH_Drawing_RectGetTop to get the y-coordinate of the top-left corner of dst, which should be the same as 848 // the previous value (indicating that the modification in src does not affect the result in dst) 849 top = OH_Drawing_RectGetTop(dst); 850 EXPECT_TRUE(IsScalarAlmostEqual(top, 100)); 851 // 16. Free memory 852 OH_Drawing_RectDestroy(src); 853 OH_Drawing_RectDestroy(dst); 854} 855 856/* 857 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_1401 858 * @tc.name: testRectCopyNull 859 * @tc.desc: Test for copying a rectangle with NULL parameters. 860 * @tc.size : SmallTest 861 * @tc.type : Function 862 * @tc.level : Level 3 863 */ 864HWTEST_F(DrawingNativeRectTest, testRectCopyNull, TestSize.Level3) { 865 // 1. Call OH_Drawing_RectCreate to create a rectangle object src 866 OH_Drawing_Rect *src = OH_Drawing_RectCreate(0, 0, 200, 200); 867 // 2. Call OH_Drawing_RectCreate to create a rectangle object dst 868 OH_Drawing_Rect *dst = OH_Drawing_RectCreate(0, 0, 0, 0); 869 // 3. Call OH_Drawing_RectCopy with nullptr as the first parameter, returns error code 870 // OH_DRAWING_ERROR_INVALID_PARAMETER 871 OH_Drawing_RectCopy(nullptr, dst); 872 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 873 // 4. Call OH_Drawing_RectCopy with nullptr as the second parameter, returns error code 874 // OH_DRAWING_ERROR_INVALID_PARAMETER 875 OH_Drawing_RectCopy(src, nullptr); 876 EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER); 877 // 5. Free memory 878 OH_Drawing_RectDestroy(src); 879 OH_Drawing_RectDestroy(dst); 880} 881 882/* 883 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_1500 884 * @tc.name: testRectDestroyNormal 885 * @tc.desc: Test for creating and destroying a rectangle object with normal parameters. 886 * @tc.size : SmallTest 887 * @tc.type : Function 888 * @tc.level : Level 0 889 */ 890HWTEST_F(DrawingNativeRectTest, testRectDestroyNormal, TestSize.Level0) { 891 // 1. Call OH_Drawing_RectCreate to create a rectangle object 892 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 893 // 2. Call OH_Drawing_RectDestroy to destroy the rectangle object 894 OH_Drawing_RectDestroy(rect); 895} 896 897/* 898 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_RECT_1501 899 * @tc.name: testRectDestroyNull 900 * @tc.desc: Test for destroying a rectangle object with NULL parameters. 901 * @tc.size : SmallTest 902 * @tc.type : Function 903 * @tc.level : Level 3 904 */ 905HWTEST_F(DrawingNativeRectTest, testRectDestroyNull, TestSize.Level3) { 906 // 1. Call OH_Drawing_RectCreate to create a rectangle object 907 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 908 // 2. Call OH_Drawing_RectDestroy with nullptr as the parameter, returns error code 909 // OH_DRAWING_ERROR_INVALID_PARAMETER 910 OH_Drawing_RectDestroy(nullptr); 911 // 3. Call OH_Drawing_RectDestroy to destroy the rectangle object 912 OH_Drawing_RectDestroy(rect); 913} 914 915} // namespace Drawing 916} // namespace Rosen 917} // namespace OHOS