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 "gtest/gtest.h" 17 18#include "DrawingNativeCanvasCommon.h" 19#include "drawing_bitmap.h" 20#include "drawing_brush.h" 21#include "drawing_canvas.h" 22#include "drawing_color.h" 23#include "drawing_color_filter.h" 24#include "drawing_filter.h" 25#include "drawing_font.h" 26#include "drawing_image.h" 27#include "drawing_mask_filter.h" 28#include "drawing_matrix.h" 29#include "drawing_memory_stream.h" 30#include "drawing_path.h" 31#include "drawing_pen.h" 32#include "drawing_point.h" 33#include "drawing_rect.h" 34#include "drawing_region.h" 35#include "drawing_round_rect.h" 36#include "drawing_sampling_options.h" 37#include "drawing_shader_effect.h" 38#include "drawing_text_blob.h" 39#include "drawing_typeface.h" 40 41using namespace testing; 42using namespace testing::ext; 43 44namespace OHOS { 45namespace Rosen { 46namespace Drawing { 47 48/* 49 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_1900 50 * @tc.name: testCanvasDrawOvalNormal 51 * @tc.desc: test for testCanvasDrawOvalNormal. 52 * @tc.size : SmallTest 53 * @tc.type : Function 54 * @tc.level : Level 0 55 */ 56HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawOvalNormal, TestSize.Level0) { 57 // 1. Create OH_Drawing_Canvas 58 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 59 60 // 2. Create OH_Drawing_Rect 61 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 100, 100); 62 63 // 3. Draw oval on canvas 64 OH_Drawing_CanvasDrawOval(canvas, rect); 65 66 // 4. Free memory 67 OH_Drawing_CanvasDestroy(canvas); 68 OH_Drawing_RectDestroy(rect); 69} 70 71/* 72 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_1901 73 * @tc.name: testCanvasDrawOvalNull 74 * @tc.desc: test for testCanvasDrawOvalNull. 75 * @tc.size : SmallTest 76 * @tc.type : Function 77 * @tc.level : Level 3 78 */ 79HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawOvalNull, TestSize.Level3) { 80 // 1. Create OH_Drawing_Canvas 81 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 82 // 2. Create OH_Drawing_Rect 83 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 200, 200); 84 // 3. OH_Drawing_CanvasDrawOval with nullptr as the first parameter 85 OH_Drawing_CanvasDrawOval(nullptr, rect); 86 // 4. OH_Drawing_CanvasDrawOval with OH_Drawing_Rect created with 0 for left, top, right, and bottom 87 OH_Drawing_Rect *rect2 = OH_Drawing_RectCreate(0, 200, 200, 200); 88 OH_Drawing_CanvasDrawOval(canvas, rect2); 89 rect2 = OH_Drawing_RectCreate(200, 0, 200, 200); 90 OH_Drawing_CanvasDrawOval(canvas, rect2); 91 rect2 = OH_Drawing_RectCreate(200, 200, 0, 200); 92 OH_Drawing_CanvasDrawOval(canvas, rect2); 93 rect2 = OH_Drawing_RectCreate(200, 200, 200, 0); 94 OH_Drawing_CanvasDrawOval(canvas, rect2); 95 // 5. OH_Drawing_CanvasDrawOval with OH_Drawing_Rect created with all 0 values 96 OH_Drawing_Rect *rect3 = OH_Drawing_RectCreate(0, 0, 0, 0); 97 OH_Drawing_CanvasDrawOval(canvas, rect3); 98 // 6. OH_Drawing_CanvasDrawOval with nullptr as the second parameter 99 OH_Drawing_CanvasDrawOval(canvas, nullptr); 100 // 7. Free memory 101 OH_Drawing_CanvasDestroy(canvas); 102 OH_Drawing_RectDestroy(rect); 103 OH_Drawing_RectDestroy(rect2); 104 OH_Drawing_RectDestroy(rect3); 105} 106 107/* 108 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_1902 109 * @tc.name: testCanvasDrawOvalAbnormal 110 * @tc.desc: test for testCanvasDrawOvalAbnormal. 111 * @tc.size : SmallTest 112 * @tc.type : Function 113 * @tc.level : Level 3 114 */ 115HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawOvalAbnormal, TestSize.Level3) { 116 // 1. OH_Drawing_CanvasCreate 117 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 118 // 2. Create OH_Drawing_Rect with left, top, right, and bottom values as negative numbers 119 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(-100, 100, 200, 200); 120 OH_Drawing_CanvasDrawOval(canvas, rect); 121 rect = OH_Drawing_RectCreate(100, -100, 200, 200); 122 OH_Drawing_CanvasDrawOval(canvas, rect); 123 rect = OH_Drawing_RectCreate(100, 100, -200, 200); 124 OH_Drawing_CanvasDrawOval(canvas, rect); 125 rect = OH_Drawing_RectCreate(100, 100, 200, -200); 126 OH_Drawing_CanvasDrawOval(canvas, rect); 127 // 3. Create OH_Drawing_Rect with the horizontal coordinate of the top-left corner equal to the horizontal 128 // coordinate of the bottom-right corner, or the vertical coordinate of the top-left corner equal to the vertical 129 // coordinate of the bottom-right corner 130 OH_Drawing_Rect *rect2 = OH_Drawing_RectCreate(100, 0, 100, 100); 131 OH_Drawing_CanvasDrawOval(canvas, rect2); 132 OH_Drawing_Rect *rect3 = OH_Drawing_RectCreate(0, 100, 100, 100); 133 OH_Drawing_CanvasDrawOval(canvas, rect3); 134 // 4. Create OH_Drawing_Rect with the top-left corner coordinates equal to the bottom-right corner coordinates 135 OH_Drawing_Rect *rect4 = OH_Drawing_RectCreate(100, 100, 100, 100); 136 OH_Drawing_CanvasDrawOval(canvas, rect4); 137 // 5. Create OH_Drawing_Rect with the top-left corner coordinates greater than the bottom-right corner coordinates 138 OH_Drawing_Rect *rect5 = OH_Drawing_RectCreate(200, 200, 100, 100); 139 OH_Drawing_CanvasDrawOval(canvas, rect5); 140 // 6. Free memory 141 OH_Drawing_CanvasDestroy(canvas); 142 OH_Drawing_RectDestroy(rect); 143 OH_Drawing_RectDestroy(rect2); 144 OH_Drawing_RectDestroy(rect3); 145 OH_Drawing_RectDestroy(rect4); 146 OH_Drawing_RectDestroy(rect5); 147} 148 149/* 150 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_1903 151 * @tc.name: testCanvasDrawOvalMaximum 152 * @tc.desc: test for testCanvasDrawOvalMaximum. 153 * @tc.size : SmallTest 154 * @tc.type : Function 155 * @tc.level : Level 3 156 */ 157HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawOvalMaximum, TestSize.Level3) { 158 // 1. OH_Drawing_CanvasCreate 159 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 160 // 2. Create OH_Drawing_Rect with FLT_MAX as the values for left, top, right, and bottom 161 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(FLT_MAX, 0, 0, 0); 162 OH_Drawing_CanvasDrawOval(canvas, rect); 163 rect = OH_Drawing_RectCreate(0, FLT_MAX, 0, 0); 164 OH_Drawing_CanvasDrawOval(canvas, rect); 165 rect = OH_Drawing_RectCreate(0, 0, FLT_MAX, 0); 166 OH_Drawing_CanvasDrawOval(canvas, rect); 167 rect = OH_Drawing_RectCreate(0, 0, 0, FLT_MAX); 168 OH_Drawing_CanvasDrawOval(canvas, rect); 169 // 3. Free memory 170 OH_Drawing_CanvasDestroy(canvas); 171 OH_Drawing_RectDestroy(rect); 172} 173 174/* 175 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_1904 176 * @tc.name: testCanvasDrawOvalInputDestroyed 177 * @tc.desc: test for testCanvasDrawOvalInputDestroyed. 178 * @tc.size : SmallTest 179 * @tc.type : Function 180 * @tc.level : Level 3 181 */ 182HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawOvalInputDestroyed, TestSize.Level3) { 183 // Deprecated 184} 185 186/* 187 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2000 188 * @tc.name: testCanvasDrawArcNormal 189 * @tc.desc: test for testCanvasDrawArcNormal. 190 * @tc.size : SmallTest 191 * @tc.type : Function 192 * @tc.level : Level 0 193 */ 194HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawArcNormal, TestSize.Level0) { 195 // 1. OH_Drawing_CanvasCreate 196 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 197 // 2. OH_Drawing_RectCreate 198 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 100, 100); 199 // 3. OH_Drawing_CanvasDrawArc with startAngle iterating over 0°, 180°, and 360° 200 float startAngles[] = {0.0f, 180.0f, 360.0f}; 201 for (float startAngle : startAngles) { 202 OH_Drawing_CanvasDrawArc(canvas, rect, startAngle, 90.0f); 203 } 204 // 4. OH_Drawing_CanvasDrawArc with sweepAngle iterating over 0°, 180°, and 360° 205 float sweepAngles[] = {0.0f, 180.0f, 360.0f}; 206 for (float sweepAngle : sweepAngles) { 207 OH_Drawing_CanvasDrawArc(canvas, rect, 0.0f, sweepAngle); 208 } 209 // 5. Free memory 210 OH_Drawing_CanvasDestroy(canvas); 211 OH_Drawing_RectDestroy(rect); 212} 213 214/* 215 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2001 216 * @tc.name: testCanvasDrawArcNull 217 * @tc.desc: test for testCanvasDrawArcNull. 218 * @tc.size : SmallTest 219 * @tc.type : Function 220 * @tc.level : Level 3 221 */ 222HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawArcNull, TestSize.Level3) { 223 // 1. OH_Drawing_CanvasCreate 224 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 225 // 2. OH_Drawing_RectCreate 226 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 100, 100); 227 // 3. OH_Drawing_CanvasDrawArc with nullptr as the first parameter 228 OH_Drawing_CanvasDrawArc(nullptr, rect, 0.0f, 90.0f); 229 // 4. OH_Drawing_CanvasDrawArc with OH_Drawing_Rect created with 0 for left, top, right, and bottom 230 OH_Drawing_Rect *rect2 = OH_Drawing_RectCreate(0, 100, 200, 200); 231 OH_Drawing_CanvasDrawArc(canvas, rect2, 0.0f, 90.0f); 232 rect2 = OH_Drawing_RectCreate(100, 0, 200, 200); 233 OH_Drawing_CanvasDrawArc(canvas, rect2, 0.0f, 90.0f); 234 rect2 = OH_Drawing_RectCreate(100, 100, 0, 200); 235 OH_Drawing_CanvasDrawArc(canvas, rect2, 0.0f, 90.0f); 236 rect2 = OH_Drawing_RectCreate(100, 100, 200, 0); 237 OH_Drawing_CanvasDrawArc(canvas, rect2, 0.0f, 90.0f); 238 // 5. OH_Drawing_CanvasDrawArc with OH_Drawing_Rect created with all 0 values 239 OH_Drawing_Rect *rect3 = OH_Drawing_RectCreate(0, 0, 0, 0); 240 OH_Drawing_CanvasDrawArc(canvas, rect3, 0.0f, 90.0f); 241 // 6. OH_Drawing_CanvasDrawArc with nullptr as the second parameter 242 OH_Drawing_CanvasDrawArc(canvas, nullptr, 0.0f, 90.0f); 243 // 7. Free memory 244 OH_Drawing_CanvasDestroy(canvas); 245 OH_Drawing_RectDestroy(rect); 246 OH_Drawing_RectDestroy(rect2); 247 OH_Drawing_RectDestroy(rect3); 248} 249 250/* 251 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2002 252 * @tc.name: testCanvasDrawArcAbnormal 253 * @tc.desc: test for testCanvasDrawArcAbnormal. 254 * @tc.size : SmallTest 255 * @tc.type : Function 256 * @tc.level : Level 3 257 */ 258HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawArcAbnormal, TestSize.Level3) { 259 // 1. OH_Drawing_CanvasCreate 260 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 261 // 2. OH_Drawing_CanvasDrawArc with OH_Drawing_Rect created with negative values for left, top, right, and bottom 262 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(-100, -100, -200, -200); 263 OH_Drawing_CanvasDrawArc(canvas, rect, 0.0f, 90.0f); 264 rect = OH_Drawing_RectCreate(-100, 100, 200, 200); 265 OH_Drawing_CanvasDrawArc(canvas, rect, 0.0f, 90.0f); 266 rect = OH_Drawing_RectCreate(100, -100, 200, 200); 267 OH_Drawing_CanvasDrawArc(canvas, rect, 0.0f, 90.0f); 268 rect = OH_Drawing_RectCreate(100, 100, -200, 200); 269 OH_Drawing_CanvasDrawArc(canvas, rect, 0.0f, 90.0f); 270 rect = OH_Drawing_RectCreate(100, 100, 200, -200); 271 OH_Drawing_CanvasDrawArc(canvas, rect, 0.0f, 90.0f); 272 // 3. OH_Drawing_CanvasDrawArc with OH_Drawing_Rect created with the horizontal coordinate of the top-left corner 273 // equal to the horizontal coordinate of the bottom-right corner, or the vertical coordinate of the top-left corner 274 // equal to the vertical coordinate of the bottom-right corner 275 OH_Drawing_Rect *rect2 = OH_Drawing_RectCreate(100, 0, 100, 100); 276 OH_Drawing_CanvasDrawArc(canvas, rect2, 0.0f, 90.0f); 277 OH_Drawing_Rect *rect3 = OH_Drawing_RectCreate(0, 100, 100, 100); 278 OH_Drawing_CanvasDrawArc(canvas, rect3, 0.0f, 90.0f); 279 // 4. OH_Drawing_CanvasDrawArc with OH_Drawing_Rect created with the top-left corner coordinates equal to the 280 // bottom-right corner coordinates 281 OH_Drawing_Rect *rect4 = OH_Drawing_RectCreate(100, 100, 100, 100); 282 OH_Drawing_CanvasDrawArc(canvas, rect4, 0.0f, 90.0f); 283 // 5. OH_Drawing_CanvasDrawArc with OH_Drawing_Rect created with the top-left corner coordinates greater than the 284 // bottom-right corner coordinates 285 OH_Drawing_Rect *rect5 = OH_Drawing_RectCreate(200, 200, 100, 100); 286 OH_Drawing_CanvasDrawArc(canvas, rect5, 0.0f, 90.0f); 287 // 6. OH_Drawing_CanvasDrawArc with negative startAngle 288 OH_Drawing_CanvasDrawArc(canvas, rect, -90.0f, 90.0f); 289 // 7. OH_Drawing_CanvasDrawArc with startAngle greater than 360° 290 OH_Drawing_CanvasDrawArc(canvas, rect, 400.0f, 90.0f); 291 // 8. OH_Drawing_CanvasDrawArc with negative sweepAngle 292 OH_Drawing_CanvasDrawArc(canvas, rect, 0.0f, -90.0f); 293 // 9. OH_Drawing_CanvasDrawArc with sweepAngle greater than 360° 294 OH_Drawing_CanvasDrawArc(canvas, rect, 0.0f, 400.0f); 295 // 10. Free memory 296 OH_Drawing_CanvasDestroy(canvas); 297 OH_Drawing_RectDestroy(rect); 298 OH_Drawing_RectDestroy(rect2); 299 OH_Drawing_RectDestroy(rect3); 300 OH_Drawing_RectDestroy(rect4); 301 OH_Drawing_RectDestroy(rect5); 302} 303 304/* 305 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2003 306 * @tc.name: testCanvasDrawArcMaximum 307 * @tc.desc: test for testCanvasDrawArcMaximum. 308 * @tc.size : SmallTest 309 * @tc.type : Function 310 * @tc.level : Level 3 311 */ 312HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawArcMaximum, TestSize.Level3) { 313 // 1. OH_Drawing_CanvasCreate 314 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 315 // 2. OH_Drawing_CanvasDrawArc with OH_Drawing_Rect created with FLT_MAX as the values for left, top, right, and 316 // bottom 317 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(FLT_MAX, 0, 0, 0); 318 OH_Drawing_CanvasDrawArc(canvas, rect, 0.0f, 90.0f); 319 OH_Drawing_RectDestroy(rect); 320 rect = OH_Drawing_RectCreate(0, FLT_MAX, 0, 0); 321 OH_Drawing_CanvasDrawArc(canvas, rect, 0.0f, 90.0f); 322 OH_Drawing_RectDestroy(rect); 323 rect = OH_Drawing_RectCreate(0, 0, FLT_MAX, 0); 324 OH_Drawing_CanvasDrawArc(canvas, rect, 0.0f, 90.0f); 325 OH_Drawing_RectDestroy(rect); 326 rect = OH_Drawing_RectCreate(0, 0, 0, FLT_MAX); 327 OH_Drawing_CanvasDrawArc(canvas, rect, 0.0f, 90.0f); 328 OH_Drawing_RectDestroy(rect); 329 // 3. OH_Drawing_CanvasDrawArc with startAngle FLT_MAX 330 rect = OH_Drawing_RectCreate(0, 0, 100, 100); 331 OH_Drawing_CanvasDrawArc(canvas, rect, FLT_MAX, 90.0f); 332 OH_Drawing_RectDestroy(rect); 333 // 4. OH_Drawing_CanvasDrawArc with sweepAngle FLT_MAX 334 rect = OH_Drawing_RectCreate(0, 0, 100, 100); 335 OH_Drawing_CanvasDrawArc(canvas, rect, 0.0f, FLT_MAX); 336 OH_Drawing_RectDestroy(rect); 337 // 5. Free memory 338 OH_Drawing_CanvasDestroy(canvas); 339} 340 341/* 342 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2004 343 * @tc.name: testCanvasDrawArcInputDestroyed 344 * @tc.desc: test for testCanvasDrawArcInputDestroyed. 345 * @tc.size : SmallTest 346 * @tc.type : Function 347 * @tc.level : Level 3 348 */ 349HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawArcInputDestroyed, TestSize.Level3) { 350 // Deprecated 351} 352 353/* 354 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2100 355 * @tc.name: testCanvasDrawRoundRectNormal 356 * @tc.desc: test for testCanvasDrawRoundRectNormal. 357 * @tc.size : SmallTest 358 * @tc.type : Function 359 * @tc.level : Level 0 360 */ 361HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawRoundRectNormal, TestSize.Level0) { 362 // 1. OH_Drawing_CanvasCreate 363 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 364 365 // 2. OH_Drawing_RoundRectCreate 366 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 100, 200, 300); 367 OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, 1.0f, 1.0f); 368 369 // 3. OH_Drawing_CanvasDrawRoundRect 370 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 371 372 // 4. Free memory 373 OH_Drawing_CanvasDestroy(canvas); 374 OH_Drawing_RectDestroy(rect); 375 OH_Drawing_RoundRectDestroy(roundRect); 376} 377 378/* 379 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2101 380 * @tc.name: testCanvasDrawRoundRectNull 381 * @tc.desc: test for testCanvasDrawRoundRectNull. 382 * @tc.size : SmallTest 383 * @tc.type : Function 384 * @tc.level : Level 3 385 */ 386HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawRoundRectNull, TestSize.Level3) { 387 // 1. OH_Drawing_CanvasCreate 388 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 389 390 // 2. OH_Drawing_RoundRectCreate 391 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 100, 200, 300); 392 OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, 1.0f, 1.0f); 393 394 // 3. OH_Drawing_CanvasDrawRoundRect with the first parameter being nullptr 395 OH_Drawing_CanvasDrawRoundRect(nullptr, roundRect); 396 397 // 4. OH_Drawing_CanvasDrawRoundRect with the second parameter being nullptr 398 OH_Drawing_CanvasDrawRoundRect(canvas, nullptr); 399 400 // 5. OH_Drawing_CanvasDrawRoundRect with the second parameter OH_Drawing_RoundRectCreate created with rect having 0 401 // in any of the four positions 402 OH_Drawing_Rect *rect2 = OH_Drawing_RectCreate(0, 100, 200, 300); 403 OH_Drawing_RoundRect *roundRect2 = OH_Drawing_RoundRectCreate(rect2, 1.0f, 1.0f); 404 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect2); 405 406 OH_Drawing_Rect *rect3 = OH_Drawing_RectCreate(10, 0, 200, 300); 407 OH_Drawing_RoundRect *roundRect3 = OH_Drawing_RoundRectCreate(rect3, 1.0f, 1.0f); 408 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect3); 409 410 OH_Drawing_Rect *rect4 = OH_Drawing_RectCreate(10, 100, 0, 300); 411 OH_Drawing_RoundRect *roundRect4 = OH_Drawing_RoundRectCreate(rect4, 1.0f, 1.0f); 412 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect4); 413 414 OH_Drawing_Rect *rect5 = OH_Drawing_RectCreate(10, 100, 200, 0); 415 OH_Drawing_RoundRect *roundRect5 = OH_Drawing_RoundRectCreate(rect5, 1.0f, 1.0f); 416 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect5); 417 418 // 6. OH_Drawing_CanvasDrawRoundRect with the second parameter OH_Drawing_RoundRectCreate created with rect having 419 // all positions as 0 420 OH_Drawing_Rect *rect6 = OH_Drawing_RectCreate(0, 0, 0, 0); 421 OH_Drawing_RoundRect *roundRect6 = OH_Drawing_RoundRectCreate(rect6, 1.0f, 1.0f); 422 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect6); 423 424 // 7. OH_Drawing_CanvasDrawRoundRect with the second parameter OH_Drawing_RoundRectCreate created with xRad as 0 425 OH_Drawing_Rect *rect7 = OH_Drawing_RectCreate(10, 100, 200, 300); 426 OH_Drawing_RoundRect *roundRect7 = OH_Drawing_RoundRectCreate(rect7, 0.0f, 1.0f); 427 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect7); 428 429 // 8. OH_Drawing_CanvasDrawRoundRect with the second parameter OH_Drawing_RoundRectCreate created with yRad as 0 430 OH_Drawing_Rect *rect8 = OH_Drawing_RectCreate(10, 100, 200, 300); 431 OH_Drawing_RoundRect *roundRect8 = OH_Drawing_RoundRectCreate(rect8, 1.0f, 0.0f); 432 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect8); 433 434 // 9. Free memory 435 OH_Drawing_CanvasDestroy(canvas); 436 OH_Drawing_RectDestroy(rect); 437 OH_Drawing_RoundRectDestroy(roundRect); 438 OH_Drawing_RectDestroy(rect2); 439 OH_Drawing_RoundRectDestroy(roundRect2); 440 OH_Drawing_RectDestroy(rect3); 441 OH_Drawing_RoundRectDestroy(roundRect3); 442 OH_Drawing_RectDestroy(rect4); 443 OH_Drawing_RoundRectDestroy(roundRect4); 444 OH_Drawing_RectDestroy(rect5); 445 OH_Drawing_RoundRectDestroy(roundRect5); 446 OH_Drawing_RectDestroy(rect6); 447 OH_Drawing_RoundRectDestroy(roundRect6); 448 OH_Drawing_RectDestroy(rect7); 449 OH_Drawing_RoundRectDestroy(roundRect7); 450 OH_Drawing_RectDestroy(rect8); 451 OH_Drawing_RoundRectDestroy(roundRect8); 452} 453 454/* 455 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2102 456 * @tc.name: testCanvasDrawRoundRectAbnormal 457 * @tc.desc: test for testCanvasDrawRoundRectAbnormal. 458 * @tc.size : SmallTest 459 * @tc.type : Function 460 * @tc.level : Level 3 461 */ 462HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawRoundRectAbnormal, TestSize.Level3) { 463 // 1. OH_Drawing_CanvasCreate 464 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 465 466 // 2. OH_Drawing_CanvasDrawRoundRect with OH_Drawing_RoundRectCreate creating rect with left, top, right, bottom 467 // being set to negative numbers 468 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(-10, 100, 200, 300); 469 OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, 0.0f, 1.0f); 470 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 471 472 rect = OH_Drawing_RectCreate(10, -100, 200, 300); 473 roundRect = OH_Drawing_RoundRectCreate(rect, 0.0f, 1.0f); 474 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 475 476 rect = OH_Drawing_RectCreate(10, 100, -200, 300); 477 roundRect = OH_Drawing_RoundRectCreate(rect, 0.0f, 1.0f); 478 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 479 480 rect = OH_Drawing_RectCreate(10, 100, 200, -300); 481 roundRect = OH_Drawing_RoundRectCreate(rect, 0.0f, 1.0f); 482 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 483 484 // 3. OH_Drawing_CanvasDrawRoundRect with OH_Drawing_CanvasDrawRoundRect creating rect with the horizontal 485 // coordinate of the top-left corner equal to the horizontal coordinate of the bottom-right corner, or the vertical 486 // coordinate of the top-left corner equal to the vertical coordinate of the bottom-right corner 487 rect = OH_Drawing_RectCreate(100, 0, 100, 100); 488 roundRect = OH_Drawing_RoundRectCreate(rect, 0.0f, 1.0f); 489 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 490 491 rect = OH_Drawing_RectCreate(0, 100, 100, 100); 492 roundRect = OH_Drawing_RoundRectCreate(rect, 0.0f, 1.0f); 493 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 494 495 // 4. OH_Drawing_CanvasDrawRoundRect with OH_Drawing_RoundRectCreate creating rect with the top-left corner 496 // coordinates equal to the bottom-right corner coordinates 497 rect = OH_Drawing_RectCreate(100, 100, 100, 100); 498 roundRect = OH_Drawing_RoundRectCreate(rect, 0.0f, 1.0f); 499 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 500 501 // 5. OH_Drawing_CanvasDrawRoundRect with OH_Drawing_RoundRectCreate creating rect with the top-left corner 502 // coordinates greater than the bottom-right corner coordinates 503 rect = OH_Drawing_RectCreate(200, 200, 100, 100); 504 roundRect = OH_Drawing_RoundRectCreate(rect, 0.0f, 1.0f); 505 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 506 507 // 6. OH_Drawing_CanvasDrawRoundRect with the second parameter OH_Drawing_RoundRectCreate creating roundRect with a 508 // negative xRad 509 rect = OH_Drawing_RectCreate(10, 100, 200, 300); 510 roundRect = OH_Drawing_RoundRectCreate(rect, -1.0f, 1.0f); 511 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 512 513 // 7. OH_Drawing_CanvasDrawRoundRect with the second parameter OH_Drawing_RoundRectCreate creating roundRect with a 514 // negative yRad 515 rect = OH_Drawing_RectCreate(10, 100, 200, 300); 516 roundRect = OH_Drawing_RoundRectCreate(rect, 0.0f, -1.0f); 517 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 518 519 // 8. Free memory 520 OH_Drawing_CanvasDestroy(canvas); 521 OH_Drawing_RectDestroy(rect); 522 OH_Drawing_RoundRectDestroy(roundRect); 523} 524 525/* 526 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2103 527 * @tc.name: testCanvasDrawRoundRectMaximum 528 * @tc.desc: test for testCanvasDrawRoundRectMaximum. 529 * @tc.size : SmallTest 530 * @tc.type : Function 531 * @tc.level : Level 3 532 */ 533HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawRoundRectMaximum, TestSize.Level3) { 534 // 1. OH_Drawing_CanvasCreate 535 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 536 // 2. OH_Drawing_CanvasDrawRoundRect with OH_Drawing_RoundRectCreate creating rect with left, top, right, bottom 537 // being set to FLT_MAX 538 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(FLT_MAX, 100, 200, 300); 539 OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, 1.0f, 1.0f); 540 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 541 542 rect = OH_Drawing_RectCreate(10, FLT_MAX, 200, 300); 543 roundRect = OH_Drawing_RoundRectCreate(rect, 1.0f, 1.0f); 544 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 545 546 rect = OH_Drawing_RectCreate(10, 100, FLT_MAX, 300); 547 roundRect = OH_Drawing_RoundRectCreate(rect, 1.0f, 1.0f); 548 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 549 550 rect = OH_Drawing_RectCreate(10, 100, 200, FLT_MAX); 551 roundRect = OH_Drawing_RoundRectCreate(rect, 1.0f, 1.0f); 552 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 553 554 // 3. OH_Drawing_CanvasDrawRoundRect with the second parameter OH_Drawing_RoundRectCreate created with xRad being 555 // set to FLT_MAX 556 rect = OH_Drawing_RectCreate(10, 100, 200, 300); 557 roundRect = OH_Drawing_RoundRectCreate(rect, FLT_MAX, 1.0f); 558 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 559 560 // 4. OH_Drawing_CanvasDrawRoundRect with the second parameter OH_Drawing_RoundRectCreate created with yRad being 561 // set to FLT_MAX 562 rect = OH_Drawing_RectCreate(10, 100, 200, 300); 563 roundRect = OH_Drawing_RoundRectCreate(rect, 1.0f, FLT_MAX); 564 OH_Drawing_CanvasDrawRoundRect(canvas, roundRect); 565 566 // 5. Free memory 567 OH_Drawing_CanvasDestroy(canvas); 568 OH_Drawing_RectDestroy(rect); 569 OH_Drawing_RoundRectDestroy(roundRect); 570} 571 572/* 573 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2104 574 * @tc.name: testCanvasDrawRoundRectInputDestroyed 575 * @tc.desc: test for testCanvasDrawRoundRectInputDestroyed. 576 * @tc.size : SmallTest 577 * @tc.type : Function 578 * @tc.level : Level 3 579 */ 580HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawRoundRectInputDestroyed, TestSize.Level3) { 581 // Deprecated 582} 583 584/* 585 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2200 586 * @tc.name: testCanvasDrawTextBlobNormal 587 * @tc.desc: test for testCanvasDrawTextBlobNormal. 588 * @tc.size : SmallTest 589 * @tc.type : Function 590 * @tc.level : Level 0 591 */ 592HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawTextBlobNormal, TestSize.Level0) { 593 // 1. OH_Drawing_CanvasCreate 594 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 595 596 // 2. OH_Drawing_TextBlobCreateFromText 597 const char *str = "123456"; 598 599 OH_Drawing_Font *font = OH_Drawing_FontCreate(); 600 OH_Drawing_TextBlob *textBlob = 601 OH_Drawing_TextBlobCreateFromText(str, strlen(str), font, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8); 602 // 3. OH_Drawing_CanvasDrawTextBlob 603 OH_Drawing_CanvasDrawTextBlob(canvas, textBlob, 10, 10); 604 // 4. Free memory 605 OH_Drawing_TextBlobDestroy(textBlob); 606 607 OH_Drawing_CanvasDestroy(canvas); 608} 609 610/* 611 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2201 612 * @tc.name: testCanvasDrawTextBlobNull 613 * @tc.desc: test for testCanvasDrawTextBlobNull. 614 * @tc.size : SmallTest 615 * @tc.type : Function 616 * @tc.level : Level 3 617 */ 618HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawTextBlobNull, TestSize.Level3) { 619 // 1. OH_Drawing_CanvasCreate 620 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 621 // 2. OH_Drawing_TextBlobCreateFromString 622 const char *str = "123456"; 623 624 OH_Drawing_Font *font = OH_Drawing_FontCreate(); 625 OH_Drawing_TextBlob *textBlob = 626 OH_Drawing_TextBlobCreateFromText(str, strlen(str), font, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8); 627 // 3. OH_Drawing_CanvasDrawTextBlob with the first parameter being nullptr 628 OH_Drawing_CanvasDrawTextBlob(nullptr, textBlob, 10, 10); 629 // 4. OH_Drawing_CanvasDrawTextBlob with the second parameter being nullptr 630 OH_Drawing_CanvasDrawTextBlob(canvas, nullptr, 10, 10); 631 // 5. OH_Drawing_CanvasDrawTextBlob with the third parameter being 0 632 OH_Drawing_CanvasDrawTextBlob(canvas, textBlob, 0, 10); 633 // 6. OH_Drawing_CanvasDrawTextBlob with the fourth parameter being 0 634 OH_Drawing_CanvasDrawTextBlob(canvas, textBlob, 10, 0); 635 // 7. Free memory 636 OH_Drawing_TextBlobDestroy(textBlob); 637 638 OH_Drawing_CanvasDestroy(canvas); 639} 640 641/* 642 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2202 643 * @tc.name: testCanvasDrawTextBlobAbnormal 644 * @tc.desc: test for testCanvasDrawTextBlobAbnormal. 645 * @tc.size : SmallTest 646 * @tc.type : Function 647 * @tc.level : Level 3 648 */ 649HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawTextBlobAbnormal, TestSize.Level3) { 650 // 1. OH_Drawing_CanvasCreate 651 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 652 // 2. Create OH_Drawing_TextBlob from text 653 const char *str = "123456"; 654 OH_Drawing_Font *font = OH_Drawing_FontCreate(); 655 OH_Drawing_TextBlob *textBlob = 656 OH_Drawing_TextBlobCreateFromText(str, strlen(str), font, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8); 657 // 3. Draw OH_Drawing_TextBlob on canvas with x-coordinate of the bottom left corner of the text object set to a 658 // negative value 659 OH_Drawing_CanvasDrawTextBlob(canvas, textBlob, -10, 10); 660 // 4. Draw OH_Drawing_TextBlob on canvas with y-coordinate of the bottom left corner of the text object set to a 661 // negative value 662 OH_Drawing_CanvasDrawTextBlob(canvas, textBlob, 10, -10); 663 // 5. Release memory 664 OH_Drawing_TextBlobDestroy(textBlob); 665 OH_Drawing_CanvasDestroy(canvas); 666} 667 668/* 669 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2203 670 * @tc.name: testCanvasDrawTextBlobMaximum 671 * @tc.desc: test for testCanvasDrawTextBlobMaximum. 672 * @tc.size : SmallTest 673 * @tc.type : Function 674 * @tc.level : Level 3 675 */ 676HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawTextBlobMaximum, TestSize.Level3) { 677 // 1. Create OH_Drawing_Canvas 678 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 679 // 2. Create OH_Drawing_TextBlob from text 680 const char *str = "123456"; 681 OH_Drawing_Font *font = OH_Drawing_FontCreate(); 682 OH_Drawing_TextBlob *textBlob = 683 OH_Drawing_TextBlobCreateFromText(str, strlen(str), font, OH_Drawing_TextEncoding::TEXT_ENCODING_UTF8); 684 // 3. Draw OH_Drawing_TextBlob on canvas with x-coordinate of the bottom left corner of the text object set to 685 // maximum value 686 OH_Drawing_CanvasDrawTextBlob(canvas, textBlob, FLT_MAX, 10); 687 // 4. Draw OH_Drawing_TextBlob on canvas with y-coordinate of the bottom left corner of the text object set to 688 // maximum value 689 OH_Drawing_CanvasDrawTextBlob(canvas, textBlob, 10, FLT_MAX); 690 // 5. Release memory 691 OH_Drawing_TextBlobDestroy(textBlob); 692 // 5. Release memory 693 OH_Drawing_CanvasDestroy(canvas); 694} 695 696/* 697 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2204 698 * @tc.name: testCanvasDrawTextBlobInputDestroyed 699 * @tc.desc: test for testCanvasDrawTextBlobInputDestroyed. 700 * @tc.size : SmallTest 701 * @tc.type : Function 702 * @tc.level : Level 3 703 */ 704HWTEST_F(DrawingNativeCanvasTest, testCanvasDrawTextBlobInputDestroyed, TestSize.Level3) { 705 // Deprecated 706} 707 708/* 709 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2300 710 * @tc.name: testCanvasClipRectNormal 711 * @tc.desc: test for testCanvasClipRectNormal. 712 * @tc.size : SmallTest 713 * @tc.type : Function 714 * @tc.level : Level 0 715 */ 716HWTEST_F(DrawingNativeCanvasTest, testCanvasClipRectNormal, TestSize.Level0) { 717 // 1. OH_Drawing_CanvasCreate 718 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 719 // 2. OH_Drawing_RectCreate 720 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 10, 100, 100); 721 // 3. OH_Drawing_CanvasClipRect with clipOp and doAntiAlias parameters, iterate through enum values 722 OH_Drawing_CanvasClipOp clipOp[] = {OH_Drawing_CanvasClipOp::DIFFERENCE, OH_Drawing_CanvasClipOp::INTERSECT}; 723 bool doAntiAlias[] = {true, false}; 724 for (int i = 0; i < 2; i++) { 725 for (int j = 0; j < 2; j++) { 726 OH_Drawing_CanvasClipRect(canvas, rect, clipOp[i], doAntiAlias[j]); 727 } 728 } 729 // 4. Free memory 730 OH_Drawing_CanvasDestroy(canvas); 731} 732 733/* 734 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2301 735 * @tc.name: testCanvasClipRectNull 736 * @tc.desc: test for testCanvasClipRectNull. 737 * @tc.size : SmallTest 738 * @tc.type : Function 739 * @tc.level : Level 3 740 */ 741HWTEST_F(DrawingNativeCanvasTest, testCanvasClipRectNull, TestSize.Level3) { 742 // 1. OH_Drawing_CanvasCreate 743 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 744 // 2. OH_Drawing_RectCreate 745 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 10, 100, 100); 746 // 3. OH_Drawing_CanvasClipRect with the first parameter being nullptr 747 OH_Drawing_CanvasClipRect(nullptr, rect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 748 // 4. OH_Drawing_CanvasClipRect with the second parameter OH_Drawing_Rect created with left, top, right, and bottom 749 // values being 0 750 OH_Drawing_Rect *rect2 = OH_Drawing_RectCreate(0, 10, 100, 100); 751 OH_Drawing_CanvasClipRect(canvas, rect2, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 752 rect2 = OH_Drawing_RectCreate(10, 0, 100, 100); 753 OH_Drawing_CanvasClipRect(canvas, rect2, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 754 rect2 = OH_Drawing_RectCreate(10, 10, 0, 100); 755 OH_Drawing_CanvasClipRect(canvas, rect2, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 756 rect2 = OH_Drawing_RectCreate(10, 10, 100, 0); 757 OH_Drawing_CanvasClipRect(canvas, rect2, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 758 // 5. OH_Drawing_CanvasClipRect with the second parameter OH_Drawing_Rect created with all values being 0 759 OH_Drawing_Rect *rect3 = OH_Drawing_RectCreate(0, 0, 0, 0); 760 OH_Drawing_CanvasClipRect(canvas, rect3, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 761 // 6. OH_Drawing_CanvasClipRect with the second parameter being nullptr 762 OH_Drawing_CanvasClipRect(canvas, nullptr, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 763 // 7. Free memory 764 OH_Drawing_CanvasDestroy(canvas); 765 OH_Drawing_RectDestroy(rect); 766 OH_Drawing_RectDestroy(rect2); 767 OH_Drawing_RectDestroy(rect3); 768} 769 770/* 771 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2302 772 * @tc.name: testCanvasClipRectAbnormal 773 * @tc.desc: test for testCanvasClipRectAbnormal. 774 * @tc.size : SmallTest 775 * @tc.type : Function 776 * @tc.level : Level 3 777 */ 778HWTEST_F(DrawingNativeCanvasTest, testCanvasClipRectAbnormal, TestSize.Level3) { 779 // 1. OH_Drawing_CanvasCreate 780 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 781 // 2. OH_Drawing_CanvasClipRect with OH_Drawing_Rect created with negative values for left, top, right, and bottom 782 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(-10, 10, 100, 100); 783 OH_Drawing_CanvasClipRect(canvas, rect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 784 rect = OH_Drawing_RectCreate(10, -10, 100, 100); 785 OH_Drawing_CanvasClipRect(canvas, rect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 786 rect = OH_Drawing_RectCreate(10, 10, -100, 100); 787 OH_Drawing_CanvasClipRect(canvas, rect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 788 rect = OH_Drawing_RectCreate(10, 10, 100, -100); 789 OH_Drawing_CanvasClipRect(canvas, rect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 790 // 3. OH_Drawing_CanvasClipRect with OH_Drawing_Rect created where the x-coordinate of the top-left corner is equal 791 // to the x-coordinate of the bottom-right corner, or the y-coordinate of the top-left corner is equal to the 792 // y-coordinate of the bottom-right corner 793 rect = OH_Drawing_RectCreate(100, 10, 100, 100); 794 OH_Drawing_CanvasClipRect(canvas, rect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 795 rect = OH_Drawing_RectCreate(10, 100, 100, 100); 796 OH_Drawing_CanvasClipRect(canvas, rect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 797 // 4. OH_Drawing_CanvasClipRect with OH_Drawing_Rect created where the top-left corner coordinates are equal to the 798 // bottom-right corner coordinates 799 rect = OH_Drawing_RectCreate(100, 100, 100, 100); 800 OH_Drawing_CanvasClipRect(canvas, rect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 801 // 5. OH_Drawing_CanvasClipRect with OH_Drawing_Rect created where the top-left corner coordinates are greater than 802 // the bottom-right corner coordinates 803 rect = OH_Drawing_RectCreate(200, 200, 100, 100); 804 OH_Drawing_CanvasClipRect(canvas, rect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 805 // 6. Release memory 806 OH_Drawing_CanvasDestroy(canvas); 807 OH_Drawing_RectDestroy(rect); 808} 809 810/* 811 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2303 812 * @tc.name: testCanvasClipRectMaximum 813 * @tc.desc: test for testCanvasClipRectMaximum. 814 * @tc.size : SmallTest 815 * @tc.type : Function 816 * @tc.level : Level 3 817 */ 818HWTEST_F(DrawingNativeCanvasTest, testCanvasClipRectMaximum, TestSize.Level3) { 819 // 1. OH_Drawing_CanvasCreate 820 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 821 // 2. OH_Drawing_CanvasClipRect with OH_Drawing_Rect created with extreme values for left, top, right, and bottom 822 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(FLT_MAX, 10, 100, 100); 823 OH_Drawing_CanvasClipRect(canvas, rect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 824 rect = OH_Drawing_RectCreate(10, FLT_MAX, 100, 100); 825 OH_Drawing_CanvasClipRect(canvas, rect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 826 rect = OH_Drawing_RectCreate(10, 10, FLT_MAX, 100); 827 OH_Drawing_CanvasClipRect(canvas, rect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 828 rect = OH_Drawing_RectCreate(10, 10, 100, FLT_MAX); 829 OH_Drawing_CanvasClipRect(canvas, rect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 830 // 3. Release memory 831 OH_Drawing_CanvasDestroy(canvas); 832 OH_Drawing_RectDestroy(rect); 833} 834 835/* 836 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2304 837 * @tc.name: testCanvasClipRectInputDestroyed 838 * @tc.desc: test for testCanvasClipRectInputDestroyed. 839 * @tc.size : SmallTest 840 * @tc.type : Function 841 * @tc.level : Level 3 842 */ 843HWTEST_F(DrawingNativeCanvasTest, testCanvasClipRectInputDestroyed, TestSize.Level3) { 844 // Deprecated 845} 846 847/* 848 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2400 849 * @tc.name: testCanvasClipRoundRectNormal 850 * @tc.desc: test for testCanvasClipRoundRectNormal. 851 * @tc.size : SmallTest 852 * @tc.type : Function 853 * @tc.level : Level 0 854 */ 855HWTEST_F(DrawingNativeCanvasTest, testCanvasClipRoundRectNormal, TestSize.Level0) { 856 // 1. OH_Drawing_CanvasCreate 857 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 858 // 2. OH_Drawing_RoundRectCreate 859 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 10, 100, 100); 860 OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 861 // 3. OH_Drawing_CanvasClipRoundRect with parameters clipOp and doAntiAlias, iterate through the enumeration values 862 OH_Drawing_CanvasClipOp clipOp[] = {OH_Drawing_CanvasClipOp::DIFFERENCE, OH_Drawing_CanvasClipOp::INTERSECT}; 863 bool doAntiAlias[] = {true, false}; 864 for (int i = 0; i < 2; i++) { 865 for (int j = 0; j < 2; j++) { 866 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, clipOp[i], doAntiAlias[j]); 867 } 868 } 869 // 4. Free memory 870 OH_Drawing_CanvasDestroy(canvas); 871 OH_Drawing_RectDestroy(rect); 872} 873 874/* 875 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2401 876 * @tc.name: testCanvasClipRoundRectNull 877 * @tc.desc: test for testCanvasClipRoundRectNull. 878 * @tc.size : SmallTest 879 * @tc.type : Function 880 * @tc.level : Level 3 881 */ 882HWTEST_F(DrawingNativeCanvasTest, testCanvasClipRoundRectNull, TestSize.Level3) { 883 // 1. OH_Drawing_CanvasCreate 884 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 885 // 2. OH_Drawing_RoundRectCreate 886 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 10, 100, 100); 887 OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 888 // 3. OH_Drawing_CanvasClipRoundRect with the first parameter being null 889 OH_Drawing_CanvasClipRoundRect(nullptr, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 890 // 4. OH_Drawing_CanvasClipRoundRect with the second parameter being null 891 OH_Drawing_CanvasClipRoundRect(canvas, nullptr, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 892 // 5. OH_Drawing_CanvasClipRoundRect with the second parameter OH_Drawing_RoundRectCreate created with rect's left, 893 // top, right, and bottom values all set to 0 894 OH_Drawing_Rect *rect2 = OH_Drawing_RectCreate(0, 10, 100, 100); 895 OH_Drawing_RoundRect *roundRect2 = OH_Drawing_RoundRectCreate(rect2, 10, 10); 896 OH_Drawing_CanvasClipRoundRect(canvas, roundRect2, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 897 rect2 = OH_Drawing_RectCreate(10, 0, 100, 100); 898 roundRect2 = OH_Drawing_RoundRectCreate(rect2, 10, 10); 899 OH_Drawing_CanvasClipRoundRect(canvas, roundRect2, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 900 rect2 = OH_Drawing_RectCreate(10, 10, 0, 100); 901 roundRect2 = OH_Drawing_RoundRectCreate(rect2, 10, 10); 902 OH_Drawing_CanvasClipRoundRect(canvas, roundRect2, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 903 rect2 = OH_Drawing_RectCreate(10, 10, 100, 0); 904 roundRect2 = OH_Drawing_RoundRectCreate(rect2, 10, 10); 905 OH_Drawing_CanvasClipRoundRect(canvas, roundRect2, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 906 // 6. OH_Drawing_CanvasClipRoundRect with the second parameter OH_Drawing_RoundRectCreate created with all rect's 907 // left, top, right, and bottom values set to 0 908 rect2 = OH_Drawing_RectCreate(0, 0, 0, 0); 909 roundRect2 = OH_Drawing_RoundRectCreate(rect2, 10, 10); 910 OH_Drawing_CanvasClipRoundRect(canvas, roundRect2, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 911 // 7. OH_Drawing_CanvasClipRoundRect with the second parameter OH_Drawing_RoundRectCreate created with xRad set to 0 912 rect2 = OH_Drawing_RectCreate(10, 10, 100, 100); 913 roundRect2 = OH_Drawing_RoundRectCreate(rect2, 0, 10); 914 OH_Drawing_CanvasClipRoundRect(canvas, roundRect2, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 915 // 8. OH_Drawing_CanvasClipRoundRect with the second parameter OH_Drawing_RoundRectCreate created with yRad set to 0 916 rect2 = OH_Drawing_RectCreate(10, 10, 100, 100); 917 roundRect2 = OH_Drawing_RoundRectCreate(rect2, 10, 0); 918 OH_Drawing_CanvasClipRoundRect(canvas, roundRect2, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 919 // 9. Release memory 920 OH_Drawing_CanvasDestroy(canvas); 921 OH_Drawing_RectDestroy(rect); 922 OH_Drawing_RectDestroy(rect2); 923 OH_Drawing_RoundRectDestroy(roundRect); 924 OH_Drawing_RoundRectDestroy(roundRect2); 925} 926 927/* 928 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2402 929 * @tc.name: testCanvasClipRoundRectAbnormal 930 * @tc.desc: test for testCanvasClipRoundRectAbnormal. 931 * @tc.size : SmallTest 932 * @tc.type : Function 933 * @tc.level : Level 3 934 */ 935HWTEST_F(DrawingNativeCanvasTest, testCanvasClipRoundRectAbnormal, TestSize.Level3) { 936 // 1. OH_Drawing_CanvasCreate 937 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 938 // 2. OH_Drawing_CanvasClipRoundRect, pass negative values for left, top, right, and bottom when creating 939 // OH_Drawing_RoundRect 940 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(-10, 10, 100, 100); 941 OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 942 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 943 rect = OH_Drawing_RectCreate(10, -10, 100, 100); 944 roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 945 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 946 rect = OH_Drawing_RectCreate(10, 10, -100, 100); 947 roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 948 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 949 rect = OH_Drawing_RectCreate(10, 10, 100, -100); 950 roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 951 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 952 953 // 3. OH_Drawing_CanvasClipRoundRect, pass OH_Drawing_RoundRect with left-top coordinates equal to right-bottom 954 // coordinates 955 rect = OH_Drawing_RectCreate(100, 10, 100, 100); 956 roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 957 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 958 rect = OH_Drawing_RectCreate(10, 100, 100, 100); 959 roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 960 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 961 962 // 4. OH_Drawing_CanvasClipRoundRect, pass OH_Drawing_RoundRect with left-top coordinates equal to right-bottom 963 // coordinates 964 rect = OH_Drawing_RectCreate(100, 100, 100, 100); 965 roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 966 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 967 968 // 5. OH_Drawing_CanvasClipRoundRect, pass OH_Drawing_RoundRect with left-top coordinates greater than right-bottom 969 // coordinates 970 rect = OH_Drawing_RectCreate(200, 200, 100, 100); 971 roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 972 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 973 974 // 6. OH_Drawing_CanvasClipRoundRect, pass OH_Drawing_RoundRect with negative xRad 975 rect = OH_Drawing_RectCreate(10, 10, 100, 100); 976 roundRect = OH_Drawing_RoundRectCreate(rect, -10, 10); 977 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 978 979 // 7. OH_Drawing_CanvasClipRoundRect, pass OH_Drawing_RoundRect with negative yRad 980 rect = OH_Drawing_RectCreate(10, 10, 100, 100); 981 roundRect = OH_Drawing_RoundRectCreate(rect, 10, -10); 982 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 983 984 // 8. Release memory 985 OH_Drawing_CanvasDestroy(canvas); 986 OH_Drawing_RectDestroy(rect); 987 OH_Drawing_RoundRectDestroy(roundRect); 988} 989 990/* 991 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2403 992 * @tc.name: testCanvasClipRoundRectMaximum 993 * @tc.desc: test for testCanvasClipRoundRectMaximum. 994 * @tc.size : SmallTest 995 * @tc.type : Function 996 * @tc.level : Level 3 997 */ 998HWTEST_F(DrawingNativeCanvasTest, testCanvasClipRoundRectMaximum, TestSize.Level3) { 999 // 1. OH_Drawing_CanvasCreate 1000 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1001 // 2. OH_Drawing_CanvasClipRoundRect, pass extreme values for left, top, right, and bottom when creating 1002 // OH_Drawing_RoundRect 1003 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(FLT_MAX, 10, 100, 100); 1004 OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 1005 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 1006 rect = OH_Drawing_RectCreate(10, FLT_MAX, 100, 100); 1007 roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 1008 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 1009 rect = OH_Drawing_RectCreate(10, 10, FLT_MAX, 100); 1010 roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 1011 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 1012 rect = OH_Drawing_RectCreate(10, 10, 100, FLT_MAX); 1013 roundRect = OH_Drawing_RoundRectCreate(rect, 10, 10); 1014 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 1015 // 3. OH_Drawing_CanvasClipRoundRect, pass FLT_MAX for xRad when creating OH_Drawing_RoundRect 1016 rect = OH_Drawing_RectCreate(10, 10, 100, 100); 1017 roundRect = OH_Drawing_RoundRectCreate(rect, FLT_MAX, 10); 1018 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 1019 // 4. OH_Drawing_CanvasClipRoundRect, pass FLT_MAX for yRad when creating OH_Drawing_RoundRect 1020 rect = OH_Drawing_RectCreate(10, 10, 100, 100); 1021 roundRect = OH_Drawing_RoundRectCreate(rect, 10, FLT_MAX); 1022 OH_Drawing_CanvasClipRoundRect(canvas, roundRect, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 1023 // 5. Free memory 1024 OH_Drawing_CanvasDestroy(canvas); 1025 OH_Drawing_RectDestroy(rect); 1026 OH_Drawing_RoundRectDestroy(roundRect); 1027} 1028 1029/* 1030 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2404 1031 * @tc.name: testCanvasClipRoundRectInputDestroyed 1032 * @tc.desc: test for testCanvasClipRoundRectInputDestroyed. 1033 * @tc.size : SmallTest 1034 * @tc.type : Function 1035 * @tc.level : Level 3 1036 */ 1037HWTEST_F(DrawingNativeCanvasTest, testCanvasClipRoundRectInputDestroyed, TestSize.Level3) { 1038 // Deprecated 1039} 1040 1041/* 1042 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2500 1043 * @tc.name: testCanvasClipPathNormal 1044 * @tc.desc: test for testCanvasClipPathNormal. 1045 * @tc.size : SmallTest 1046 * @tc.type : Function 1047 * @tc.level : Level 0 1048 */ 1049HWTEST_F(DrawingNativeCanvasTest, testCanvasClipPathNormal, TestSize.Level0) { 1050 // 1. OH_Drawing_CanvasCreate 1051 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1052 // 2. OH_Drawing_PathCreate 1053 OH_Drawing_Path *path = OH_Drawing_PathCreate(); 1054 OH_Drawing_PathMoveTo(path, 0, 0); 1055 OH_Drawing_PathLineTo(path, 100, 0); 1056 OH_Drawing_PathLineTo(path, 100, 100); 1057 OH_Drawing_PathLineTo(path, 0, 100); 1058 OH_Drawing_PathClose(path); 1059 // 3. OH_Drawing_PathAddRect 1060 OH_Drawing_PathAddRect(path, 10, 10, 100, 100, OH_Drawing_PathDirection::PATH_DIRECTION_CW); 1061 // 4. OH_Drawing_CanvasClipPath 1062 OH_Drawing_CanvasClipOp clipOp[] = {OH_Drawing_CanvasClipOp::DIFFERENCE, OH_Drawing_CanvasClipOp::INTERSECT}; 1063 bool doAntiAlias[] = {true, false}; 1064 for (int i = 0; i < 2; i++) { 1065 for (int j = 0; j < 2; j++) { 1066 OH_Drawing_CanvasClipPath(canvas, path, clipOp[i], doAntiAlias[j]); 1067 } 1068 } 1069 // 5. Free memory 1070 OH_Drawing_PathDestroy(path); 1071 OH_Drawing_CanvasDestroy(canvas); 1072} 1073 1074/* 1075 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2501 1076 * @tc.name: testCanvasClipPathNull 1077 * @tc.desc: test for testCanvasClipPathNull. 1078 * @tc.size : SmallTest 1079 * @tc.type : Function 1080 * @tc.level : Level 3 1081 */ 1082HWTEST_F(DrawingNativeCanvasTest, testCanvasClipPathNull, TestSize.Level3) { 1083 // 1. OH_Drawing_CanvasCreate 1084 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1085 // 2. OH_Drawing_PathCreate 1086 OH_Drawing_Path *path = OH_Drawing_PathCreate(); 1087 OH_Drawing_PathMoveTo(path, 0, 0); 1088 OH_Drawing_PathLineTo(path, 100, 0); 1089 OH_Drawing_PathLineTo(path, 100, 100); 1090 OH_Drawing_PathLineTo(path, 0, 100); 1091 OH_Drawing_PathClose(path); 1092 // 3. OH_Drawing_PathAddRect 1093 OH_Drawing_PathAddRect(path, 10, 10, 100, 100, OH_Drawing_PathDirection::PATH_DIRECTION_CW); 1094 // 4. OH_Drawing_CanvasClipPath with the first parameter being null 1095 OH_Drawing_CanvasClipPath(nullptr, path, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 1096 // 5. OH_Drawing_CanvasClipPath with the second parameter being null 1097 OH_Drawing_CanvasClipPath(canvas, nullptr, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 1098 // 6. OH_Drawing_CanvasClipPath with the second parameter being an empty path 1099 OH_Drawing_Path *path2 = OH_Drawing_PathCreate(); 1100 OH_Drawing_CanvasClipPath(canvas, path2, OH_Drawing_CanvasClipOp::DIFFERENCE, true); 1101 // 7. Free memory 1102 OH_Drawing_PathDestroy(path); 1103 OH_Drawing_PathDestroy(path2); 1104 OH_Drawing_CanvasDestroy(canvas); 1105} 1106 1107/* 1108 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2502 1109 * @tc.name: testCanvasClipPathInputDestroyed 1110 * @tc.desc: test for testCanvasClipPathInputDestroyed. 1111 * @tc.size : SmallTest 1112 * @tc.type : Function 1113 * @tc.level : Level 3 1114 */ 1115HWTEST_F(DrawingNativeCanvasTest, testCanvasClipPathInputDestroyed, TestSize.Level3) { 1116 // Deprecated 1117} 1118 1119/* 1120 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2600 1121 * @tc.name: testCanvasRotateNormal 1122 * @tc.desc: test for testCanvasRotateNormal. 1123 * @tc.size : SmallTest 1124 * @tc.type : Function 1125 * @tc.level : Level 0 1126 */ 1127HWTEST_F(DrawingNativeCanvasTest, testCanvasRotateNormal, TestSize.Level0) { 1128 // 1. OH_Drawing_CanvasCreate 1129 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1130 // 2. OH_Drawing_CanvasRotate, rotate degrees with values 0, 180, 360 1131 float degrees[] = {0, 180, 360}; 1132 for (int i = 0; i < 3; i++) { 1133 OH_Drawing_CanvasRotate(canvas, degrees[i], 10, 10); 1134 } 1135 // 3. Call drawing class interface to draw a rectangle 1136 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 10, 100, 100); 1137 OH_Drawing_CanvasDrawRect(canvas, rect); 1138 // 4. Free memory 1139 OH_Drawing_CanvasDestroy(canvas); 1140} 1141 1142/* 1143 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2601 1144 * @tc.name: testCanvasRotateNull 1145 * @tc.desc: test for testCanvasRotateNull. 1146 * @tc.size : SmallTest 1147 * @tc.type : Function 1148 * @tc.level : Level 3 1149 */ 1150HWTEST_F(DrawingNativeCanvasTest, testCanvasRotateNull, TestSize.Level3) { 1151 // 1. OH_Drawing_CanvasCreate 1152 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1153 // 2. OH_Drawing_CanvasRotate with the first parameter being null 1154 OH_Drawing_CanvasRotate(nullptr, 0, 10, 10); 1155 // 3. OH_Drawing_CanvasRotate with the third parameter being 0 1156 OH_Drawing_CanvasRotate(canvas, 0, 0, 10); 1157 // 4. OH_Drawing_CanvasRotate with the fourth parameter being 0 1158 OH_Drawing_CanvasRotate(canvas, 0, 10, 0); 1159 // 5. Free memory 1160 OH_Drawing_CanvasDestroy(canvas); 1161} 1162 1163/* 1164 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2602 1165 * @tc.name: testCanvasRotateAbnormal 1166 * @tc.desc: test for testCanvasRotateAbnormal. 1167 * @tc.size : SmallTest 1168 * @tc.type : Function 1169 * @tc.level : Level 3 1170 */ 1171HWTEST_F(DrawingNativeCanvasTest, testCanvasRotateAbnormal, TestSize.Level3) { 1172 // 1. OH_Drawing_CanvasCreate 1173 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1174 // 2. OH_Drawing_CanvasRotate with negative degrees input 1175 OH_Drawing_CanvasRotate(canvas, -180, 10, 10); 1176 // 3. OH_Drawing_CanvasRotate with degrees input greater than 360 1177 OH_Drawing_CanvasRotate(canvas, 370, 10, 10); 1178 // 4. OH_Drawing_CanvasRotate with negative px input for rotation center 1179 OH_Drawing_CanvasRotate(canvas, 180, -10, 10); 1180 // 5. OH_Drawing_CanvasRotate with negative py input for rotation center 1181 OH_Drawing_CanvasRotate(canvas, 180, 10, -10); 1182 // 6. Free memory 1183 OH_Drawing_CanvasDestroy(canvas); 1184} 1185 1186/* 1187 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2603 1188 * @tc.name: testCanvasRotateMaximum 1189 * @tc.desc: test for testCanvasRotateMaximum. 1190 * @tc.size : SmallTest 1191 * @tc.type : Function 1192 * @tc.level : Level 3 1193 */ 1194HWTEST_F(DrawingNativeCanvasTest, testCanvasRotateMaximum, TestSize.Level3) { 1195 // 1. OH_Drawing_CanvasCreate 1196 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1197 // 2. OH_Drawing_CanvasRotate with maximum rotation angle degrees input 1198 OH_Drawing_CanvasRotate(canvas, FLT_MAX, 10, 10); 1199 // 3. OH_Drawing_CanvasRotate with maximum x-coordinate px input for rotation center 1200 OH_Drawing_CanvasRotate(canvas, 180, FLT_MAX, 10); 1201 // 4. OH_Drawing_CanvasRotate with maximum y-coordinate py input for rotation center 1202 OH_Drawing_CanvasRotate(canvas, 180, 10, FLT_MAX); 1203 // 5. Free memory 1204 OH_Drawing_CanvasDestroy(canvas); 1205} 1206 1207/* 1208 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2604 1209 * @tc.name: testCanvasRotateInputDestroyed 1210 * @tc.desc: test for testCanvasRotateInputDestroyed. 1211 * @tc.size : SmallTest 1212 * @tc.type : Function 1213 * @tc.level : Level 3 1214 */ 1215HWTEST_F(DrawingNativeCanvasTest, testCanvasRotateInputDestroyed, TestSize.Level3) { 1216 // Deprecated 1217} 1218 1219/* 1220 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2605 1221 * @tc.name: testCanvasRotateMultipleCalls 1222 * @tc.desc: test for testCanvasRotateMultipleCalls. 1223 * @tc.size : SmallTest 1224 * @tc.type : Function 1225 * @tc.level : Level 3 1226 */ 1227HWTEST_F(DrawingNativeCanvasTest, testCanvasRotateMultipleCalls, TestSize.Level3) { 1228 // 1. OH_Drawing_CanvasCreate 1229 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1230 // 2. Call OH_Drawing_CanvasRotate 10 times, each time with different rotation angles and rotation center 1231 // coordinates 1232 for (int i = 0; i < 10; i++) { 1233 OH_Drawing_CanvasRotate(canvas, i * 10, i * 10, i * 10); 1234 // 3. Call drawing class interface 1235 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 10, 100, 100); 1236 OH_Drawing_CanvasDrawRect(canvas, rect); 1237 OH_Drawing_RectDestroy(rect); 1238 } 1239 // 4. Free memory 1240 OH_Drawing_CanvasDestroy(canvas); 1241} 1242 1243/* 1244 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2700 1245 * @tc.name: testCanvasTranslateNormal 1246 * @tc.desc: test for testCanvasTranslateNormal. 1247 * @tc.size : SmallTest 1248 * @tc.type : Function 1249 * @tc.level : Level 0 1250 */ 1251HWTEST_F(DrawingNativeCanvasTest, testCanvasTranslateNormal, TestSize.Level0) { 1252 // 1. OH_Drawing_CanvasCreate 1253 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1254 // 2. OH_Drawing_CanvasTranslate 1255 OH_Drawing_CanvasTranslate(canvas, 10, 10); 1256 // 3. Call drawing class interface to draw a rectangle 1257 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 10, 100, 100); 1258 OH_Drawing_CanvasDrawRect(canvas, rect); 1259 // 4. Free memory 1260 OH_Drawing_RectDestroy(rect); 1261 OH_Drawing_CanvasDestroy(canvas); 1262} 1263 1264/* 1265 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2701 1266 * @tc.name: testCanvasTranslateNull 1267 * @tc.desc: test for testCanvasTranslateNull. 1268 * @tc.size : SmallTest 1269 * @tc.type : Function 1270 * @tc.level : Level 3 1271 */ 1272HWTEST_F(DrawingNativeCanvasTest, testCanvasTranslateNull, TestSize.Level3) { 1273 // 1. OH_Drawing_CanvasCreate 1274 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1275 // 2. OH_Drawing_CanvasTranslate with the first parameter being null 1276 OH_Drawing_CanvasTranslate(nullptr, 10, 10); 1277 // 3. OH_Drawing_CanvasTranslate with the second parameter being 0 1278 OH_Drawing_CanvasTranslate(canvas, 0, 10); 1279 // 4. OH_Drawing_CanvasTranslate with the third parameter being 0 1280 OH_Drawing_CanvasTranslate(canvas, 10, 0); 1281 // 5. Free memory 1282 OH_Drawing_CanvasDestroy(canvas); 1283} 1284 1285/* 1286 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2702 1287 * @tc.name: testCanvasTranslateAbnormal 1288 * @tc.desc: test for testCanvasTranslateAbnormal. 1289 * @tc.size : SmallTest 1290 * @tc.type : Function 1291 * @tc.level : Level 3 1292 */ 1293HWTEST_F(DrawingNativeCanvasTest, testCanvasTranslateAbnormal, TestSize.Level3) { 1294 // 1. OH_Drawing_CanvasCreate 1295 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1296 // 2. OH_Drawing_CanvasTranslate with negative movement distance dx in the x-axis direction 1297 OH_Drawing_CanvasTranslate(canvas, -10, 10); 1298 // 3. OH_Drawing_CanvasTranslate with negative movement distance dy in the y-axis direction 1299 OH_Drawing_CanvasTranslate(canvas, 10, -10); 1300 // 4. Free memory 1301 OH_Drawing_CanvasDestroy(canvas); 1302} 1303 1304/* 1305 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2703 1306 * @tc.name: testCanvasTranslateMaximum 1307 * @tc.desc: test for testCanvasTranslateMaximum. 1308 * @tc.size : SmallTest 1309 * @tc.type : Function 1310 * @tc.level : Level 3 1311 */ 1312HWTEST_F(DrawingNativeCanvasTest, testCanvasTranslateMaximum, TestSize.Level3) { 1313 // 1. OH_Drawing_CanvasCreate 1314 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1315 // 2. OH_Drawing_CanvasTranslate with the movement distance dx in the x-axis direction being the maximum value 1316 OH_Drawing_CanvasTranslate(canvas, FLT_MAX, 10); 1317 // 3. OH_Drawing_CanvasTranslate with the movement distance dy in the y-axis direction being the maximum value 1318 OH_Drawing_CanvasTranslate(canvas, 10, FLT_MAX); 1319 // 4. Free memory 1320 OH_Drawing_CanvasDestroy(canvas); 1321} 1322 1323/* 1324 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2704 1325 * @tc.name: testCanvasTranslateInputDestroyed 1326 * @tc.desc: test for testCanvasTranslateInputDestroyed. 1327 * @tc.size : SmallTest 1328 * @tc.type : Function 1329 * @tc.level : Level 3 1330 */ 1331HWTEST_F(DrawingNativeCanvasTest, testCanvasTranslateInputDestroyed, TestSize.Level3) { 1332 // Deprecated 1333} 1334 1335/* 1336 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2705 1337 * @tc.name: testCanvasTranslateMultipleCalls 1338 * @tc.desc: test for testCanvasTranslateMultipleCalls. 1339 * @tc.size : SmallTest 1340 * @tc.type : Function 1341 * @tc.level : Level 3 1342 */ 1343HWTEST_F(DrawingNativeCanvasTest, testCanvasTranslateMultipleCalls, TestSize.Level3) { 1344 // 1. OH_Drawing_CanvasCreate 1345 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1346 // 2. Call OH_Drawing_CanvasTranslate 10 times, each time with different movement distances 1347 for (int i = 0; i < 10; i++) { 1348 OH_Drawing_CanvasTranslate(canvas, i * 10, i * 10); 1349 // 3. Call drawing class interface 1350 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 10, 100, 100); 1351 OH_Drawing_CanvasDrawRect(canvas, rect); 1352 OH_Drawing_RectDestroy(rect); 1353 } 1354 // 4. Free memory 1355 OH_Drawing_CanvasDestroy(canvas); 1356} 1357 1358/* 1359 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2800 1360 * @tc.name: testCanvasScaleNormal 1361 * @tc.desc: test for testCanvasScaleNormal. 1362 * @tc.size : SmallTest 1363 * @tc.type : Function 1364 * @tc.level : Level 0 1365 */ 1366HWTEST_F(DrawingNativeCanvasTest, testCanvasScaleNormal, TestSize.Level0) { 1367 // 1. Create a canvas 1368 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1369 1370 // 2. Scale the canvas 1371 OH_Drawing_CanvasScale(canvas, 2.0, 2.0); 1372 1373 // 3. Call drawing class interface 1374 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 10, 100, 100); 1375 OH_Drawing_CanvasDrawRect(canvas, rect); 1376 OH_Drawing_RectDestroy(rect); 1377 1378 // 4. Free memory 1379 OH_Drawing_CanvasDestroy(canvas); 1380} 1381 1382/* 1383 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2801 1384 * @tc.name: testCanvasScaleNull 1385 * @tc.desc: test for testCanvasScaleNull. 1386 * @tc.size : SmallTest 1387 * @tc.type : Function 1388 * @tc.level : Level 3 1389 */ 1390HWTEST_F(DrawingNativeCanvasTest, testCanvasScaleNull, TestSize.Level3) { 1391 // 1. Create a canvas 1392 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1393 1394 // 2. Scale the canvas, with the first parameter being null 1395 OH_Drawing_CanvasScale(NULL, 2.0, 2.0); 1396 1397 // 3. Scale the canvas, with the second parameter being 0 1398 OH_Drawing_CanvasScale(canvas, 0, 2.0); 1399 1400 // 4. Scale the canvas, with the third parameter being 0 1401 OH_Drawing_CanvasScale(canvas, 2.0, 0); 1402 1403 // 5. Free memory 1404 OH_Drawing_CanvasDestroy(canvas); 1405} 1406 1407/* 1408 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2802 1409 * @tc.name: testCanvasScaleAbnormal 1410 * @tc.desc: test for testCanvasScaleAbnormal. 1411 * @tc.size : SmallTest 1412 * @tc.type : Function 1413 * @tc.level : Level 3 1414 */ 1415HWTEST_F(DrawingNativeCanvasTest, testCanvasScaleAbnormal, TestSize.Level3) { 1416 // 1. Create a canvas 1417 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1418 1419 // 2. Scale the canvas, with a negative scale ratio in the x-axis 1420 OH_Drawing_CanvasScale(canvas, -2.0, 2.0); 1421 1422 // 3. Scale the canvas, with a negative scale ratio in the y-axis 1423 OH_Drawing_CanvasScale(canvas, 2.0, -2.0); 1424 1425 // 4. Free memory 1426 OH_Drawing_CanvasDestroy(canvas); 1427} 1428 1429/* 1430 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2803 1431 * @tc.name: testCanvasScaleMaximum 1432 * @tc.desc: test for testCanvasScaleMaximum. 1433 * @tc.size : SmallTest 1434 * @tc.type : Function 1435 * @tc.level : Level 3 1436 */ 1437HWTEST_F(DrawingNativeCanvasTest, testCanvasScaleMaximum, TestSize.Level3) { 1438 // 1. Create a canvas 1439 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1440 1441 // 2. Scale the canvas, with the maximum scale ratio in the x-axis 1442 OH_Drawing_CanvasScale(canvas, DBL_MAX, 2.0); 1443 1444 // 3. Scale the canvas, with the maximum scale ratio in the y-axis 1445 OH_Drawing_CanvasScale(canvas, 2.0, DBL_MAX); 1446 1447 // 4. Free memory 1448 OH_Drawing_CanvasDestroy(canvas); 1449} 1450 1451/* 1452 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2804 1453 * @tc.name: testCanvasScaleInputDestroyed 1454 * @tc.desc: test for testCanvasScaleInputDestroyed. 1455 * @tc.size : SmallTest 1456 * @tc.type : Function 1457 * @tc.level : Level 3 1458 */ 1459HWTEST_F(DrawingNativeCanvasTest, testCanvasScaleInputDestroyed, TestSize.Level3) { 1460 // Deprecated 1461} 1462 1463/* 1464 * @tc.number: SUB_BASIC_GRAPHICS_SPECIAL_API_C_DRAWING_CANVAS_2805 1465 * @tc.name: testCanvasScaleMultipleCalls 1466 * @tc.desc: test for testCanvasScaleMultipleCalls. 1467 * @tc.size : SmallTest 1468 * @tc.type : Function 1469 * @tc.level : Level 3 1470 */ 1471HWTEST_F(DrawingNativeCanvasTest, testCanvasScaleMultipleCalls, TestSize.Level3) { 1472 // 1. Create a canvas 1473 OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate(); 1474 1475 // 2. Call OH_Drawing_CanvasScale 10 times, each time with different compression ratios 1476 for (int i = 1; i <= 10; i++) { 1477 OH_Drawing_CanvasScale(canvas, i * 1.0, i * 1.0); 1478 } 1479 1480 // 3. Call drawing class interface 1481 OH_Drawing_Rect *rect = OH_Drawing_RectCreate(10, 10, 100, 100); 1482 OH_Drawing_CanvasDrawRect(canvas, rect); 1483 OH_Drawing_RectDestroy(rect); 1484 1485 // 4. Free memory 1486 OH_Drawing_CanvasDestroy(canvas); 1487} 1488 1489} // namespace Drawing 1490} // namespace Rosen 1491} // namespace OHOS