* 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/DrawingNativeRoundRectTest.h"
#include <cfloat>
#include <random>
#include "include/DrawingNativeScalarCommonTest.h"
#include "include/OhosCommonTest.h"
#define DRAWING_NUMBER_1 1
#define DRAWING_NUMBER_3 3
#define DRAWING_NUMBER_10 10
#define DRAWING_NUMBER_20 20
#define DRAWING_NUMBER_100 100
#define DRAWING_NUMBER_19937 19937
namespace OHOS {
namespace Rosen {
namespace Drawing {
void DrawingNativeRoundRectTestSetUp()
{
std::cout << "DrawingNativeRoundRectTest Setup code called before each test case." << std::endl;
OH_Drawing_ErrorCodeReset();
std::cout << "DrawingNativeRoundRectTest errorCodeReset before each test case." << std::endl;
}
void DrawingNativeRoundRectTestTearDown()
{
std::cout << "DrawingNativeRoundRectTest Setup code called after each test case." << std::endl;
OH_Drawing_ErrorCodeReset();
std::cout << "DrawingNativeRoundRectTest errorCodeReset after each test case." << std::endl;
}
int TestRoundRectCreateNormal()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RoundRectDestroy(roundRect);
OH_Drawing_RectDestroy(rect);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectCreateNull()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(nullptr, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_RoundRect *roundRect2 = OH_Drawing_RoundRectCreate(rect, 0, DRAWING_NUMBER_20);
EXPECT_NE(roundRect2, nullptr);
OH_Drawing_RoundRect *roundRect3 = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, 0);
EXPECT_NE(roundRect3, nullptr);
OH_Drawing_RoundRectDestroy(roundRect);
OH_Drawing_RoundRectDestroy(roundRect2);
OH_Drawing_RoundRectDestroy(roundRect3);
OH_Drawing_RectDestroy(rect);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectCreateAbnormal()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, -DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RoundRect *roundRect2 = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, -DRAWING_NUMBER_20);
EXPECT_NE(roundRect2, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RoundRectDestroy(roundRect);
OH_Drawing_RoundRectDestroy(roundRect2);
OH_Drawing_RectDestroy(rect);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectCreateMaximum()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, FLT_MAX, DRAWING_NUMBER_20);
EXPECT_NE(roundRect, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RoundRect *roundRect2 = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, FLT_MAX);
EXPECT_NE(roundRect2, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RoundRectDestroy(roundRect);
OH_Drawing_RoundRectDestroy(roundRect2);
OH_Drawing_RectDestroy(rect);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectCreateMultipleCalls()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RoundRectDestroy(roundRect);
}
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectSetGetCornerNormal()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect, nullptr);
OH_Drawing_CornerPos posArray[] = {
CORNER_POS_TOP_LEFT,
CORNER_POS_TOP_RIGHT,
CORNER_POS_BOTTOM_RIGHT,
CORNER_POS_BOTTOM_LEFT,
};
for (OH_Drawing_CornerPos pos : posArray) {
OH_Drawing_RoundRectSetCorner(roundRect, pos, {DRAWING_NUMBER_10, DRAWING_NUMBER_10});
OH_Drawing_Corner_Radii radii = OH_Drawing_RoundRectGetCorner(roundRect, pos);
EXPECT_EQ(IsScalarAlmostEqual(radii.x, DRAWING_NUMBER_10), true);
EXPECT_EQ(IsScalarAlmostEqual(radii.y, DRAWING_NUMBER_10), true);
}
OH_Drawing_RoundRectSetCorner(roundRect, CORNER_POS_TOP_LEFT, {DRAWING_NUMBER_10, DRAWING_NUMBER_10});
OH_Drawing_Corner_Radii radii = OH_Drawing_RoundRectGetCorner(roundRect, CORNER_POS_TOP_LEFT);
EXPECT_EQ(IsScalarAlmostEqual(radii.x, DRAWING_NUMBER_10), true);
EXPECT_EQ(IsScalarAlmostEqual(radii.y, DRAWING_NUMBER_10), true);
OH_Drawing_RoundRectSetCorner(roundRect, CORNER_POS_TOP_LEFT, {10.1f, 10.1f});
OH_Drawing_Corner_Radii radiiDRAWING_NUMBER_2 = OH_Drawing_RoundRectGetCorner(roundRect, CORNER_POS_TOP_LEFT);
EXPECT_EQ(IsScalarAlmostEqual(radiiDRAWING_NUMBER_2.x, 10.1f), true);
EXPECT_EQ(IsScalarAlmostEqual(radiiDRAWING_NUMBER_2.y, 10.1f), true);
OH_Drawing_RoundRectDestroy(roundRect);
OH_Drawing_RectDestroy(rect);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectSetGetCornerNull()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect, nullptr);
OH_Drawing_RoundRectSetCorner(nullptr, CORNER_POS_TOP_LEFT, {DRAWING_NUMBER_10, DRAWING_NUMBER_10});
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_ErrorCodeReset();
OH_Drawing_RoundRectSetCorner(roundRect, CORNER_POS_TOP_LEFT, {0, 0});
OH_Drawing_RoundRectGetCorner(nullptr, CORNER_POS_TOP_LEFT);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_RoundRectDestroy(roundRect);
OH_Drawing_RectDestroy(rect);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectSetGetCornerAbnormal()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect, nullptr);
OH_Drawing_RoundRectSetCorner(roundRect, CORNER_POS_TOP_LEFT, {-DRAWING_NUMBER_10, DRAWING_NUMBER_10});
OH_Drawing_Corner_Radii radii = OH_Drawing_RoundRectGetCorner(roundRect, CORNER_POS_TOP_LEFT);
EXPECT_EQ(IsScalarAlmostEqual(radii.x, -DRAWING_NUMBER_10), true);
EXPECT_EQ(IsScalarAlmostEqual(radii.y, DRAWING_NUMBER_10), true);
OH_Drawing_RoundRectSetCorner(roundRect, CORNER_POS_TOP_LEFT, {DRAWING_NUMBER_10, -DRAWING_NUMBER_10});
OH_Drawing_Corner_Radii radiiDRAWING_NUMBER_2 = OH_Drawing_RoundRectGetCorner(roundRect, CORNER_POS_TOP_LEFT);
EXPECT_EQ(IsScalarAlmostEqual(radiiDRAWING_NUMBER_2.x, DRAWING_NUMBER_10), true);
EXPECT_EQ(IsScalarAlmostEqual(radiiDRAWING_NUMBER_2.y, -DRAWING_NUMBER_10), true);
OH_Drawing_RoundRectDestroy(roundRect);
OH_Drawing_RectDestroy(rect);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectSetGetCornerMaximum()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect, nullptr);
OH_Drawing_RoundRectSetCorner(roundRect, CORNER_POS_TOP_LEFT, {FLT_MAX, DRAWING_NUMBER_10});
OH_Drawing_Corner_Radii radii = OH_Drawing_RoundRectGetCorner(roundRect, CORNER_POS_TOP_LEFT);
EXPECT_EQ(IsScalarAlmostEqual(radii.x, FLT_MAX), true);
EXPECT_EQ(IsScalarAlmostEqual(radii.y, DRAWING_NUMBER_10), true);
OH_Drawing_RoundRectSetCorner(roundRect, CORNER_POS_TOP_LEFT, {DRAWING_NUMBER_10, FLT_MAX});
OH_Drawing_Corner_Radii radiiDRAWING_NUMBER_2 = OH_Drawing_RoundRectGetCorner(roundRect, CORNER_POS_TOP_LEFT);
EXPECT_EQ(IsScalarAlmostEqual(radiiDRAWING_NUMBER_2.x, DRAWING_NUMBER_10), true);
EXPECT_EQ(IsScalarAlmostEqual(radiiDRAWING_NUMBER_2.y, FLT_MAX), true);
OH_Drawing_RoundRectDestroy(roundRect);
OH_Drawing_RectDestroy(rect);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectSetGetCornerMultipleCalls()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect, nullptr);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0, DRAWING_NUMBER_100);
std::uniform_int_distribution<int> dis2(0, DRAWING_NUMBER_3);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
float x = dis(gen);
float y = dis(gen);
OH_Drawing_CornerPos pos = static_cast<OH_Drawing_CornerPos>(dis2(gen));
OH_Drawing_RoundRectSetCorner(roundRect, pos, {x, y});
OH_Drawing_Corner_Radii radii = OH_Drawing_RoundRectGetCorner(roundRect, pos);
EXPECT_EQ(IsScalarAlmostEqual(radii.x, x), true);
EXPECT_EQ(IsScalarAlmostEqual(radii.y, y), true);
}
OH_Drawing_RoundRectDestroy(roundRect);
OH_Drawing_RectDestroy(rect);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectGetCornerWhenNoSet()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_Corner_Radii radii = OH_Drawing_RoundRectGetCorner(roundRect, CORNER_POS_TOP_LEFT);
EXPECT_EQ(IsScalarAlmostEqual(radii.x, DRAWING_NUMBER_20), true);
EXPECT_EQ(IsScalarAlmostEqual(radii.y, DRAWING_NUMBER_20), true);
OH_Drawing_RoundRectDestroy(roundRect);
OH_Drawing_RectDestroy(rect);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectDestroyNormal()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RoundRectDestroy(roundRect);
OH_Drawing_RectDestroy(rect);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectDestroyNull()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_RoundRect *roundRect = nullptr;
OH_Drawing_RoundRectDestroy(nullptr);
EXPECT_EQ(roundRect, nullptr);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectOffsetNormal()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RoundRect *roundRect1 = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect1, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RoundRect *roundRect2 = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect2, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_Rect *rect1 = OH_Drawing_RectCreate(0.f, 0.f, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect1, nullptr);
OH_Drawing_RoundRect *roundRect3 = OH_Drawing_RoundRectCreate(rect1, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect3, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RoundRectDestroy(roundRect);
OH_Drawing_RoundRectDestroy(roundRect1);
OH_Drawing_RoundRectDestroy(roundRect2);
OH_Drawing_RoundRectDestroy(roundRect3);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectOffsetNull()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect, nullptr);
EXPECT_EQ(OH_Drawing_RoundRectOffset(nullptr, DRAWING_NUMBER_1, DRAWING_NUMBER_1),
OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(OH_Drawing_RoundRectOffset(roundRect, 0, DRAWING_NUMBER_1), OH_DRAWING_SUCCESS);
EXPECT_EQ(OH_Drawing_RoundRectOffset(roundRect, DRAWING_NUMBER_1, 0), OH_DRAWING_SUCCESS);
OH_Drawing_RoundRectDestroy(roundRect);
OH_Drawing_RectDestroy(rect);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectOffsetMultipleCalls()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_RoundRect *roundRect = OH_Drawing_RoundRectCreate(rect, dis(gen), dis(gen));
EXPECT_NE(roundRect, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_RoundRectDestroy(roundRect);
}
OH_Drawing_RectDestroy(rect);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectCopyNormal()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect1 = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect1, nullptr);
OH_Drawing_RoundRect *roundRect1 = OH_Drawing_RoundRectCreate(rect1, 0, 0);
EXPECT_NE(roundRect1, nullptr);
OH_Drawing_RoundRect *roundRect2 = OH_Drawing_RoundRectCopy(roundRect1);
EXPECT_NE(roundRect2, nullptr);
OH_Drawing_Rect *rect2 = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect2, nullptr);
OH_Drawing_RoundRect *roundRect3 = OH_Drawing_RoundRectCreate(rect2, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(roundRect3, nullptr);
OH_Drawing_RoundRect *roundRect4 = OH_Drawing_RoundRectCopy(roundRect3);
EXPECT_NE(roundRect4, nullptr);
OH_Drawing_Rect *rect3 = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect3, nullptr);
OH_Drawing_RoundRect *roundRect5 = OH_Drawing_RoundRectCreate(rect3, 0, 0);
EXPECT_NE(roundRect5, nullptr);
OH_Drawing_RoundRectSetCorner(roundRect5, OH_Drawing_CornerPos::CORNER_POS_TOP_LEFT, {DRAWING_NUMBER_20,
DRAWING_NUMBER_20});
OH_Drawing_RoundRect *roundRect6 = OH_Drawing_RoundRectCopy(roundRect5);
EXPECT_NE(roundRect6, nullptr);
OH_Drawing_RectDestroy(rect1);
OH_Drawing_RectDestroy(rect2);
OH_Drawing_RectDestroy(rect3);
OH_Drawing_RoundRectDestroy(roundRect1);
OH_Drawing_RoundRectDestroy(roundRect2);
OH_Drawing_RoundRectDestroy(roundRect3);
OH_Drawing_RoundRectDestroy(roundRect4);
OH_Drawing_RoundRectDestroy(roundRect5);
OH_Drawing_RoundRectDestroy(roundRect6);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectCopyNull()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect1 = OH_Drawing_RoundRectCreate(rect, 0, 0);
EXPECT_NE(roundRect1, nullptr);
OH_Drawing_RoundRect *roundRect2 = OH_Drawing_RoundRectCopy(nullptr);
EXPECT_EQ(roundRect2, nullptr);
OH_Drawing_RectDestroy(rect);
OH_Drawing_RoundRectDestroy(roundRect1);
OH_Drawing_RoundRectDestroy(roundRect2);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestRoundRectCopyMultipleCalls()
{
DrawingNativeRoundRectTestSetUp();
OH_Drawing_Rect *rect = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
EXPECT_NE(rect, nullptr);
OH_Drawing_RoundRect *roundRect1 = OH_Drawing_RoundRectCreate(rect, 0, 0);
EXPECT_NE(roundRect1, nullptr);
OH_Drawing_RoundRect *roundRect2 = nullptr;
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
roundRect2 = OH_Drawing_RoundRectCopy(roundRect1);
EXPECT_NE(roundRect2, nullptr);
}
OH_Drawing_RectDestroy(rect);
OH_Drawing_RoundRectDestroy(roundRect1);
OH_Drawing_RoundRectDestroy(roundRect2);
DrawingNativeRoundRectTestTearDown();
return OH_DRAWING_SUCCESS;
}
}
}
}