* 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/DrawingNativeRegionTest.h"
#include "include/OhosCommonTest.h"
#define DRAWING_NUMBER_10 10
#define DRAWING_NUMBER_100 100
#define DRAWING_NUMBER_150 150
#define DRAWING_NUMBER_180 180
#define DRAWING_NUMBER_200 200
#define DRAWING_NUMBER_256 256
#define DRAWING_NUMBER_299 299
#define DRAWING_NUMBER_300 300
#define DRAWING_NUMBER_400 400
#define DRAWING_NUMBER_401 401
#define DRAWING_NUMBER_500 500
#define DRAWING_NUMBER_600 600
#define DRAWING_NUMBER_700 700
#define DRAWING_NUMBER_0X7FFFFFFF 0x7FFFFFFF
namespace OHOS {
namespace Rosen {
namespace Drawing {
void DrawingNativeRegionTestSetUp()
{
std::cout << "DrawingNativeRegionTest Setup code called before each test case." << std::endl;
OH_Drawing_ErrorCodeReset();
std::cout << "DrawingNativeRegionTest errorCodeReset before each test case." << std::endl;
}
void DrawingNativeRegionTestTearDown()
{
std::cout << "DrawingNativeRegionTest Setup code called after each test case." << std::endl;
OH_Drawing_ErrorCodeReset();
std::cout << "DrawingNativeRegionTest errorCodeReset after each test case." << std::endl;
}
int TestRegionCreateNormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionCreateMoreTimes()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Region *region2 = OH_Drawing_RegionCreate();
EXPECT_NE(region2, nullptr);
OH_Drawing_RegionDestroy(region);
OH_Drawing_RegionDestroy(region2);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionDestroyNormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *regionObject = OH_Drawing_RegionCreate();
EXPECT_NE(regionObject, nullptr);
OH_Drawing_RegionDestroy(regionObject);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionDestroyNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = nullptr;
OH_Drawing_RegionDestroy(nullptr);
EXPECT_EQ(region, nullptr);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionContainsInRange()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *regionObject = OH_Drawing_RegionCreate();
EXPECT_NE(regionObject, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_256, DRAWING_NUMBER_256);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(regionObject, rect);
bool ret = OH_Drawing_RegionContains(regionObject, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_EQ(ret, true);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RegionDestroy(regionObject);
OH_Drawing_RectDestroy(rect);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionContainsXvalueNotInRange()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *regionObject = OH_Drawing_RegionCreate();
EXPECT_NE(regionObject, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_256, DRAWING_NUMBER_256);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(regionObject, rect);
bool ret = OH_Drawing_RegionContains(regionObject, DRAWING_NUMBER_300, DRAWING_NUMBER_100);
EXPECT_EQ(ret, false);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RegionDestroy(regionObject);
OH_Drawing_RectDestroy(rect);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionContainsYvalueNotInRange()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *regionObject = OH_Drawing_RegionCreate();
EXPECT_NE(regionObject, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_256, DRAWING_NUMBER_256);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(regionObject, rect);
bool ret = OH_Drawing_RegionContains(regionObject, DRAWING_NUMBER_100, DRAWING_NUMBER_300);
EXPECT_EQ(ret, false);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RegionDestroy(regionObject);
OH_Drawing_RectDestroy(rect);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionContainsAllNotInRange()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *regionObject = OH_Drawing_RegionCreate();
EXPECT_NE(regionObject, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_256, DRAWING_NUMBER_256);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(regionObject, rect);
bool ret = OH_Drawing_RegionContains(regionObject, DRAWING_NUMBER_300, DRAWING_NUMBER_300);
EXPECT_EQ(ret, false);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RegionDestroy(regionObject);
OH_Drawing_RectDestroy(rect);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionContainsRegionNull()
{
DrawingNativeRegionTestSetUp();
bool ret = OH_Drawing_RegionContains(nullptr, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(ret, false);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionOpNormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *regionObject = OH_Drawing_RegionCreate();
EXPECT_NE(regionObject, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_256, DRAWING_NUMBER_256);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(regionObject, rect);
OH_Drawing_Region *dst = OH_Drawing_RegionCreate();
EXPECT_NE(dst, nullptr);
OH_Drawing_RegionSetRect(dst, rect);
OH_Drawing_RegionOpMode modes[] = {
REGION_OP_MODE_DIFFERENCE, REGION_OP_MODE_INTERSECT, REGION_OP_MODE_UNION,
REGION_OP_MODE_XOR, REGION_OP_MODE_REVERSE_DIFFERENCE, REGION_OP_MODE_REPLACE,
};
for (OH_Drawing_RegionOpMode mode : modes) {
OH_Drawing_ErrorCodeReset();
OH_Drawing_RegionOp(regionObject, dst, mode);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
}
OH_Drawing_RegionDestroy(regionObject);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(dst);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionOpRegionNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *src = OH_Drawing_RegionCreate();
EXPECT_NE(src, nullptr);
OH_Drawing_Region *dst = OH_Drawing_RegionCreate();
EXPECT_NE(dst, nullptr);
bool ret = OH_Drawing_RegionOp(nullptr, dst, REGION_OP_MODE_DIFFERENCE);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(ret, false);
ret = OH_Drawing_RegionOp(src, nullptr, REGION_OP_MODE_DIFFERENCE);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(ret, false);
OH_Drawing_RegionDestroy(src);
OH_Drawing_RegionDestroy(dst);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionOpMultipleCalls()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *src = OH_Drawing_RegionCreate();
EXPECT_NE(src, nullptr);
OH_Drawing_Rect *rect_1 = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_200, DRAWING_NUMBER_200);
EXPECT_NE(rect_1, nullptr);
OH_Drawing_RegionSetRect(src, rect_1);
OH_Drawing_Region *dst = OH_Drawing_RegionCreate();
EXPECT_NE(dst, nullptr);
OH_Drawing_Rect *rect_2 = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect_2, nullptr);
OH_Drawing_RegionSetRect(dst, rect_2);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
bool ret = OH_Drawing_RegionOp(src, dst, REGION_OP_MODE_INTERSECT);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
EXPECT_EQ(ret, true);
}
OH_Drawing_RectDestroy(rect_1);
OH_Drawing_RectDestroy(rect_2);
OH_Drawing_RegionDestroy(src);
OH_Drawing_RegionDestroy(dst);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionSetRectResultTrue()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_256, DRAWING_NUMBER_256);
EXPECT_NE(rect, nullptr);
bool ret = OH_Drawing_RegionSetRect(region, rect);
EXPECT_EQ(ret, true);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionSetRectRegionNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_256, DRAWING_NUMBER_256);
EXPECT_NE(rect, nullptr);
bool ret = OH_Drawing_RegionSetRect(nullptr, rect);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(ret, false);
OH_Drawing_RectDestroy(rect);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionSetRectRectNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
bool ret = OH_Drawing_RegionSetRect(region, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(ret, false);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionSetRectResultFalse()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 0, 0);
EXPECT_NE(rect, nullptr);
bool ret = OH_Drawing_RegionSetRect(region, rect);
EXPECT_EQ(ret, false);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionSetPathResultTrue()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Path *path = OH_Drawing_PathCreate();
EXPECT_NE(path, nullptr);
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Region *clip = OH_Drawing_RegionCreate();
EXPECT_NE(clip, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_150, DRAWING_NUMBER_180, DRAWING_NUMBER_200,
DRAWING_NUMBER_200);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(clip, rect);
OH_Drawing_PathAddRect(path, DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_256, DRAWING_NUMBER_256,
OH_Drawing_PathDirection::PATH_DIRECTION_CW);
bool ret = OH_Drawing_RegionSetPath(region, path, clip);
EXPECT_EQ(ret, true);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_PathDestroy(path);
OH_Drawing_RegionDestroy(region);
OH_Drawing_RegionDestroy(clip);
OH_Drawing_RectDestroy(rect);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionSetPathRegionNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Path *path = OH_Drawing_PathCreate();
EXPECT_NE(path, nullptr);
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Region *clip = OH_Drawing_RegionCreate();
EXPECT_NE(clip, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_150, DRAWING_NUMBER_180, DRAWING_NUMBER_200,
DRAWING_NUMBER_200);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(clip, rect);
bool ret = OH_Drawing_RegionSetPath(nullptr, path, clip);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(ret, false);
ret = OH_Drawing_RegionSetPath(region, nullptr, clip);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(ret, false);
ret = OH_Drawing_RegionSetPath(region, path, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(ret, false);
OH_Drawing_PathDestroy(path);
OH_Drawing_RegionDestroy(region);
OH_Drawing_RegionDestroy(clip);
OH_Drawing_RectDestroy(rect);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionSetPathResultFalse()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Path *path = OH_Drawing_PathCreate();
EXPECT_NE(path, nullptr);
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Region *clip = OH_Drawing_RegionCreate();
EXPECT_NE(clip, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, 0, 0);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(clip, rect);
bool ret = OH_Drawing_RegionSetPath(region, path, clip);
EXPECT_EQ(ret, false);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_PathDestroy(path);
OH_Drawing_RegionDestroy(region);
OH_Drawing_RegionDestroy(clip);
OH_Drawing_RectDestroy(rect);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionCopyNormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region1 = OH_Drawing_RegionCreate();
EXPECT_NE(region1, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_200, DRAWING_NUMBER_200);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region1, rect);
OH_Drawing_Region *region2 = OH_Drawing_RegionCopy(region1);
EXPECT_NE(region2, nullptr);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region1);
OH_Drawing_RegionDestroy(region2);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionCopyNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region1 = OH_Drawing_RegionCreate();
EXPECT_NE(region1, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_200, DRAWING_NUMBER_200);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region1, rect);
OH_Drawing_Region *region2 = OH_Drawing_RegionCopy(nullptr);
EXPECT_EQ(region2, nullptr);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region1);
OH_Drawing_RegionDestroy(region2);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionCopyAbnormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region1 = OH_Drawing_RegionCreate();
EXPECT_NE(region1, nullptr);
OH_Drawing_Rect *rect_1 = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_200, 0);
EXPECT_NE(rect_1, nullptr);
OH_Drawing_RegionSetRect(region1, rect_1);
OH_Drawing_Region *region2 = OH_Drawing_RegionCopy(region1);
EXPECT_NE(region2, nullptr);
OH_Drawing_Rect *rect_2 = OH_Drawing_RectCreate(0, 0, 0, DRAWING_NUMBER_200);
EXPECT_NE(rect_2, nullptr);
OH_Drawing_RegionSetRect(region1, rect_2);
region2 = OH_Drawing_RegionCopy(region1);
EXPECT_NE(region2, nullptr);
OH_Drawing_Rect *rect_3 = OH_Drawing_RectCreate(0, 0, 0, 0);
EXPECT_NE(rect_3, nullptr);
OH_Drawing_RegionSetRect(region1, rect_3);
region2 = OH_Drawing_RegionCopy(region1);
EXPECT_NE(region2, nullptr);
OH_Drawing_Rect *rect_4 = OH_Drawing_RectCreate(DRAWING_NUMBER_400, DRAWING_NUMBER_400, DRAWING_NUMBER_200,
DRAWING_NUMBER_200);
EXPECT_NE(rect_4, nullptr);
OH_Drawing_RegionSetRect(region1, rect_4);
region2 = OH_Drawing_RegionCopy(region1);
EXPECT_NE(region2, nullptr);
OH_Drawing_RectDestroy(rect_1);
OH_Drawing_RectDestroy(rect_2);
OH_Drawing_RectDestroy(rect_3);
OH_Drawing_RectDestroy(rect_4);
OH_Drawing_RegionDestroy(region1);
OH_Drawing_RegionDestroy(region2);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionCopyMultipleCalls()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region1 = OH_Drawing_RegionCreate();
EXPECT_NE(region1, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_200, DRAWING_NUMBER_200);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region1, rect);
OH_Drawing_Region *region2 = OH_Drawing_RegionCreate();
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
region2 = OH_Drawing_RegionCopy(region1);
EXPECT_NE(region2, nullptr);
}
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region1);
OH_Drawing_RegionDestroy(region2);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionEmptyNormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
OH_Drawing_ErrorCode code = OH_Drawing_RegionEmpty(region);
EXPECT_EQ(code, OH_DRAWING_SUCCESS);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionEmptyNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
OH_Drawing_ErrorCode code = OH_Drawing_RegionEmpty(nullptr);
EXPECT_EQ(code, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionEmptyCalls()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_ErrorCode code = OH_Drawing_RegionEmpty(region);
EXPECT_EQ(code, OH_DRAWING_SUCCESS);
}
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionGetBoundaryNormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
OH_Drawing_Path *path = OH_Drawing_PathCreate();
EXPECT_NE(path, nullptr);
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionGetBoundaryPath(region, path);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
bool isEmpty = false;
OH_Drawing_PathIsEmpty(path, &isEmpty);
EXPECT_EQ(isEmpty, true);
OH_Drawing_RegionSetRect(region, rect);
errorCode = OH_Drawing_RegionGetBoundaryPath(region, path);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
OH_Drawing_PathIsEmpty(path, &isEmpty);
EXPECT_EQ(isEmpty, false);
bool ret = OH_Drawing_PathContains(path, 300.1f, DRAWING_NUMBER_200);
EXPECT_EQ(ret, false);
ret = OH_Drawing_PathContains(path, DRAWING_NUMBER_200, 300.1f);
EXPECT_EQ(ret, false);
ret = OH_Drawing_PathContains(path, 299.99f, 299.99f);
EXPECT_EQ(ret, true);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
OH_Drawing_PathDestroy(path);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionGetBoundaryNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Path *path = OH_Drawing_PathCreate();
EXPECT_NE(path, nullptr);
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionGetBoundaryPath(nullptr, path);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
bool isEmpty = false;
OH_Drawing_PathIsEmpty(path, &isEmpty);
EXPECT_EQ(isEmpty, true);
errorCode = OH_Drawing_RegionGetBoundaryPath(region, nullptr);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
OH_Drawing_PathIsEmpty(path, &isEmpty);
EXPECT_EQ(isEmpty, true);
OH_Drawing_RegionDestroy(region);
OH_Drawing_PathDestroy(path);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionGetBoundaryMultipleCalls()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Path *path = OH_Drawing_PathCreate();
EXPECT_NE(path, nullptr);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionGetBoundaryPath(region, path);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
bool isEmpty = false;
OH_Drawing_PathIsEmpty(path, &isEmpty);
EXPECT_EQ(isEmpty, true);
}
OH_Drawing_RegionDestroy(region);
OH_Drawing_PathDestroy(path);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionGetBoundsNormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region1 = OH_Drawing_RegionCreate();
EXPECT_NE(region1, nullptr);
OH_Drawing_Region *region2 = OH_Drawing_RegionCreate();
EXPECT_NE(region2, nullptr);
OH_Drawing_Rect *rect_1 = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect_1, nullptr);
OH_Drawing_Rect *rect_2 = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_200, DRAWING_NUMBER_400,
DRAWING_NUMBER_400);
EXPECT_NE(rect_2, nullptr);
OH_Drawing_RegionSetRect(region1, rect_1);
OH_Drawing_RegionSetRect(region2, rect_2);
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionGetBounds(region1, rect_1);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(OH_Drawing_RectGetLeft(rect_1), DRAWING_NUMBER_100);
EXPECT_EQ(OH_Drawing_RectGetTop(rect_1), DRAWING_NUMBER_100);
EXPECT_EQ(OH_Drawing_RectGetRight(rect_1), DRAWING_NUMBER_300);
EXPECT_EQ(OH_Drawing_RectGetBottom(rect_1), DRAWING_NUMBER_300);
OH_Drawing_RegionOp(region1, region2, OH_Drawing_RegionOpMode::REGION_OP_MODE_UNION);
errorCode = OH_Drawing_RegionGetBounds(region1, rect_1);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(OH_Drawing_RectGetLeft(rect_1), DRAWING_NUMBER_100);
EXPECT_EQ(OH_Drawing_RectGetTop(rect_1), DRAWING_NUMBER_100);
EXPECT_EQ(OH_Drawing_RectGetRight(rect_1), DRAWING_NUMBER_400);
EXPECT_EQ(OH_Drawing_RectGetBottom(rect_1), DRAWING_NUMBER_400);
OH_Drawing_RectDestroy(rect_1);
OH_Drawing_RectDestroy(rect_2);
OH_Drawing_RegionDestroy(region1);
OH_Drawing_RegionDestroy(region2);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionGetBoundsNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionGetBounds(nullptr, rect);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
errorCode = OH_Drawing_RegionGetBounds(region, nullptr);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionGetBoundsMultipleCalls()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionGetBounds(region, rect);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(OH_Drawing_RectGetLeft(rect), DRAWING_NUMBER_100);
EXPECT_EQ(OH_Drawing_RectGetTop(rect), DRAWING_NUMBER_100);
EXPECT_EQ(OH_Drawing_RectGetRight(rect), DRAWING_NUMBER_300);
EXPECT_EQ(OH_Drawing_RectGetBottom(rect), DRAWING_NUMBER_300);
}
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionIsComplexNormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region1 = OH_Drawing_RegionCreate();
EXPECT_NE(region1, nullptr);
OH_Drawing_Region *region2 = OH_Drawing_RegionCreate();
EXPECT_NE(region2, nullptr);
OH_Drawing_Rect *rect_1 = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect_1, nullptr);
OH_Drawing_Rect *rect_2 = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_200, DRAWING_NUMBER_400,
DRAWING_NUMBER_400);
EXPECT_NE(rect_2, nullptr);
OH_Drawing_RegionSetRect(region1, rect_1);
OH_Drawing_RegionSetRect(region2, rect_2);
bool isComplex = false;
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionIsComplex(region1, &isComplex);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isComplex, false);
OH_Drawing_RegionOp(region1, region2, OH_Drawing_RegionOpMode::REGION_OP_MODE_UNION);
errorCode = OH_Drawing_RegionIsComplex(region1, &isComplex);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isComplex, true);
OH_Drawing_RectDestroy(rect_1);
OH_Drawing_RectDestroy(rect_2);
OH_Drawing_RegionDestroy(region1);
OH_Drawing_RegionDestroy(region2);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionIsComplexNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
bool isComplex = false;
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionIsComplex(nullptr, &isComplex);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
EXPECT_EQ(isComplex, false);
errorCode = OH_Drawing_RegionIsComplex(region, nullptr);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
EXPECT_EQ(isComplex, false);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionIsComplexMultipleCalls()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region1 = OH_Drawing_RegionCreate();
EXPECT_NE(region1, nullptr);
OH_Drawing_Region *region2 = OH_Drawing_RegionCreate();
EXPECT_NE(region2, nullptr);
OH_Drawing_Rect *rect_1 = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect_1, nullptr);
OH_Drawing_Rect *rect_2 = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_200, DRAWING_NUMBER_400,
DRAWING_NUMBER_400);
EXPECT_NE(rect_2, nullptr);
OH_Drawing_RegionSetRect(region1, rect_1);
OH_Drawing_RegionSetRect(region2, rect_2);
bool isComplex = false;
OH_Drawing_RegionOp(region1, region2, OH_Drawing_RegionOpMode::REGION_OP_MODE_UNION);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionIsComplex(region1, &isComplex);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isComplex, true);
}
OH_Drawing_RectDestroy(rect_1);
OH_Drawing_RectDestroy(rect_2);
OH_Drawing_RegionDestroy(region1);
OH_Drawing_RegionDestroy(region2);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionIsEmptyNormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
bool isEmpty = false;
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionIsEmpty(region, &isEmpty);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isEmpty, true);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
errorCode = OH_Drawing_RegionIsEmpty(region, &isEmpty);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isEmpty, false);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionIsEmptyNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
bool isEmpty = false;
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionIsEmpty(nullptr, &isEmpty);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
EXPECT_EQ(isEmpty, false);
errorCode = OH_Drawing_RegionIsEmpty(region, nullptr);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
EXPECT_EQ(isEmpty, false);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionIsEmptyMultipleCalls()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
bool isEmpty = false;
OH_Drawing_RegionSetRect(region, rect);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionIsEmpty(region, &isEmpty);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isEmpty, false);
}
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionIsRectNormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region1 = OH_Drawing_RegionCreate();
EXPECT_NE(region1, nullptr);
OH_Drawing_Region *region2 = OH_Drawing_RegionCreate();
EXPECT_NE(region2, nullptr);
OH_Drawing_Rect *rect_1 = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect_1, nullptr);
OH_Drawing_Rect *rect_2 = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_200, DRAWING_NUMBER_400,
DRAWING_NUMBER_400);
EXPECT_NE(rect_2, nullptr);
OH_Drawing_RegionSetRect(region1, rect_1);
OH_Drawing_RegionSetRect(region2, rect_2);
bool isRect = false;
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionIsRect(region1, &isRect);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isRect, true);
OH_Drawing_RegionOp(region1, region2, OH_Drawing_RegionOpMode::REGION_OP_MODE_UNION);
errorCode = OH_Drawing_RegionIsRect(region1, &isRect);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isRect, false);
OH_Drawing_RectDestroy(rect_1);
OH_Drawing_RectDestroy(rect_2);
OH_Drawing_RegionDestroy(region1);
OH_Drawing_RegionDestroy(region2);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionIsRectNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
bool isRect = false;
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionIsRect(nullptr, &isRect);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
EXPECT_EQ(isRect, false);
errorCode = OH_Drawing_RegionIsRect(region, nullptr);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
EXPECT_EQ(isRect, false);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionIsRectMultipleCalls()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
bool isRect = false;
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionIsRect(region, &isRect);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isRect, false);
}
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionQuickContainsNormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_500,
DRAWING_NUMBER_500);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
bool isContains = false;
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionQuickContains(region, DRAWING_NUMBER_200, DRAWING_NUMBER_200,
DRAWING_NUMBER_400, DRAWING_NUMBER_400, &isContains);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isContains, true);
errorCode = OH_Drawing_RegionQuickContains(region, DRAWING_NUMBER_200, DRAWING_NUMBER_200, DRAWING_NUMBER_600,
DRAWING_NUMBER_600, &isContains);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isContains, false);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionQuickContainsNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_500,
DRAWING_NUMBER_500);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
bool isContains = false;
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionQuickContains(nullptr, DRAWING_NUMBER_200, DRAWING_NUMBER_200,
DRAWING_NUMBER_400, DRAWING_NUMBER_400, &isContains);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
EXPECT_EQ(isContains, false);
errorCode = OH_Drawing_RegionQuickContains(region, 0, DRAWING_NUMBER_200, DRAWING_NUMBER_400, DRAWING_NUMBER_400,
&isContains);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isContains, false);
errorCode = OH_Drawing_RegionQuickContains(region, DRAWING_NUMBER_200, 0, DRAWING_NUMBER_400, DRAWING_NUMBER_400,
&isContains);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isContains, false);
errorCode = OH_Drawing_RegionQuickContains(region, DRAWING_NUMBER_200, DRAWING_NUMBER_200, 0, DRAWING_NUMBER_400,
&isContains);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isContains, false);
errorCode = OH_Drawing_RegionQuickContains(region, DRAWING_NUMBER_200, DRAWING_NUMBER_200, DRAWING_NUMBER_400, 0,
&isContains);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isContains, false);
errorCode = OH_Drawing_RegionQuickContains(region, DRAWING_NUMBER_200, DRAWING_NUMBER_200, DRAWING_NUMBER_400,
DRAWING_NUMBER_400, nullptr);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
EXPECT_EQ(isContains, false);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionQuickContainsAbnormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_500,
DRAWING_NUMBER_500);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
bool isContains = false;
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionQuickContains(region, -DRAWING_NUMBER_100, DRAWING_NUMBER_100,
DRAWING_NUMBER_100, DRAWING_NUMBER_100, &isContains);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isContains, false);
errorCode = OH_Drawing_RegionQuickContains(region, DRAWING_NUMBER_0X7FFFFFFF, DRAWING_NUMBER_0X7FFFFFFF,
DRAWING_NUMBER_0X7FFFFFFF, DRAWING_NUMBER_0X7FFFFFFF, &isContains);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isContains, false);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionQuickContainsMultipleCalls()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_500,
DRAWING_NUMBER_500);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
bool isContains = false;
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionQuickContains(region, DRAWING_NUMBER_200, DRAWING_NUMBER_200,
DRAWING_NUMBER_400, DRAWING_NUMBER_400, &isContains);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isContains, true);
}
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionQuickRejectNormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
bool isReject = false;
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionQuickReject(region, 0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100,
&isReject);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isReject, true);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_200, DRAWING_NUMBER_400,
DRAWING_NUMBER_400);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
errorCode = OH_Drawing_RegionQuickReject(region, DRAWING_NUMBER_300, DRAWING_NUMBER_300, DRAWING_NUMBER_500,
DRAWING_NUMBER_500, &isReject);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isReject, false);
errorCode = OH_Drawing_RegionQuickReject(region, DRAWING_NUMBER_500, DRAWING_NUMBER_500, DRAWING_NUMBER_700,
DRAWING_NUMBER_700, &isReject);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isReject, true);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionQuickRejectNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_200, DRAWING_NUMBER_400,
DRAWING_NUMBER_400);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
bool isReject = false;
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionQuickReject(nullptr, DRAWING_NUMBER_300, DRAWING_NUMBER_300,
DRAWING_NUMBER_500, DRAWING_NUMBER_500, &isReject);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
EXPECT_EQ(isReject, false);
errorCode = OH_Drawing_RegionQuickReject(region, 0, DRAWING_NUMBER_300, DRAWING_NUMBER_500, DRAWING_NUMBER_500,
&isReject);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isReject, false);
errorCode = OH_Drawing_RegionQuickReject(region, DRAWING_NUMBER_300, 0, DRAWING_NUMBER_500, DRAWING_NUMBER_500,
&isReject);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isReject, false);
errorCode = OH_Drawing_RegionQuickReject(region, DRAWING_NUMBER_300, DRAWING_NUMBER_300, 0, DRAWING_NUMBER_500,
&isReject);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isReject, true);
errorCode = OH_Drawing_RegionQuickReject(region, DRAWING_NUMBER_300, DRAWING_NUMBER_300, DRAWING_NUMBER_500, 0,
&isReject);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isReject, true);
errorCode = OH_Drawing_RegionQuickReject(region, DRAWING_NUMBER_300, DRAWING_NUMBER_300, DRAWING_NUMBER_500, 0,
nullptr);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
EXPECT_EQ(isReject, true);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionQuickRejectAbnormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_200, DRAWING_NUMBER_400,
DRAWING_NUMBER_400);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
bool isReject = false;
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionQuickReject(region, -DRAWING_NUMBER_100, -DRAWING_NUMBER_100,
DRAWING_NUMBER_100, DRAWING_NUMBER_100, &isReject);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isReject, true);
errorCode = OH_Drawing_RegionQuickReject(region, DRAWING_NUMBER_0X7FFFFFFF, DRAWING_NUMBER_0X7FFFFFFF,
DRAWING_NUMBER_0X7FFFFFFF, DRAWING_NUMBER_0X7FFFFFFF, &isReject);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isReject, true);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionQuickRejectMultipleCalls()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_200, DRAWING_NUMBER_400,
DRAWING_NUMBER_400);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
bool isReject = false;
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionQuickReject(region, DRAWING_NUMBER_500, DRAWING_NUMBER_500,
DRAWING_NUMBER_700, DRAWING_NUMBER_700, &isReject);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(isReject, true);
}
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionTranslateNormal()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionTranslate(region, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
bool ret = OH_Drawing_RegionContains(region, DRAWING_NUMBER_300, DRAWING_NUMBER_300);
EXPECT_EQ(ret, true);
ret = OH_Drawing_RegionContains(region, DRAWING_NUMBER_401, DRAWING_NUMBER_401);
EXPECT_EQ(ret, false);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionTranslateNull()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionTranslate(nullptr, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INCORRECT_PARAMETER);
errorCode = OH_Drawing_RegionTranslate(region, 0, DRAWING_NUMBER_100);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
errorCode = OH_Drawing_RegionTranslate(region, DRAWING_NUMBER_100, 0);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRegionTranslateMultipleCalls()
{
DrawingNativeRegionTestSetUp();
OH_Drawing_Region *region = OH_Drawing_RegionCreate();
EXPECT_NE(region, nullptr);
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_100, DRAWING_NUMBER_300,
DRAWING_NUMBER_300);
EXPECT_NE(rect, nullptr);
OH_Drawing_RegionSetRect(region, rect);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_ErrorCode errorCode = OH_Drawing_RegionTranslate(region, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
}
OH_Drawing_RectDestroy(rect);
OH_Drawing_RegionDestroy(region);
DrawingNativeRegionTestTearDown();
return OH_DRAWING_SUCCESS;
}
}
}
}