* 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/DrawingNativeMatrixTest.h"
#include <iostream>
#include <random>
#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_7 7
#define DRAWING_NUMBER_8 8
#define DRAWING_NUMBER_9 9
#define DRAWING_NUMBER_10 10
#define DRAWING_NUMBER_20 20
#define DRAWING_NUMBER_30 30
#define DRAWING_NUMBER_90 90
#define DRAWING_NUMBER_100 100
#define DRAWING_NUMBER_180 180
#define DRAWING_NUMBER_200 200
#define DRAWING_NUMBER_360 360
#define DRAWING_NUMBER_361 361
#define DRAWING_NUMBER_19937 19937
namespace OHOS {
namespace Rosen {
namespace Drawing {
void DrawingNativeMatrixTestSetUp()
{
std::cout << "DrawingNativeMatrixTest Setup code called before each test case." << std::endl;
OH_Drawing_ErrorCodeReset();
std::cout << "DrawingNativeMatrixTest errorCodeReset before each test case." << std::endl;
}
void DrawingNativeMatrixTestTearDown()
{
std::cout << "DrawingNativeMatrixTest Setup code called after each test case." << std::endl;
OH_Drawing_ErrorCodeReset();
std::cout << "DrawingNativeMatrixTest errorCodeReset after each test case." << std::endl;
}
int TestMatrixCreateDestroyNormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateDestroyNULL()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = nullptr;
OH_Drawing_MatrixDestroy(nullptr);
EXPECT_EQ(matrix, nullptr);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateDestroyMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrices[DRAWING_NUMBER_10];
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
matrices[i] = OH_Drawing_MatrixCreate();
EXPECT_NE(matrices[i], nullptr);
}
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_MatrixDestroy(matrices[i]);
}
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixDestroy(matrix);
}
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateRotationNormal()
{
DrawingNativeMatrixTestSetUp();
float degs[] = {0, DRAWING_NUMBER_180, DRAWING_NUMBER_360, -DRAWING_NUMBER_90, -DRAWING_NUMBER_180,
-DRAWING_NUMBER_360, 45.5f};
float x[] = {0, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_20, DRAWING_NUMBER_20, DRAWING_NUMBER_30,
DRAWING_NUMBER_30};
float y[] = {0, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_20, DRAWING_NUMBER_20, DRAWING_NUMBER_30,
DRAWING_NUMBER_30};
for (int i = 0; i < DRAWING_NUMBER_7; i++) {
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateRotation(degs[i], x[i], y[i]);
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixDestroy(matrix);
}
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateRotationNull()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateRotation(0, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_NE(matrix, nullptr);
OH_Drawing_Matrix *matrix2 = OH_Drawing_MatrixCreateRotation(DRAWING_NUMBER_180, 0, DRAWING_NUMBER_10);
EXPECT_NE(matrix2, nullptr);
OH_Drawing_Matrix *matrix3 = OH_Drawing_MatrixCreateRotation(DRAWING_NUMBER_360, DRAWING_NUMBER_10, 0);
EXPECT_NE(matrix3, nullptr);
OH_Drawing_MatrixDestroy(matrix);
OH_Drawing_MatrixDestroy(matrix2);
OH_Drawing_MatrixDestroy(matrix3);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateRotationAbnormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateRotation(DRAWING_NUMBER_361, DRAWING_NUMBER_10,
DRAWING_NUMBER_10);
EXPECT_NE(matrix, nullptr);
OH_Drawing_Matrix *matrix2 = OH_Drawing_MatrixCreateRotation(DRAWING_NUMBER_180, -DRAWING_NUMBER_10,
DRAWING_NUMBER_10);
EXPECT_NE(matrix2, nullptr);
OH_Drawing_Matrix *matrix3 = OH_Drawing_MatrixCreateRotation(DRAWING_NUMBER_180, DRAWING_NUMBER_10,
-DRAWING_NUMBER_10);
EXPECT_NE(matrix3, nullptr);
OH_Drawing_MatrixDestroy(matrix);
OH_Drawing_MatrixDestroy(matrix2);
OH_Drawing_MatrixDestroy(matrix3);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateRotationMaximum()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateRotation(FLT_MAX, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_NE(matrix, nullptr);
OH_Drawing_Matrix *matrix2 = OH_Drawing_MatrixCreateRotation(DRAWING_NUMBER_180, FLT_MAX, DRAWING_NUMBER_10);
EXPECT_NE(matrix2, nullptr);
OH_Drawing_Matrix *matrix3 = OH_Drawing_MatrixCreateRotation(DRAWING_NUMBER_180, DRAWING_NUMBER_10, FLT_MAX);
EXPECT_NE(matrix3, nullptr);
OH_Drawing_MatrixDestroy(matrix);
OH_Drawing_MatrixDestroy(matrix2);
OH_Drawing_MatrixDestroy(matrix3);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateRotationMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<int> deg_dist(-DRAWING_NUMBER_360, DRAWING_NUMBER_360);
std::uniform_real_distribution<float> x_dist(0.0f, DRAWING_NUMBER_100);
std::uniform_real_distribution<float> y_dist(0.0f, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
float deg = deg_dist(gen);
float x = x_dist(gen);
float y = y_dist(gen);
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateRotation(deg, x, y);
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixDestroy(matrix);
}
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateTranslationNormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateTranslation(DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_NE(matrix, nullptr);
OH_Drawing_Matrix *matrix2 = OH_Drawing_MatrixCreateTranslation(DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_NE(matrix2, nullptr);
OH_Drawing_MatrixDestroy(matrix);
OH_Drawing_MatrixDestroy(matrix2);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateTranslationNull()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateTranslation(0, DRAWING_NUMBER_10);
EXPECT_NE(matrix, nullptr);
OH_Drawing_Matrix *matrix2 = OH_Drawing_MatrixCreateTranslation(DRAWING_NUMBER_10, 0);
EXPECT_NE(matrix2, nullptr);
OH_Drawing_MatrixDestroy(matrix);
OH_Drawing_MatrixDestroy(matrix2);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateTranslationAbnormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateTranslation(-DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_NE(matrix, nullptr);
OH_Drawing_Matrix *matrix2 = OH_Drawing_MatrixCreateTranslation(DRAWING_NUMBER_10, -DRAWING_NUMBER_10);
EXPECT_NE(matrix2, nullptr);
OH_Drawing_MatrixDestroy(matrix);
OH_Drawing_MatrixDestroy(matrix2);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateTranslationMaximum()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateTranslation(FLT_MAX, DRAWING_NUMBER_10);
EXPECT_NE(matrix, nullptr);
OH_Drawing_Matrix *matrix2 = OH_Drawing_MatrixCreateTranslation(DRAWING_NUMBER_10, FLT_MAX);
EXPECT_NE(matrix2, nullptr);
OH_Drawing_MatrixDestroy(matrix);
OH_Drawing_MatrixDestroy(matrix2);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateTranslationMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0.0f, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
float dx = dis(gen);
float dy = dis(gen);
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateTranslation(dx, dy);
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixDestroy(matrix);
}
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixMatrixSetGetMatrixNormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, 0, 0, 0, -DRAWING_NUMBER_1, 0, 0, 0, DRAWING_NUMBER_1);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
float value[DRAWING_NUMBER_9];
OH_Drawing_ErrorCode code = OH_Drawing_MatrixGetAll(matrix, value);
EXPECT_EQ(code, OH_DRAWING_SUCCESS);
OH_Drawing_MatrixGetValue(matrix, 0);
EXPECT_EQ(OH_Drawing_MatrixGetValue(matrix, 0), DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, 1.1f, 0, 0, 0, -1.1f, 0, 0, 0, 1.1f);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_ErrorCode code2 = OH_Drawing_MatrixGetAll(matrix, value);
EXPECT_EQ(code2, OH_DRAWING_SUCCESS);
OH_Drawing_MatrixGetValue(matrix, DRAWING_NUMBER_1);
EXPECT_EQ(OH_Drawing_MatrixGetValue(matrix, DRAWING_NUMBER_1), 0);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixMatrixSetGetMatrixNull()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixSetMatrix(nullptr, DRAWING_NUMBER_1, 0, 0, 0, -DRAWING_NUMBER_1, 0, 0, 0, DRAWING_NUMBER_1);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_ErrorCodeReset();
OH_Drawing_MatrixSetMatrix(matrix, 0, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, 0, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, 0, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, 0, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, 0,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, 0, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, 0, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, 0, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, 0);
float value[DRAWING_NUMBER_9];
OH_Drawing_ErrorCode code = OH_Drawing_MatrixGetAll(nullptr, value);
EXPECT_EQ(code, OH_DRAWING_ERROR_INVALID_PARAMETER);
float value2[0];
OH_Drawing_ErrorCode code2 = OH_Drawing_MatrixGetAll(matrix, value2);
EXPECT_EQ(code2, OH_DRAWING_SUCCESS);
OH_Drawing_ErrorCode code3 = OH_Drawing_MatrixGetAll(matrix, nullptr);
EXPECT_EQ(code3, OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_MatrixGetValue(nullptr, 0);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_MatrixGetValue(matrix, 0);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixMatrixSetGetMatrixAbnormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixSetMatrix(matrix, -DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, -DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, -DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, -DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
-DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, -DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, -DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, -DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, -DRAWING_NUMBER_1);
float value2[DRAWING_NUMBER_9];
OH_Drawing_ErrorCode code2 = OH_Drawing_MatrixGetAll(matrix, value2);
EXPECT_EQ(code2, OH_DRAWING_SUCCESS);
OH_Drawing_MatrixGetValue(matrix, -DRAWING_NUMBER_1);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE);
OH_Drawing_MatrixGetValue(matrix, DRAWING_NUMBER_9);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixMatrixSetGetMatrixMaximum()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixSetMatrix(matrix, FLT_MAX, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, FLT_MAX, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, FLT_MAX, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, FLT_MAX, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, FLT_MAX,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, FLT_MAX, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, FLT_MAX, DRAWING_NUMBER_1, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, FLT_MAX, DRAWING_NUMBER_1);
OH_Drawing_MatrixSetMatrix(matrix, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1,
DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, DRAWING_NUMBER_1, FLT_MAX);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixMatrixSetGetMatrixMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0.0f, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
float value[DRAWING_NUMBER_9];
float val0 = dis(gen);
float val1 = dis(gen);
float val2 = dis(gen);
float val3 = dis(gen);
float val4 = dis(gen);
float val5 = dis(gen);
float val6 = dis(gen);
float val7 = dis(gen);
float val8 = dis(gen);
OH_Drawing_MatrixSetMatrix(matrix, val0, val1, val2, val3,
val4, val5, val6, val7, val8);
OH_Drawing_ErrorCode code = OH_Drawing_MatrixGetAll(matrix, value);
EXPECT_EQ(code, OH_DRAWING_SUCCESS);
EXPECT_EQ(OH_Drawing_MatrixGetValue(matrix, 0), val0);
EXPECT_EQ(OH_Drawing_MatrixGetValue(matrix, DRAWING_NUMBER_1), val1);
EXPECT_EQ(OH_Drawing_MatrixGetValue(matrix, DRAWING_NUMBER_2), val2);
EXPECT_EQ(OH_Drawing_MatrixGetValue(matrix, DRAWING_NUMBER_3), val3);
EXPECT_EQ(OH_Drawing_MatrixGetValue(matrix, DRAWING_NUMBER_4), val4);
EXPECT_EQ(OH_Drawing_MatrixGetValue(matrix, DRAWING_NUMBER_5), val5);
EXPECT_EQ(OH_Drawing_MatrixGetValue(matrix, DRAWING_NUMBER_6), val6);
EXPECT_EQ(OH_Drawing_MatrixGetValue(matrix, DRAWING_NUMBER_7), val7);
EXPECT_EQ(OH_Drawing_MatrixGetValue(matrix, DRAWING_NUMBER_8), val8);
}
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixTranslateNormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixTranslate(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixTranslate(matrix, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixTranslateNull()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixTranslate(nullptr, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_MatrixTranslate(matrix, 0, DRAWING_NUMBER_10);
OH_Drawing_MatrixTranslate(matrix, DRAWING_NUMBER_10, 0);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixTranslateAbnormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixTranslate(matrix, -DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixTranslate(matrix, DRAWING_NUMBER_10, -DRAWING_NUMBER_10);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixTranslateMaximum()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixTranslate(matrix, FLT_MAX, DRAWING_NUMBER_10);
OH_Drawing_MatrixTranslate(matrix, DRAWING_NUMBER_10, FLT_MAX);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixTranslateMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0.0f, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
float dx = dis(gen);
float dy = dis(gen);
OH_Drawing_MatrixTranslate(matrix, dx, dy);
}
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixRotateNormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixRotate(matrix, 0, 0, 0);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixRotate(matrix, DRAWING_NUMBER_180, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixRotate(matrix, DRAWING_NUMBER_360, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixRotate(matrix, -DRAWING_NUMBER_90, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixRotate(matrix, -DRAWING_NUMBER_180, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixRotate(matrix, -DRAWING_NUMBER_360, DRAWING_NUMBER_30, DRAWING_NUMBER_30);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixRotate(matrix, 45.5f, DRAWING_NUMBER_30, DRAWING_NUMBER_30);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixRotateNull()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixRotate(nullptr, DRAWING_NUMBER_180, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_MatrixRotate(matrix, 0, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixRotate(matrix, DRAWING_NUMBER_180, 0, DRAWING_NUMBER_10);
OH_Drawing_MatrixRotate(matrix, DRAWING_NUMBER_180, DRAWING_NUMBER_10, 0);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixRotateAbnormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixRotate(matrix, DRAWING_NUMBER_180, -DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixRotate(matrix, DRAWING_NUMBER_180, DRAWING_NUMBER_10, -DRAWING_NUMBER_10);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixRotateMaximum()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixRotate(matrix, FLT_MAX, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixRotate(matrix, DRAWING_NUMBER_180, FLT_MAX, DRAWING_NUMBER_10);
OH_Drawing_MatrixRotate(matrix, DRAWING_NUMBER_180, DRAWING_NUMBER_10, FLT_MAX);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixRotateMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0.0f, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
float degree = dis(gen);
float px = dis(gen);
float py = dis(gen);
OH_Drawing_MatrixRotate(matrix, degree, px, py);
}
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateScaleNormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateScale(DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10,
DRAWING_NUMBER_10);
EXPECT_NE(matrix, nullptr);
OH_Drawing_Matrix *matrix2 = OH_Drawing_MatrixCreateScale(DRAWING_NUMBER_20, DRAWING_NUMBER_20, DRAWING_NUMBER_20,
DRAWING_NUMBER_20);
EXPECT_NE(matrix2, nullptr);
OH_Drawing_MatrixDestroy(matrix);
OH_Drawing_MatrixDestroy(matrix2);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateScaleNull()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateScale(0, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10)
;
EXPECT_NE(matrix, nullptr);
OH_Drawing_Matrix *matrix2 = OH_Drawing_MatrixCreateScale(DRAWING_NUMBER_10, 0, DRAWING_NUMBER_10,
DRAWING_NUMBER_10);
EXPECT_NE(matrix2, nullptr);
OH_Drawing_Matrix *matrix3 = OH_Drawing_MatrixCreateScale(DRAWING_NUMBER_10, DRAWING_NUMBER_10, 0,
DRAWING_NUMBER_10);
EXPECT_NE(matrix3, nullptr);
OH_Drawing_Matrix *matrix4 = OH_Drawing_MatrixCreateScale(DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10,
0);
EXPECT_NE(matrix4, nullptr);
OH_Drawing_MatrixDestroy(matrix);
OH_Drawing_MatrixDestroy(matrix2);
OH_Drawing_MatrixDestroy(matrix3);
OH_Drawing_MatrixDestroy(matrix4);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateScaleAbnormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateScale(-DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10,
DRAWING_NUMBER_10);
EXPECT_NE(matrix, nullptr);
OH_Drawing_Matrix *matrix2 = OH_Drawing_MatrixCreateScale(DRAWING_NUMBER_10, -DRAWING_NUMBER_10, DRAWING_NUMBER_10,
DRAWING_NUMBER_10);
EXPECT_NE(matrix2, nullptr);
OH_Drawing_Matrix *matrix3 = OH_Drawing_MatrixCreateScale(DRAWING_NUMBER_10, DRAWING_NUMBER_10, -DRAWING_NUMBER_10,
DRAWING_NUMBER_10);
EXPECT_NE(matrix3, nullptr);
OH_Drawing_Matrix *matrix4 = OH_Drawing_MatrixCreateScale(DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10,
-DRAWING_NUMBER_10);
EXPECT_NE(matrix4, nullptr);
OH_Drawing_MatrixDestroy(matrix);
OH_Drawing_MatrixDestroy(matrix2);
OH_Drawing_MatrixDestroy(matrix3);
OH_Drawing_MatrixDestroy(matrix4);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateScaleMaximum()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateScale(FLT_MAX, DRAWING_NUMBER_10, DRAWING_NUMBER_10,
DRAWING_NUMBER_10);
EXPECT_NE(matrix, nullptr);
OH_Drawing_Matrix *matrix2 = OH_Drawing_MatrixCreateScale(DRAWING_NUMBER_10, FLT_MAX, DRAWING_NUMBER_10,
DRAWING_NUMBER_10);
EXPECT_NE(matrix2, nullptr);
OH_Drawing_Matrix *matrix3 = OH_Drawing_MatrixCreateScale(DRAWING_NUMBER_10, DRAWING_NUMBER_10, FLT_MAX,
DRAWING_NUMBER_10);
EXPECT_NE(matrix3, nullptr);
OH_Drawing_Matrix *matrix4 = OH_Drawing_MatrixCreateScale(DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10,
FLT_MAX);
EXPECT_NE(matrix4, nullptr);
OH_Drawing_MatrixDestroy(matrix);
OH_Drawing_MatrixDestroy(matrix2);
OH_Drawing_MatrixDestroy(matrix3);
OH_Drawing_MatrixDestroy(matrix4);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixCreateScaleMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0.0f, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
float sx = dis(gen);
float sy = dis(gen);
float px = dis(gen);
float py = dis(gen);
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreateScale(sx, sy, px, py);
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixDestroy(matrix);
}
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixScaleNormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixScale(matrix, DRAWING_NUMBER_20, DRAWING_NUMBER_20, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixScaleNull()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixScale(nullptr, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_MatrixScale(matrix, 0, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixScale(matrix, DRAWING_NUMBER_10, 0, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, 0, DRAWING_NUMBER_10);
OH_Drawing_MatrixScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, 0);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixScaleAbnormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixScale(matrix, -DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixScale(matrix, DRAWING_NUMBER_10, -DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, -DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, -DRAWING_NUMBER_10);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixScaleMaximum()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixScale(matrix, FLT_MAX, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixScale(matrix, DRAWING_NUMBER_10, FLT_MAX, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, FLT_MAX, DRAWING_NUMBER_10);
OH_Drawing_MatrixScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, FLT_MAX);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixScaleMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0.0f, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
float sx = dis(gen);
float sy = dis(gen);
float px = dis(gen);
float py = dis(gen);
OH_Drawing_MatrixScale(matrix, sx, sy, px, py);
}
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixSetRectToRectNormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_Rect *rectSrc = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_100, DRAWING_NUMBER_100);
OH_Drawing_Rect *rectDst = OH_Drawing_RectCreate(0, 0, DRAWING_NUMBER_200, DRAWING_NUMBER_200);
OH_Drawing_ScaleToFit fitList[] = {
SCALE_TO_FIT_FILL,
SCALE_TO_FIT_START,
SCALE_TO_FIT_CENTER,
SCALE_TO_FIT_END,
};
for (OH_Drawing_ScaleToFit fit : fitList) {
bool isSuccess = OH_Drawing_MatrixSetRectToRect(matrix, rectSrc, rectDst, fit);
EXPECT_EQ(isSuccess, true);
}
OH_Drawing_MatrixDestroy(matrix);
OH_Drawing_RectDestroy(rectSrc);
OH_Drawing_RectDestroy(rectDst);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixSetRectToRectNull()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_Rect *rectSrc = OH_Drawing_RectCreate(0, 0, 0, 0);
EXPECT_NE(rectSrc, nullptr);
OH_Drawing_Rect *rectDst = OH_Drawing_RectCreate(0, 0, 0, 0);
EXPECT_NE(rectDst, nullptr);
bool isSuccess = OH_Drawing_MatrixSetRectToRect(nullptr, rectSrc, rectDst, SCALE_TO_FIT_FILL);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(isSuccess, false);
OH_Drawing_ErrorCodeReset();
isSuccess = OH_Drawing_MatrixSetRectToRect(matrix, nullptr, rectDst, SCALE_TO_FIT_FILL);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(isSuccess, false);
OH_Drawing_ErrorCodeReset();
isSuccess = OH_Drawing_MatrixSetRectToRect(matrix, rectSrc, nullptr, SCALE_TO_FIT_FILL);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
EXPECT_EQ(isSuccess, false);
OH_Drawing_MatrixDestroy(matrix);
OH_Drawing_RectDestroy(rectSrc);
OH_Drawing_RectDestroy(rectDst);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixSetRectToRectMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0.0f, DRAWING_NUMBER_100);
OH_Drawing_ScaleToFit fitList[] = {
SCALE_TO_FIT_FILL,
SCALE_TO_FIT_START,
SCALE_TO_FIT_CENTER,
SCALE_TO_FIT_END,
};
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
OH_Drawing_Rect *rectSrc = OH_Drawing_RectCreate(dis(gen), dis(gen), dis(gen) + DRAWING_NUMBER_100, dis(gen) +
DRAWING_NUMBER_100);
OH_Drawing_Rect *rectDst = OH_Drawing_RectCreate(dis(gen), dis(gen), dis(gen) + DRAWING_NUMBER_200, dis(gen) +
DRAWING_NUMBER_200);
OH_Drawing_ScaleToFit fit = fitList[i % DRAWING_NUMBER_4];
bool isSuccess = OH_Drawing_MatrixSetRectToRect(matrix, rectSrc, rectDst, fit);
EXPECT_EQ(isSuccess, true);
OH_Drawing_RectDestroy(rectSrc);
OH_Drawing_RectDestroy(rectDst);
}
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreRotateNormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPreRotate(matrix, 0, 0, 0);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPreRotate(matrix, DRAWING_NUMBER_180, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPreRotate(matrix, DRAWING_NUMBER_360, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPreRotate(matrix, -DRAWING_NUMBER_90, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPreRotate(matrix, -DRAWING_NUMBER_180, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPreRotate(matrix, -DRAWING_NUMBER_360, DRAWING_NUMBER_30, DRAWING_NUMBER_30);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPreRotate(matrix, 45.5f, DRAWING_NUMBER_30, DRAWING_NUMBER_30);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreRotateNull()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPreRotate(nullptr, DRAWING_NUMBER_180, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_MatrixPreRotate(matrix, 0, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreRotate(matrix, DRAWING_NUMBER_180, 0, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreRotate(matrix, DRAWING_NUMBER_180, DRAWING_NUMBER_10, 0);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreRotateAbnormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPreRotate(matrix, DRAWING_NUMBER_180, -DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreRotate(matrix, DRAWING_NUMBER_180, DRAWING_NUMBER_10, -DRAWING_NUMBER_10);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreRotateMaximum()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPreRotate(matrix, FLT_MAX, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreRotate(matrix, DRAWING_NUMBER_180, FLT_MAX, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreRotate(matrix, DRAWING_NUMBER_180, DRAWING_NUMBER_10, FLT_MAX);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreRotateMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0.0f, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
float degree = dis(gen);
float px = dis(gen);
float py = dis(gen);
OH_Drawing_MatrixPreRotate(matrix, degree, px, py);
}
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreScaleNormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPreScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPreScale(matrix, DRAWING_NUMBER_20, DRAWING_NUMBER_20, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreScaleNull()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPreScale(nullptr, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_MatrixPreScale(matrix, 0, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreScale(matrix, DRAWING_NUMBER_10, 0, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, 0, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, 0);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreScaleAbnormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPreScale(matrix, -DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreScale(matrix, DRAWING_NUMBER_10, -DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, -DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, -DRAWING_NUMBER_10);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreScaleMaximum()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPreScale(matrix, FLT_MAX, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreScale(matrix, DRAWING_NUMBER_10, FLT_MAX, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, FLT_MAX, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, FLT_MAX);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreScaleMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0.0f, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
float sx = dis(gen);
float sy = dis(gen);
float px = dis(gen);
float py = dis(gen);
OH_Drawing_MatrixPreScale(matrix, sx, sy, px, py);
}
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreTranslateNormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPreTranslate(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPreTranslate(matrix, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreTranslateNull()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPreTranslate(nullptr, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_MatrixPreTranslate(matrix, 0, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreTranslate(matrix, DRAWING_NUMBER_10, 0);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreTranslateAbnormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPreTranslate(matrix, -DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreTranslate(matrix, DRAWING_NUMBER_10, -DRAWING_NUMBER_10);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreTranslateMaximum()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPreTranslate(matrix, FLT_MAX, DRAWING_NUMBER_10);
OH_Drawing_MatrixPreTranslate(matrix, DRAWING_NUMBER_10, FLT_MAX);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPreTranslateMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0.0f, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
float dx = dis(gen);
float dy = dis(gen);
OH_Drawing_MatrixPreTranslate(matrix, dx, dy);
}
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPostRotateNormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPostRotate(matrix, 0, 0, 0);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPostRotate(matrix, DRAWING_NUMBER_180, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPostRotate(matrix, DRAWING_NUMBER_360, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPostRotate(matrix, -DRAWING_NUMBER_90, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPostRotate(matrix, -DRAWING_NUMBER_180, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPostRotate(matrix, -DRAWING_NUMBER_360, DRAWING_NUMBER_30, DRAWING_NUMBER_30);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPostRotate(matrix, 45.5f, DRAWING_NUMBER_30, DRAWING_NUMBER_30);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPostRotateNull()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPostRotate(nullptr, DRAWING_NUMBER_180, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_MatrixPostRotate(matrix, 0, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostRotate(matrix, DRAWING_NUMBER_180, 0, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostRotate(matrix, DRAWING_NUMBER_180, DRAWING_NUMBER_10, 0);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPostRotateAbnormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPostRotate(matrix, DRAWING_NUMBER_180, -DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostRotate(matrix, DRAWING_NUMBER_180, DRAWING_NUMBER_10, -DRAWING_NUMBER_10);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPostRotateMaximum()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPostRotate(matrix, FLT_MAX, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostRotate(matrix, DRAWING_NUMBER_180, FLT_MAX, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostRotate(matrix, DRAWING_NUMBER_180, DRAWING_NUMBER_10, FLT_MAX);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPostRotateMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0.0f, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
float degree = dis(gen);
float px = dis(gen);
float py = dis(gen);
OH_Drawing_MatrixPostRotate(matrix, degree, px, py);
}
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPostScaleNormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPostScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixPostScale(matrix, DRAWING_NUMBER_20, DRAWING_NUMBER_20, DRAWING_NUMBER_20, DRAWING_NUMBER_20);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_SUCCESS);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPostScaleNull()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPostScale(nullptr, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
EXPECT_EQ(OH_Drawing_ErrorCodeGet(), OH_DRAWING_ERROR_INVALID_PARAMETER);
OH_Drawing_MatrixPostScale(matrix, 0, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostScale(matrix, DRAWING_NUMBER_10, 0, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, 0, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, 0);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPostScaleAbnormal()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPostScale(matrix, -DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostScale(matrix, DRAWING_NUMBER_10, -DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, -DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, -DRAWING_NUMBER_10);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPostScaleMaximum()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
OH_Drawing_MatrixPostScale(matrix, FLT_MAX, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostScale(matrix, DRAWING_NUMBER_10, FLT_MAX, DRAWING_NUMBER_10, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, FLT_MAX, DRAWING_NUMBER_10);
OH_Drawing_MatrixPostScale(matrix, DRAWING_NUMBER_10, DRAWING_NUMBER_10, DRAWING_NUMBER_10, FLT_MAX);
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
int TestMatrixPostScaleMultipleCalls()
{
DrawingNativeMatrixTestSetUp();
OH_Drawing_Matrix *matrix = OH_Drawing_MatrixCreate();
EXPECT_NE(matrix, nullptr);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<float> dis(0.0f, DRAWING_NUMBER_100);
for (int i = 0; i < DRAWING_NUMBER_10; i++) {
float sx = dis(gen);
float sy = dis(gen);
float px = dis(gen);
float py = dis(gen);
OH_Drawing_MatrixPostScale(matrix, sx, sy, px, py);
}
OH_Drawing_MatrixDestroy(matrix);
DrawingNativeMatrixTestTearDown();
return OH_DRAWING_SUCCESS;
}
}
}
}