* 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 <cmath>
#include "include/DrawingNativeBitmapTest.h"
#include "include/OhosCommonTest.h"
#include "include/log_common.h"
#define DRAWING_NUMBER_1 1
#define DRAWING_NUMBER_2 2
#define DRAWING_NUMBER_10 10
#define DRAWING_NUMBER_32 32
#define DRAWING_NUMBER_100 100
#define DRAWING_NUMBER_128 128
#define DRAWING_NUMBER_200 200
#define DRAWING_NUMBER_201 201
#define DRAWING_NUMBER_255 255
#define DRAWING_NUMBER_400 400
#define DRAWING_NUMBER_500 500
#define DRAWING_NUMBER_12345678 12345678
#define DRAWING_NUMBER_87654321 87654321
#define DRAWING_NUMBER_0X12345678 0X12345678
#define DRAWING_NUMBER_0X87654321 0x87654321
#define DRAWING_NUMBER_0XFFFF0000 0xFFFF0000
#define DRAWING_NUMBER_0XFF00FF00 0xFF00FF00
#define DRAWING_NUMBER_0XFFFFFFFF 0xFFFFFFFF
namespace OHOS {
namespace Rosen {
namespace Drawing {
void DrawingNativeBrushTestSetUp()
{
std::cout << "DrawingNativeBrushTest Setup code called before each test case." << std::endl;
OH_Drawing_ErrorCodeReset();
std::cout << "DrawingNativeBrushTest errorCodeReset before each test case." << std::endl;
}
void DrawingNativeBrushTestTearDown()
{
std::cout << "DrawingNativeBrushTest Setup code called after each test case." << std::endl;
OH_Drawing_ErrorCodeReset();
std::cout << "DrawingNativeBrushTest errorCodeReset after each test case." << std::endl;
}
int TestBrushCreateNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushCopyNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush1 = OH_Drawing_BrushCreate();
EXPECT_NE(brush1, nullptr);
OH_Drawing_BrushSetColor(brush1, DRAWING_NUMBER_12345678);
OH_Drawing_Brush *brush2 = OH_Drawing_BrushCopy(brush1);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
EXPECT_NE(brush2, nullptr);
uint32_t color = OH_Drawing_BrushGetColor(brush2);
EXPECT_EQ(color, DRAWING_NUMBER_12345678);
OH_Drawing_BrushSetColor(brush1, DRAWING_NUMBER_87654321);
color = OH_Drawing_BrushGetColor(brush2);
EXPECT_EQ(color, DRAWING_NUMBER_12345678);
OH_Drawing_BrushDestroy(brush1);
OH_Drawing_BrushDestroy(brush2);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushCopyNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_Brush *brushCopy = OH_Drawing_BrushCopy(nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_BrushDestroy(brush);
OH_Drawing_BrushDestroy(brushCopy);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushCopyInputDestroyed()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush1 = OH_Drawing_BrushCreate();
EXPECT_NE(brush1, nullptr);
OH_Drawing_Brush *brush2 = OH_Drawing_BrushCopy(brush1);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
EXPECT_NE(brush2, nullptr);
OH_Drawing_BrushDestroy(brush1);
OH_Drawing_BrushSetColor(brush2, DRAWING_NUMBER_12345678);
uint32_t color = OH_Drawing_BrushGetColor(brush2);
EXPECT_EQ(color, DRAWING_NUMBER_12345678);
OH_Drawing_BrushDestroy(brush2);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushCopyMultipleCalls()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_Brush *brushCopy = OH_Drawing_BrushCopy(brush);
EXPECT_NE(brushCopy, nullptr);
OH_Drawing_BrushDestroy(brushCopy);
}
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushDestroyNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushDestroyNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushDestroy(nullptr);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushIsAntiAliasNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
bool isAntiAlias = OH_Drawing_BrushIsAntiAlias(brush);
EXPECT_EQ(isAntiAlias, false);
OH_Drawing_BrushSetAntiAlias(brush, true);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
isAntiAlias = OH_Drawing_BrushIsAntiAlias(brush);
EXPECT_EQ(isAntiAlias, true);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushIsAntiAliasNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
bool isAntiAlias = OH_Drawing_BrushIsAntiAlias(nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(isAntiAlias, false);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetAntiAliasNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushSetAntiAlias(brush, true);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
bool isAntiAlias = OH_Drawing_BrushIsAntiAlias(brush);
EXPECT_EQ(isAntiAlias, true);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetAntiAliasNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushSetAntiAlias(nullptr, true);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetColorNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushSetColor(brush, DRAWING_NUMBER_12345678);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
uint32_t color = OH_Drawing_BrushGetColor(brush);
EXPECT_EQ(color, DRAWING_NUMBER_12345678);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetColorNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushGetColor(nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetColorNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushSetColor(brush, DRAWING_NUMBER_12345678);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
uint32_t color = OH_Drawing_BrushGetColor(brush);
EXPECT_EQ(color, DRAWING_NUMBER_12345678);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetColorNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushSetColor(nullptr, DRAWING_NUMBER_12345678);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_BrushSetColor(brush, 0);
uint32_t color = OH_Drawing_BrushGetColor(brush);
EXPECT_EQ(color, 0);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetColorAbnormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushSetColor(brush, -DRAWING_NUMBER_1);
uint32_t color = OH_Drawing_BrushGetColor(brush);
EXPECT_EQ(color, std::pow(DRAWING_NUMBER_2, DRAWING_NUMBER_32) - DRAWING_NUMBER_1);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetColorMaximum()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushSetColor(brush, DRAWING_NUMBER_0XFFFFFFFF + DRAWING_NUMBER_1);
uint32_t color = OH_Drawing_BrushGetColor(brush);
EXPECT_EQ(color, 0);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetAlphaNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushSetAlpha(brush, DRAWING_NUMBER_128);
uint8_t alpha = OH_Drawing_BrushGetAlpha(brush);
EXPECT_EQ(alpha, DRAWING_NUMBER_128);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetAlphaNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushGetAlpha(nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetAlphaNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushSetAlpha(brush, DRAWING_NUMBER_128);
uint8_t alpha = OH_Drawing_BrushGetAlpha(brush);
EXPECT_EQ(alpha, DRAWING_NUMBER_128);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetAlphaNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushSetAlpha(nullptr, DRAWING_NUMBER_128);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_BrushSetAlpha(brush, 0);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetAlphaAbnormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushSetAlpha(brush, -DRAWING_NUMBER_1);
uint8_t alpha = OH_Drawing_BrushGetAlpha(brush);
EXPECT_EQ(alpha, DRAWING_NUMBER_255);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetAlphaMaximum()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushSetAlpha(brush, DRAWING_NUMBER_0XFFFFFFFF + DRAWING_NUMBER_1);
uint8_t alpha = OH_Drawing_BrushGetAlpha(brush);
EXPECT_EQ(alpha, 0);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetShaderEffectNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_Point *startPt = OH_Drawing_PointCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_400);
OH_Drawing_Point *endPt = OH_Drawing_PointCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500);
uint32_t color[] = {DRAWING_NUMBER_0XFFFF0000, DRAWING_NUMBER_0XFF00FF00};
float pos[] = {0, DRAWING_NUMBER_1};
OH_Drawing_ShaderEffect *linearGradient =
OH_Drawing_ShaderEffectCreateLinearGradient(startPt, endPt, color, pos, 2.0f, OH_Drawing_TileMode::CLAMP);
EXPECT_NE(linearGradient, nullptr);
OH_Drawing_BrushSetShaderEffect(brush, linearGradient);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
OH_Drawing_ShaderEffectDestroy(linearGradient);
OH_Drawing_PointDestroy(startPt);
OH_Drawing_PointDestroy(endPt);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetShaderEffectNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_Point *startPt = OH_Drawing_PointCreate(DRAWING_NUMBER_100, DRAWING_NUMBER_400);
OH_Drawing_Point *endPt = OH_Drawing_PointCreate(DRAWING_NUMBER_200, DRAWING_NUMBER_500);
uint32_t color[] = {DRAWING_NUMBER_0XFFFF0000, DRAWING_NUMBER_0XFF00FF00};
float pos[] = {0, DRAWING_NUMBER_1};
OH_Drawing_ShaderEffect *linearGradient =
OH_Drawing_ShaderEffectCreateLinearGradient(startPt, endPt, color, pos, 2.0f, OH_Drawing_TileMode::CLAMP);
EXPECT_NE(linearGradient, nullptr);
OH_Drawing_BrushSetShaderEffect(nullptr, linearGradient);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_BrushSetShaderEffect(brush, nullptr);
OH_Drawing_ShaderEffectDestroy(linearGradient);
OH_Drawing_PointDestroy(startPt);
OH_Drawing_PointDestroy(endPt);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetShadowLayerNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_ShadowLayer *shadowLayer =
OH_Drawing_ShadowLayerCreate(DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_12345678);
EXPECT_NE(shadowLayer, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
OH_Drawing_BrushSetShadowLayer(brush, shadowLayer);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
OH_Drawing_ShadowLayerDestroy(shadowLayer);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetShadowLayerNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_ShadowLayer *shadowLayer =
OH_Drawing_ShadowLayerCreate(DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_12345678);
EXPECT_NE(shadowLayer, nullptr);
OH_Drawing_BrushSetShadowLayer(nullptr, shadowLayer);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_BrushSetShadowLayer(brush, nullptr);
OH_Drawing_ShadowLayerDestroy(shadowLayer);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetFilterNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_Filter *filter = OH_Drawing_FilterCreate();
EXPECT_NE(filter, nullptr);
OH_Drawing_BrushSetFilter(brush, filter);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
OH_Drawing_FilterDestroy(filter);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetFilterNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_Filter *filter = OH_Drawing_FilterCreate();
EXPECT_NE(filter, nullptr);
OH_Drawing_BrushSetFilter(nullptr, filter);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_BrushSetFilter(brush, nullptr);
OH_Drawing_FilterDestroy(filter);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetFilterNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_Filter *filter = OH_Drawing_FilterCreate();
EXPECT_NE(filter, nullptr);
OH_Drawing_BrushSetFilter(brush, filter);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
OH_Drawing_Filter *tmpFilter = OH_Drawing_FilterCreate();
EXPECT_NE(tmpFilter, nullptr);
OH_Drawing_BrushGetFilter(brush, tmpFilter);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
OH_Drawing_FilterDestroy(filter);
OH_Drawing_FilterDestroy(tmpFilter);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetFilterNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_Filter *filter = OH_Drawing_FilterCreate();
EXPECT_NE(filter, nullptr);
OH_Drawing_BrushGetFilter(nullptr, filter);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_ErrorCodeReset();
OH_Drawing_BrushGetFilter(brush, nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_FilterDestroy(filter);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetBlendModeNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BlendMode blendMode[] = {
BLEND_MODE_CLEAR, BLEND_MODE_SRC, BLEND_MODE_DST, BLEND_MODE_SRC_OVER,
BLEND_MODE_DST_OVER, BLEND_MODE_SRC_IN, BLEND_MODE_DST_IN, BLEND_MODE_SRC_OUT,
BLEND_MODE_DST_OUT, BLEND_MODE_SRC_ATOP, BLEND_MODE_DST_ATOP, BLEND_MODE_XOR,
BLEND_MODE_PLUS, BLEND_MODE_MODULATE, BLEND_MODE_SCREEN, BLEND_MODE_OVERLAY,
BLEND_MODE_DARKEN, BLEND_MODE_LIGHTEN, BLEND_MODE_COLOR_DODGE, BLEND_MODE_COLOR_BURN,
BLEND_MODE_HARD_LIGHT, BLEND_MODE_SOFT_LIGHT, BLEND_MODE_DIFFERENCE, BLEND_MODE_EXCLUSION,
BLEND_MODE_MULTIPLY, BLEND_MODE_HUE, BLEND_MODE_SATURATION, BLEND_MODE_COLOR,
BLEND_MODE_LUMINOSITY,
};
for (int i = 0; i < sizeof(blendMode) / sizeof(OH_Drawing_BlendMode); i++) {
OH_Drawing_ErrorCodeReset();
OH_Drawing_BrushSetBlendMode(brush, blendMode[i]);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
}
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetBlendModeNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushSetBlendMode(nullptr, BLEND_MODE_CLEAR);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushResetNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
uint32_t color1 = OH_Drawing_BrushGetColor(brush);
OH_Drawing_BrushSetColor(brush, DRAWING_NUMBER_12345678);
uint32_t color2 = OH_Drawing_BrushGetColor(brush);
EXPECT_EQ(color2, DRAWING_NUMBER_12345678);
OH_Drawing_BrushReset(brush);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_SUCCESS);
uint32_t color3 = OH_Drawing_BrushGetColor(brush);
EXPECT_EQ(color3, color1);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushResetNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
EXPECT_NE(brush, nullptr);
OH_Drawing_BrushReset(nullptr);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_Drawing_ErrorCode::OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetAlphaFloatNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
float a = 0;
OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, 1.0f, 0.2f, nullptr);
EXPECT_EQ(OH_Drawing_BrushGetAlphaFloat(brush, &a), OH_DRAWING_SUCCESS);
EXPECT_EQ(a, 1.0f);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetAlphaFloatAbnormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
float a = 0;
OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, 1.0f, 0.2f, nullptr);
EXPECT_EQ(OH_Drawing_BrushGetAlphaFloat(nullptr, &a), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(OH_Drawing_BrushGetAlphaFloat(brush, 0), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(OH_Drawing_BrushGetAlphaFloat(brush, NULL), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(a, 0.0f);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetRedFloatNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
float r = 0;
OH_Drawing_BrushSetColor4f(brush, 1.0f, 1.0f, 1.0f, 0.2f, nullptr);
EXPECT_EQ(OH_Drawing_BrushGetRedFloat(brush, &r), OH_DRAWING_SUCCESS);
EXPECT_EQ(r, 1.0f);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetRedFloatAbnormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
float r = 0;
OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, 1.0f, 0.2f, nullptr);
EXPECT_EQ(OH_Drawing_BrushGetRedFloat(nullptr, &r), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(OH_Drawing_BrushGetRedFloat(brush, 0), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(OH_Drawing_BrushGetRedFloat(brush, NULL), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(r, 0.0f);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetGreenFloatNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
float g = 0;
OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, 1.0f, 0.2f, nullptr);
EXPECT_EQ(OH_Drawing_BrushGetGreenFloat(brush, &g), OH_DRAWING_SUCCESS);
EXPECT_EQ(g, 1.0f);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetGreenFloatAbnormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
float g = 0;
OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, 1.0f, 0.2f, nullptr);
EXPECT_EQ(OH_Drawing_BrushGetGreenFloat(nullptr, &g), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(OH_Drawing_BrushGetGreenFloat(brush, 0), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(OH_Drawing_BrushGetGreenFloat(brush, NULL), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(g, 0.0f);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetBlueFloatNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
float b = 0;
OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, 1.0f, 0.2f, nullptr);
EXPECT_EQ(OH_Drawing_BrushGetBlueFloat(brush, &b), OH_DRAWING_SUCCESS);
EXPECT_EQ(b, 0.2f);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushGetBlueFloatAbnormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
float b = 0;
OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, 1.0f, 0.2f, nullptr);
EXPECT_EQ(OH_Drawing_BrushGetBlueFloat(nullptr, &b), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(OH_Drawing_BrushGetBlueFloat(brush, 0), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(OH_Drawing_BrushGetBlueFloat(brush, NULL), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(b, 0.0f);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetColor4fNormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
float a = 0;
float r = 0;
float g = 0;
float b = 0;
int num = DRAWING_NUMBER_201;
OH_Drawing_ErrorCode errorCode = OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, 1.0f, 0.2f, nullptr);
OH_Drawing_BrushGetAlphaFloat(brush, &a);
OH_Drawing_BrushGetRedFloat(brush, &r);
OH_Drawing_BrushGetGreenFloat(brush, &g);
OH_Drawing_BrushGetBlueFloat(brush, &b);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(a, 1.0f);
EXPECT_EQ(r, 0.4f);
EXPECT_EQ(g, 1.0f);
EXPECT_EQ(b, 0.2f);
EXPECT_EQ(num, OH_DRAWING_ERROR_NO_PERMISSION);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetColor4fNull()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
float a = 0;
float r = 0;
float g = 0;
float b = 0;
OH_Drawing_ErrorCode errorCode = OH_Drawing_BrushSetColor4f(nullptr, 1.0f, 0.4f, 1.0f, 0.2f, nullptr);
EXPECT_EQ(errorCode, OH_DRAWING_ERROR_INVALID_PARAMETER);
errorCode = OH_Drawing_BrushSetColor4f(brush, 0.0f, 0.4f, 1.0f, 0.2f, nullptr);
OH_Drawing_BrushGetAlphaFloat(brush, &a);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
EXPECT_EQ(a, 0.0f);
errorCode = OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.0f, 1.0f, 0.2f, nullptr);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
OH_Drawing_BrushGetRedFloat(brush, &r);
EXPECT_EQ(r, 0.0f);
errorCode = OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, 0.0f, 0.2f, nullptr);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
OH_Drawing_BrushGetGreenFloat(brush, &g);
EXPECT_EQ(g, 0.0f);
errorCode = OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, 1.0f, 0.0f, nullptr);
EXPECT_EQ(errorCode, OH_DRAWING_SUCCESS);
OH_Drawing_BrushGetBlueFloat(brush, &b);
EXPECT_EQ(b, 0.0f);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestBrushSetColor4fAbnormal()
{
DrawingNativeBrushTestSetUp();
OH_Drawing_Brush *brush = OH_Drawing_BrushCreate();
float a = 0;
float r = 0;
float g = 0;
float b = 0;
OH_Drawing_ErrorCode errorCode1 = OH_Drawing_BrushSetColor4f(brush, 2.0f, 0.4f, 1.0f, 0.2f, nullptr);
OH_Drawing_BrushGetAlphaFloat(brush, &a);
EXPECT_EQ(a, 1.0f);
OH_Drawing_ErrorCode errorCode2 = OH_Drawing_BrushSetColor4f(brush, -1.0f, 0.4f, 1.0f, 0.2f, nullptr);
OH_Drawing_BrushGetAlphaFloat(brush, &a);
EXPECT_EQ(a, 0.0f);
OH_Drawing_ErrorCode errorCode3 = OH_Drawing_BrushSetColor4f(brush, 1.0f, 2.0f, 1.0f, 0.2f, nullptr);
OH_Drawing_BrushGetRedFloat(brush, &r);
EXPECT_EQ(r, 1.0f);
OH_Drawing_ErrorCode errorCode4 = OH_Drawing_BrushSetColor4f(brush, 1.0f, -1.0f, 1.0f, 0.2f, nullptr);
OH_Drawing_BrushGetRedFloat(brush, &r);
EXPECT_EQ(r, 0.0f);
OH_Drawing_ErrorCode errorCode5 = OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, 2.0f, 0.2f, nullptr);
OH_Drawing_BrushGetGreenFloat(brush, &g);
EXPECT_EQ(g, 1.0f);
OH_Drawing_ErrorCode errorCode6 = OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, -1.0f, 0.2f, nullptr);
OH_Drawing_BrushGetGreenFloat(brush, &g);
EXPECT_EQ(g, 0.0f);
OH_Drawing_ErrorCode errorCode7 = OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, 1.0f, 2.0f, nullptr);
OH_Drawing_BrushGetBlueFloat(brush, &b);
EXPECT_EQ(b, 1.0f);
OH_Drawing_ErrorCode errorCode8 = OH_Drawing_BrushSetColor4f(brush, 1.0f, 0.4f, 1.0f, -1.0f, nullptr);
OH_Drawing_BrushGetBlueFloat(brush, &b);
EXPECT_EQ(b, 0.0f);
EXPECT_EQ(errorCode1, OH_DRAWING_SUCCESS);
EXPECT_EQ(errorCode2, OH_DRAWING_SUCCESS);
EXPECT_EQ(errorCode3, OH_DRAWING_SUCCESS);
EXPECT_EQ(errorCode4, OH_DRAWING_SUCCESS);
EXPECT_EQ(errorCode5, OH_DRAWING_SUCCESS);
EXPECT_EQ(errorCode6, OH_DRAWING_SUCCESS);
EXPECT_EQ(errorCode7, OH_DRAWING_SUCCESS);
EXPECT_EQ(errorCode8, OH_DRAWING_SUCCESS);
OH_Drawing_BrushDestroy(brush);
DrawingNativeBrushTestTearDown();
return OH_DRAWING_SUCCESS;
}
}
}
}