* Copyright (c) 2024 Shenzhen Kaihong Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "include/DrawingNativeCanvasTest.h"
#include <cfloat>
#include "include/DrawingNativeCanvasCommonTest.h"
#include "include/OhosCommonTest.h"
#define DRAWING_NUMBER_1 1
#define DRAWING_NUMBER_2 2
#define DRAWING_NUMBER_3 3
#define DRAWING_NUMBER_4 4
#define DRAWING_NUMBER_5 5
#define DRAWING_NUMBER_6 6
#define DRAWING_NUMBER_10 10
#define DRAWING_NUMBER_11 11
#define DRAWING_NUMBER_12 12
#define DRAWING_NUMBER_20 20
#define DRAWING_NUMBER_21 21
#define DRAWING_NUMBER_100 100
#define DRAWING_NUMBER_200 200
#define DRAWING_NUMBER_300 300
#define DRAWING_NUMBER_500 500
#define DRAWING_NUMBER_600 600
#define DRAWING_NUMBER_2160 2160
#define DRAWING_NUMBER_4096 4096
#define DRAWING_NUMBER_8888 8888
namespace OHOS {
namespace Rosen {
namespace Drawing {
void DrawingNativeCanvasTestSetUp()
{
std::cout << "DrawingNativeCanvasTest Setup code called before each test case." << std::endl;
OH_Drawing_ErrorCodeReset();
std::cout << "DrawingNativeCanvasTest errorCodeReset before each test case." << std::endl;
}
void DrawingNativeCanvasTestTearDown()
{
std::cout << "DrawingNativeCanvasTest Setup code called after each test case." << std::endl;
OH_Drawing_ErrorCodeReset();
std::cout << "DrawingNativeCanvasTest errorCodeReset after each test case." << std::endl;
}
int TestCanvasDestroyNormal()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasDestroyNull()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = nullptr;
OH_Drawing_CanvasDestroy(nullptr);
EXPECT_EQ(canvas, nullptr);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasBindNormal()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
EXPECT_NE(bitmap, nullptr);
OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
constexpr uint32_t width = DRAWING_NUMBER_200;
constexpr uint32_t height = DRAWING_NUMBER_200;
OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
OH_Drawing_CanvasBind(canvas, bitmap);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
OH_Drawing_BitmapDestroy(bitmap);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasBindNull()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
EXPECT_NE(bitmap, nullptr);
OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
constexpr uint32_t width = DRAWING_NUMBER_200;
constexpr uint32_t height = DRAWING_NUMBER_200;
OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
OH_Drawing_CanvasBind(nullptr, bitmap);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_ErrorCodeReset();
OH_Drawing_CanvasBind(canvas, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_BitmapDestroy(bitmap);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasBindDestroyBitmap()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
EXPECT_NE(bitmap, nullptr);
OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
constexpr uint32_t width = DRAWING_NUMBER_200;
constexpr uint32_t height = DRAWING_NUMBER_200;
OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
OH_Drawing_CanvasBind(canvas, bitmap);
OH_Drawing_BitmapDestroy(bitmap);
OH_Drawing_Rect *rect =
OH_Drawing_RectCreate(DRAWING_NUMBER_10, DRAWING_NUMBER_100, DRAWING_NUMBER_200, DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
OH_Drawing_CanvasDrawRect(canvas, rect);
OH_Drawing_RectDestroy(rect);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasBindMultipleCalls()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
EXPECT_NE(bitmap, nullptr);
OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
uint32_t width = DRAWING_NUMBER_200 + i;
uint32_t height = DRAWING_NUMBER_200 + i;
OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
OH_Drawing_CanvasBind(canvas, bitmap);
OH_Drawing_BitmapDestroy(bitmap);
}
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasBindBoundaryMultipleCallsBoundary()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
EXPECT_NE(bitmap, nullptr);
OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
uint32_t width = DRAWING_NUMBER_4096;
uint32_t height = DRAWING_NUMBER_2160;
OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
OH_Drawing_CanvasBind(canvas, bitmap);
OH_Drawing_BitmapDestroy(bitmap);
}
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasAttachPenDetachPenNormal()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
EXPECT_NE(bitmap, nullptr);
OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
constexpr uint32_t width = DRAWING_NUMBER_200;
constexpr uint32_t height = DRAWING_NUMBER_200;
OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
OH_Drawing_CanvasBind(canvas, bitmap);
OH_Drawing_Pen *pen = OH_Drawing_PenCreate();
EXPECT_NE(pen, nullptr);
OH_Drawing_CanvasAttachPen(canvas, pen);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
OH_Drawing_CanvasDetachPen(canvas);
OH_Drawing_PenDestroy(pen);
OH_Drawing_BitmapDestroy(bitmap);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasAttachPenDetachPenNull()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Pen *pen = OH_Drawing_PenCreate();
EXPECT_NE(pen, nullptr);
OH_Drawing_CanvasAttachPen(nullptr, pen);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_ErrorCodeReset();
OH_Drawing_CanvasAttachPen(canvas, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_ErrorCodeReset();
OH_Drawing_CanvasDetachPen(nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_Canvas *canvasDRAWING_NUMBER_2 = OH_Drawing_CanvasCreate();
EXPECT_NE(canvasDRAWING_NUMBER_2, nullptr);
OH_Drawing_CanvasDetachPen(canvasDRAWING_NUMBER_2);
OH_Drawing_PenDestroy(pen);
OH_Drawing_CanvasDestroy(canvas);
OH_Drawing_CanvasDestroy(canvasDRAWING_NUMBER_2);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasAttachPenDetachPenMultipleCalls()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Pen *pen = OH_Drawing_PenCreate();
EXPECT_NE(pen, nullptr);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasAttachPen(canvas, pen);
}
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasDetachPen(canvas);
}
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasAttachPen(canvas, pen);
OH_Drawing_CanvasDetachPen(canvas);
}
OH_Drawing_PenDestroy(pen);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasAttachPenOnly()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Pen *pen = OH_Drawing_PenCreate();
EXPECT_NE(pen, nullptr);
OH_Drawing_CanvasAttachPen(canvas, pen);
OH_Drawing_PenDestroy(pen);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasDetachPenOnly()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasDetachPen(canvas);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasAttachPenDetachPenBoundary()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
EXPECT_NE(bitmap, nullptr);
OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
constexpr uint32_t width = DRAWING_NUMBER_4096;
constexpr uint32_t height = DRAWING_NUMBER_2160;
OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
OH_Drawing_CanvasBind(canvas, bitmap);
OH_Drawing_Pen *pen = OH_Drawing_PenCreate();
EXPECT_NE(pen, nullptr);
OH_Drawing_CanvasAttachPen(canvas, pen);
OH_Drawing_CanvasDetachPen(canvas);
OH_Drawing_PenDestroy(pen);
OH_Drawing_BitmapDestroy(bitmap);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasAttachBrushDetachBrushNormal()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
EXPECT_NE(bitmap, nullptr);
OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
constexpr uint32_t width = DRAWING_NUMBER_200;
constexpr uint32_t height = DRAWING_NUMBER_200;
OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
OH_Drawing_CanvasBind(canvas, bitmap);
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_CanvasAttachBrush(canvas, brush);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
OH_Drawing_CanvasDetachBrush(canvas);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
OH_Drawing_CanvasDestroy(canvas);
OH_Drawing_BrushDestroy(brush);
OH_Drawing_BitmapDestroy(bitmap);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasAttachBrushDetachBrushNull()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_CanvasAttachBrush(nullptr, brush);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_ErrorCodeReset();
OH_Drawing_CanvasAttachBrush(canvas, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_ErrorCodeReset();
OH_Drawing_CanvasDetachBrush(nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_Canvas *canvasDRAWING_NUMBER_2 = OH_Drawing_CanvasCreate();
EXPECT_NE(canvasDRAWING_NUMBER_2, nullptr);
OH_Drawing_CanvasDetachBrush(canvasDRAWING_NUMBER_2);
OH_Drawing_CanvasDestroy(canvas);
OH_Drawing_BrushDestroy(brush);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasAttachBrushDetachBrushMultipleCalls()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasAttachBrush(canvas, brush);
}
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasDetachBrush(canvas);
}
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasAttachBrush(canvas, brush);
OH_Drawing_CanvasDetachBrush(canvas);
}
OH_Drawing_BrushDestroy(brush);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasAttachBrushOnly()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_CanvasAttachBrush(canvas, brush);
OH_Drawing_BrushDestroy(brush);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasDetachBrushOnly()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasDetachBrush(canvas);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasAttachBrushDetachBrushBoudary()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Bitmap *bitmap = OH_Drawing_BitmapCreate();
EXPECT_NE(bitmap, nullptr);
OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
constexpr uint32_t width = DRAWING_NUMBER_4096;
constexpr uint32_t height = DRAWING_NUMBER_2160;
OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
OH_Drawing_CanvasBind(canvas, bitmap);
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_CanvasAttachBrush(canvas, brush);
OH_Drawing_CanvasDetachBrush(canvas);
OH_Drawing_CanvasDestroy(canvas);
OH_Drawing_BrushDestroy(brush);
OH_Drawing_BitmapDestroy(bitmap);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasSaveNormal()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_2);
OH_Drawing_CanvasTranslate(canvas, DRAWING_NUMBER_300, DRAWING_NUMBER_300);
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_3);
OH_Drawing_Rect *rect =
OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
OH_Drawing_CanvasDrawArc(canvas, rect, DRAWING_NUMBER_10, DRAWING_NUMBER_200);
OH_Drawing_RectDestroy(rect);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasSavetestCanvasGetSaveCountNull()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_CanvasSave(nullptr);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(nullptr), 0);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasSavetestCanvasGetSaveCountMultipleCalls()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasSkew(canvas, DRAWING_NUMBER_10, DRAWING_NUMBER_20);
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_2);
OH_Drawing_CanvasScale(canvas, DRAWING_NUMBER_5, DRAWING_NUMBER_5);
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_3);
OH_Drawing_CanvasTranslate(canvas, DRAWING_NUMBER_10, DRAWING_NUMBER_20);
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_4);
OH_Drawing_CanvasRotate(canvas, DRAWING_NUMBER_10, 0, 0);
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_5);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_6 + i);
}
OH_Drawing_Rect *rect =
OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_300);
OH_Drawing_CanvasDrawArc(canvas, rect, DRAWING_NUMBER_10, DRAWING_NUMBER_200);
OH_Drawing_RectDestroy(rect);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasSavetestCanvasGetSaveCountInputDestroyed()
{
DrawingNativeCanvasTestSetUp();
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasGetSaveCountWhenNoSave()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
OH_Drawing_CanvasScale(canvas, DRAWING_NUMBER_5, DRAWING_NUMBER_5);
OH_Drawing_CanvasTranslate(canvas, DRAWING_NUMBER_10, DRAWING_NUMBER_20);
OH_Drawing_CanvasRotate(canvas, DRAWING_NUMBER_10, 0, 0);
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_2);
OH_Drawing_Rect *rect =
OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_300);
OH_Drawing_CanvasDrawArc(canvas, rect, DRAWING_NUMBER_10, DRAWING_NUMBER_200);
OH_Drawing_RectDestroy(rect);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasSaveLayerNormal()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Rect *rect =
OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_300, DRAWING_NUMBER_600);
EXPECT_NE(rect, nullptr);
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect, brush);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_2);
OH_Drawing_RectDestroy(rect);
OH_Drawing_BrushDestroy(brush);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasSaveLayerNull()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Rect *rect =
OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_300, DRAWING_NUMBER_600);
EXPECT_NE(rect, nullptr);
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_CanvasSaveLayer(nullptr, rect, brush);
OH_Drawing_Rect *rect2 = OH_Drawing_RectCreate(0, DRAWING_NUMBER_500, DRAWING_NUMBER_300, DRAWING_NUMBER_600);
EXPECT_NE(rect2, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect2, brush);
OH_Drawing_RectDestroy(rect2);
OH_Drawing_Rect *rect3 = OH_Drawing_RectCreate(DRAWING_NUMBER_200, 0, DRAWING_NUMBER_300, DRAWING_NUMBER_600);
EXPECT_NE(rect3, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect3, brush);
OH_Drawing_RectDestroy(rect3);
OH_Drawing_Rect *rect4 = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500, 0, DRAWING_NUMBER_600);
EXPECT_NE(rect4, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect4, brush);
OH_Drawing_RectDestroy(rect4);
OH_Drawing_Rect *rect5 = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_300, 0);
EXPECT_NE(rect5, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect5, brush);
OH_Drawing_RectDestroy(rect5);
OH_Drawing_Rect *rect6 = OH_Drawing_RectCreate(0, 0, 0, 0);
EXPECT_NE(rect6, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect6, brush);
OH_Drawing_RectDestroy(rect6);
OH_Drawing_CanvasSaveLayer(canvas, rect, nullptr);
OH_Drawing_RectDestroy(rect);
OH_Drawing_BrushDestroy(brush);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasSaveLayerAbnormal()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_Rect *rect =
OH_Drawing_RectCreate(-DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_300, DRAWING_NUMBER_600);
EXPECT_NE(rect, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect, brush);
rect = OH_Drawing_RectCreate(DRAWING_NUMBER_200, -DRAWING_NUMBER_500, DRAWING_NUMBER_300, DRAWING_NUMBER_600);
EXPECT_NE(rect, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect, brush);
rect = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500, -DRAWING_NUMBER_300, DRAWING_NUMBER_600);
EXPECT_NE(rect, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect, brush);
OH_Drawing_RectDestroy(rect);
rect = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_300, -DRAWING_NUMBER_600);
EXPECT_NE(rect, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect, brush);
rect = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_200, DRAWING_NUMBER_600);
EXPECT_NE(rect, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect, brush);
rect = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_300, DRAWING_NUMBER_500);
EXPECT_NE(rect, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect, brush);
rect = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_200, DRAWING_NUMBER_500);
EXPECT_NE(rect, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect, brush);
rect = OH_Drawing_RectCreate(DRAWING_NUMBER_300, DRAWING_NUMBER_600, DRAWING_NUMBER_200, DRAWING_NUMBER_500);
EXPECT_NE(rect, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect, brush);
OH_Drawing_BrushDestroy(brush);
OH_Drawing_CanvasDestroy(canvas);
OH_Drawing_RectDestroy(rect);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasSaveLayerRestore()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Rect *rect =
OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_300, DRAWING_NUMBER_600);
EXPECT_NE(rect, nullptr);
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_2);
OH_Drawing_CanvasRestore(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
OH_Drawing_CanvasDestroy(canvas);
OH_Drawing_RectDestroy(rect);
OH_Drawing_BrushDestroy(brush);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasSaveLayerMultipleCalls()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_300 + i,
DRAWING_NUMBER_600 + i);
EXPECT_NE(rect, nullptr);
OH_Drawing_CanvasSaveLayer(canvas, rect, brush);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), i + DRAWING_NUMBER_2);
OH_Drawing_RectDestroy(rect);
}
OH_Drawing_CanvasDestroy(canvas);
OH_Drawing_BrushDestroy(brush);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasRestoreNormal()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_2);
OH_Drawing_CanvasRestore(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasRestoreNull()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_2);
OH_Drawing_CanvasRestore(nullptr);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_2);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasRestoreMultipleCalls()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), i + DRAWING_NUMBER_2);
}
for (int i = 0; i < DRAWING_NUMBER_11; i++) {
OH_Drawing_CanvasRestore(canvas);
if (DRAWING_NUMBER_10 - i <= 0) {
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
} else {
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_10 - i);
}
}
OH_Drawing_CanvasSave(canvas);
OH_Drawing_CanvasRestore(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasSave(canvas);
OH_Drawing_CanvasRestore(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
}
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasRestoreBeforeSave()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasRestore(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasRestore(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
}
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasRestoreInputDestroyed()
{
DrawingNativeCanvasTestSetUp();
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasRestoreExceededSaveSavelayerTimes()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Rect *rect =
OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500, DRAWING_NUMBER_300, DRAWING_NUMBER_600);
EXPECT_NE(rect, nullptr);
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), i + DRAWING_NUMBER_2);
}
OH_Drawing_CanvasTranslate(canvas, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_CanvasScale(canvas, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_CanvasSkew(canvas, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasSaveLayer(canvas, rect, brush);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_12 + i);
}
for (int i = 0; i < DRAWING_NUMBER_20; i++) {
OH_Drawing_CanvasRestore(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_20 - i);
}
OH_Drawing_CanvasSave(canvas);
OH_Drawing_CanvasSaveLayer(canvas, rect, brush);
OH_Drawing_CanvasRestore(canvas);
OH_Drawing_CanvasRestore(canvas);
OH_Drawing_CanvasRestore(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasSave(canvas);
OH_Drawing_CanvasSaveLayer(canvas, rect, brush);
OH_Drawing_CanvasRestore(canvas);
OH_Drawing_CanvasRestore(canvas);
OH_Drawing_CanvasRestore(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
}
OH_Drawing_CanvasDestroy(canvas);
OH_Drawing_RectDestroy(rect);
OH_Drawing_BrushDestroy(brush);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasRestoreToCountNormal()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), i + DRAWING_NUMBER_2);
}
for (int i = DRAWING_NUMBER_1; i <= DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasRestoreToCount(canvas, i);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
}
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasRestoreToCountNull()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasRestoreToCount(nullptr, DRAWING_NUMBER_1);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
OH_Drawing_CanvasRestoreToCount(canvas, 0);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasRestoreToCountAbnormal()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasRestoreToCount(canvas, -DRAWING_NUMBER_1);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
OH_Drawing_CanvasRestoreToCount(canvas, DRAWING_NUMBER_1);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasRestoreToCountMaximum()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasRestoreToCount(canvas, INT32_MAX);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_1);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasRestoreToCountExceeded()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_CanvasSave(canvas);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), i + DRAWING_NUMBER_2);
}
OH_Drawing_CanvasRestoreToCount(canvas, INT32_MAX);
EXPECT_EQ(OH_Drawing_CanvasGetSaveCount(canvas), DRAWING_NUMBER_11);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasRestoreToCountInputDestroyed()
{
DrawingNativeCanvasTestSetUp();
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasDrawLineNormal()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasDrawLine(canvas, 0.0f, 0.0f, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
OH_Drawing_CanvasDrawLine(canvas, 0, 0, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasDrawLineNull()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasDrawLine(nullptr, 0, 0, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_CanvasDrawLine(canvas, 0, DRAWING_NUMBER_10, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
OH_Drawing_CanvasDrawLine(canvas, DRAWING_NUMBER_10, 0, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
OH_Drawing_CanvasDrawLine(canvas, DRAWING_NUMBER_10, DRAWING_NUMBER_10, 0, DRAWING_NUMBER_20);
OH_Drawing_CanvasDrawLine(canvas, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_20, 0);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasDrawLineAbnormal()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasDrawLine(canvas, -DRAWING_NUMBER_1, 0, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
OH_Drawing_CanvasDrawLine(canvas, 0, -DRAWING_NUMBER_1, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
OH_Drawing_CanvasDrawLine(canvas, 0, 0, -DRAWING_NUMBER_20, DRAWING_NUMBER_20);
OH_Drawing_CanvasDrawLine(canvas, 0, 0, DRAWING_NUMBER_20, -DRAWING_NUMBER_20);
OH_Drawing_CanvasDrawLine(canvas, 0, 0, DRAWING_NUMBER_20, DRAWING_NUMBER_21);
OH_Drawing_CanvasDrawLine(canvas, 0, DRAWING_NUMBER_20, DRAWING_NUMBER_21, DRAWING_NUMBER_20);
OH_Drawing_CanvasDrawLine(canvas, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_CanvasDrawLine(canvas, DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasDrawLineMaximum()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_CanvasDrawLine(canvas, FLT_MAX, 0, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
OH_Drawing_CanvasDrawLine(canvas, 0, FLT_MAX, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
OH_Drawing_CanvasDrawLine(canvas, 0, 0, FLT_MAX, DRAWING_NUMBER_20);
OH_Drawing_CanvasDrawLine(canvas, 0, 0, DRAWING_NUMBER_20, FLT_MAX);
OH_Drawing_CanvasDestroy(canvas);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasDrawLineInputDestroyed()
{
DrawingNativeCanvasTestSetUp();
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasDrawPathNormal()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Path *path = OH_Drawing_PathCreate();
EXPECT_NE(path, nullptr);
OH_Drawing_PathMoveTo(path, DRAWING_NUMBER_50, DRAWING_NUMBER_50);
OH_Drawing_PathLineTo(path, DRAWING_NUMBER_100, DRAWING_NUMBER_50);
OH_Drawing_CanvasDrawPath(canvas, path);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
OH_Drawing_CanvasDestroy(canvas);
OH_Drawing_PathDestroy(path);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasDrawPathNull()
{
DrawingNativeCanvasTestSetUp();
OH_Drawing_Canvas *canvas = OH_Drawing_CanvasCreate();
EXPECT_NE(canvas, nullptr);
OH_Drawing_Path *path = OH_Drawing_PathCreate();
EXPECT_NE(path, nullptr);
OH_Drawing_CanvasDrawPath(nullptr, path);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_ErrorCodeReset();
OH_Drawing_CanvasDrawPath(canvas, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_CanvasDrawPath(canvas, path);
OH_Drawing_CanvasDestroy(canvas);
OH_Drawing_PathDestroy(path);
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestCanvasDrawPathInputDestroyed()
{
DrawingNativeCanvasTestSetUp();
DrawingNativeCanvasTestTearDown();
return OH_DRAWING_SUCCESS;
}
}
}
}