* Copyright (c) 2025 Huawei Device 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 <array>
#include "include/NativeCopyStyleTest.h"
#include "include/NativeDrawingFontMgrTest.h"
#include "include/NativeFontTest.h"
#include "include/NativeTextLineTest.h"
#include "include/NativeTextRunTest.h"
#include "include/NativeTypographyAutoSpaceTest.h"
#include "include/NativeTypographyUpdateTest.h"
#include "include/NativeUndefinedGlyphDisplayTest.h"
#include "include/OHDrawingTypographyTest.h"
#include "include/OhosCommonTest.h"
#include "napi/native_api.h"
static constexpr int ARG_INDEX = 0;
static constexpr int DEFAULT_ARG = -1;
static constexpr int RESULT_ERROR = -1;
static constexpr size_t FONT_MGR_MATCH_FAMILY_STYLE_HANDLER_COUNT = 34;
static constexpr size_t TEXT_LINE_TEXT_HANDLER_COUNT = 25;
static constexpr size_t EXECUTE_RUN_TEST_HANDLER_COUNT = 9;
using CaseFn = int (*)();
enum CaseNum {
CASE_NUM_0 = 0,
CASE_NUM_1,
CASE_NUM_2,
CASE_NUM_3,
CASE_NUM_4,
CASE_NUM_5,
CASE_NUM_6,
CASE_NUM_7,
CASE_NUM_8,
CASE_NUM_9,
CASE_NUM_10,
CASE_NUM_11,
CASE_NUM_12,
CASE_NUM_13,
CASE_NUM_14,
CASE_NUM_15,
CASE_NUM_16,
CASE_NUM_17,
CASE_NUM_18,
CASE_NUM_19,
CASE_NUM_20,
CASE_NUM_21,
CASE_NUM_22,
CASE_NUM_23,
CASE_NUM_24,
CASE_NUM_25,
CASE_NUM_26,
CASE_NUM_27,
CASE_NUM_28,
CASE_NUM_29,
CASE_NUM_30,
CASE_NUM_31,
CASE_NUM_32,
CASE_NUM_33,
CASE_NUM_34,
CASE_NUM_35,
CASE_NUM_36,
CASE_NUM_37,
CASE_NUM_38,
CASE_NUM_39,
CASE_NUM_40,
CASE_NUM_41,
CASE_NUM_42,
CASE_NUM_43,
CASE_NUM_44,
CASE_NUM_45,
CASE_NUM_46,
CASE_NUM_47,
CASE_NUM_48,
CASE_NUM_49,
CASE_NUM_50,
CASE_NUM_51,
CASE_NUM_52,
CASE_NUM_53,
CASE_NUM_54,
CASE_NUM_55,
CASE_NUM_56,
CASE_NUM_57,
CASE_NUM_58,
CASE_NUM_59,
CASE_NUM_60,
CASE_NUM_61,
CASE_NUM_62,
CASE_NUM_63,
CASE_NUM_64,
CASE_NUM_65,
CASE_NUM_66,
CASE_NUM_67,
CASE_NUM_68,
CASE_NUM_69,
CASE_NUM_70,
CASE_NUM_71,
CASE_NUM_72,
CASE_NUM_73,
CASE_NUM_74,
CASE_NUM_75,
CASE_NUM_76,
CASE_NUM_77,
CASE_NUM_78,
CASE_NUM_79,
CASE_NUM_80,
CASE_NUM_81,
CASE_NUM_82,
CASE_NUM_83,
CASE_NUM_84,
CASE_NUM_85,
CASE_NUM_86,
CASE_NUM_87,
CASE_NUM_88,
CASE_NUM_89,
CASE_NUM_90,
};
using NapiFn = int (*)();
template <size_t N> int DispatchByCaseNum(int caseNum, const std::array<NapiFn, N>& handlers)
{
if (caseNum < CASE_NUM_0 || caseNum >= static_cast<int>(N) || handlers[caseNum] == nullptr) {
return RESULT_ERROR;
}
return handlers[caseNum]();
}
static napi_value OHDrawingCopyTextStyle(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::OHDrawingCopyTextStyle001();
break;
case CASE_NUM_1:
result = OHOS::OHDrawingCopyTextStyle002();
break;
case CASE_NUM_2:
result = OHOS::OHDrawingCopyTextStyle003();
break;
case CASE_NUM_3:
result = OHOS::OHDrawingCopyTextStyle004();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value OHDrawingCopyTextShadow(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::OHDrawingCopyTextShadow001();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value OHDrawingCopyTypographyStyle(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::OHDrawingCopyTypographyStyle001();
break;
case CASE_NUM_1:
result = OHOS::OHDrawingCopyTypographyStyle002();
break;
case CASE_NUM_2:
result = OHOS::OHDrawingCopyTypographyStyle003();
break;
case CASE_NUM_3:
result = OHOS::OHDrawingCopyTypographyStyle004();
break;
case CASE_NUM_4:
result = OHOS::OHDrawingCopyTypographyStyle005();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static int ExecuteFontMgrTestCase(int32_t caseNum)
{
switch (caseNum) {
case CASE_NUM_0:
return OHOS::Rosen::Drawing::OHDrawingFontMgrTest001();
case CASE_NUM_1:
return OHOS::Rosen::Drawing::OHDrawingFontMgrTest002();
case CASE_NUM_2:
return OHOS::Rosen::Drawing::OHDrawingFontMgrTest003();
case CASE_NUM_3:
return OHOS::Rosen::Drawing::OHDrawingFontMgrTest004();
case CASE_NUM_4:
return OHOS::Rosen::Drawing::OHDrawingFontMgrTest005();
case CASE_NUM_5:
return OHOS::Rosen::Drawing::OHDrawingFontMgrTest006();
case CASE_NUM_6:
return OHOS::Rosen::Drawing::OHDrawingFontMgrTest007();
case CASE_NUM_7:
return OHOS::Rosen::Drawing::OHDrawingFontMgrTest008();
case CASE_NUM_8:
return OHOS::Rosen::Drawing::OHDrawingFontMgrTest009();
case CASE_NUM_9:
return OHOS::Rosen::Drawing::OHDrawingFontMgrTest010();
case CASE_NUM_10:
return OHOS::Rosen::Drawing::OHDrawingFontMgrTest011();
case CASE_NUM_11:
return OHOS::Rosen::Drawing::OHDrawingFontMgrTest012();
case CASE_NUM_12:
return OHOS::Rosen::Drawing::OHDrawingFontMgrTest013();
default:
return RESULT_ERROR;
}
}
static napi_value OHDrawingFontMgrTest(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result = ExecuteFontMgrTestCase(caseNum);
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static int ExecuteFontMgrMatchFamilyStyleCharacterCase(int32_t caseNum)
{
static constexpr std::array<NapiFn, FONT_MGR_MATCH_FAMILY_STYLE_HANDLER_COUNT> handlers = {
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterNormalBcp47Null,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterEmptyBcp47,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight900,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight100,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWidth1,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWidth9,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterStyleOblique,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterFamilyNameNull,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterFamilyWeightExceedMaxValue,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterFamilyWidthExceedMaxValue,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight200,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight300,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight400,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight500,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight600,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight700,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight800,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight200Width1,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWidth2,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWidth3,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWidth4,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWidth6,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWidth7,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWidth8,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight200Width9,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterStyle0,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterStyle1,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterStyle2,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight200Style0,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight200Style1,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight200Style2,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight300Style0,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight300Style1,
OHOS::Rosen::Drawing::TestOHDrawingFontMgrMatchFamilyStyleCharacterWeight300Style2,
};
return DispatchByCaseNum(caseNum, handlers);
}
static napi_value OHDrawingFontMgrMatchFamilyStyleCharacter(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result = ExecuteFontMgrMatchFamilyStyleCharacterCase(caseNum);
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value NativeFontTest_FontMeasureText(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::NativeFontTestFontMeasureText015();
break;
case CASE_NUM_1:
result = OHOS::Rosen::Drawing::NativeFontTestFontMeasureText016();
break;
case CASE_NUM_2:
result = OHOS::Rosen::Drawing::NativeFontTestFontMeasureText017();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value NativeDrawingRegisterFontTest(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::NativeDrawingRegisterFontTest001();
break;
case CASE_NUM_1:
result = OHOS::Rosen::Drawing::NativeDrawingRegisterFontTest002();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value OH_Drawing_FontCollectionTest(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::OHDrawingFontCollectionTest001();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value OHDrawingTypographyLargeValueTest(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::OHDrawingTypographyLargeValueTest016();
break;
case CASE_NUM_1:
result = OHOS::Rosen::Drawing::OHDrawingTypographyLargeValueTest026();
break;
case CASE_NUM_2:
result = OHOS::Rosen::Drawing::OHDrawingTypographyLargeValueTest027();
break;
case CASE_NUM_3:
result = OHOS::Rosen::Drawing::OHDrawingTypographyLargeValueTest042();
break;
case CASE_NUM_4:
result = OHOS::Rosen::Drawing::OHDrawingTypographyLargeValueTestWithIndent();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value OHDrawingCreateTextTab(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::OHDrawingCreateTextTab001();
break;
case CASE_NUM_1:
result = OHOS::Rosen::Drawing::OHDrawingCreateTextTab002();
break;
case CASE_NUM_2:
result = OHOS::Rosen::Drawing::OHDrawingCreateTextTab003();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value TypographyTest(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::TypographyTest001();
break;
case CASE_NUM_1:
result = OHOS::Rosen::Drawing::TypographyTest002();
break;
case CASE_NUM_2:
result = OHOS::Rosen::Drawing::TypographyTest003();
break;
case CASE_NUM_3:
result = OHOS::Rosen::Drawing::TypographyTest004();
break;
case CASE_NUM_4:
result = OHOS::Rosen::Drawing::TypographyTest005();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value FontGetTextPath(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::FontGetTextPath001();
break;
case CASE_NUM_1:
result = OHOS::Rosen::Drawing::FontGetTextPath002();
break;
case CASE_NUM_2:
result = OHOS::Rosen::Drawing::FontGetTextPath003();
break;
case CASE_NUM_3:
result = OHOS::Rosen::Drawing::FontGetTextPath004();
break;
case CASE_NUM_4:
result = OHOS::Rosen::Drawing::FontGetTextPath005();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static int ExecuteTextLineTestCase(int32_t caseNum)
{
static constexpr std::array<NapiFn, TEXT_LINE_TEXT_HANDLER_COUNT> handlers = {
OHOS::Rosen::Drawing::TextLineTest001, OHOS::Rosen::Drawing::TextLineTest002,
OHOS::Rosen::Drawing::TextLineTest003, OHOS::Rosen::Drawing::TextLineTest004,
OHOS::Rosen::Drawing::TextLineTest005, OHOS::Rosen::Drawing::TextLineTest006,
OHOS::Rosen::Drawing::TextLineTest007, OHOS::Rosen::Drawing::TextLineTest008,
OHOS::Rosen::Drawing::TextLineTest009, OHOS::Rosen::Drawing::TextLineTest010,
OHOS::Rosen::Drawing::TextLineTest011, OHOS::Rosen::Drawing::TextLineTest012,
OHOS::Rosen::Drawing::TextLineTest013, OHOS::Rosen::Drawing::TextLineTest014,
OHOS::Rosen::Drawing::TextLineTest015, OHOS::Rosen::Drawing::TextLineTest016,
OHOS::Rosen::Drawing::TextLineTest017, OHOS::Rosen::Drawing::TextLineTest018,
OHOS::Rosen::Drawing::TextLineTest019, OHOS::Rosen::Drawing::TextLineTest020,
OHOS::Rosen::Drawing::TextLineTest021, OHOS::Rosen::Drawing::TextLineTest022,
OHOS::Rosen::Drawing::TextLineTest023, OHOS::Rosen::Drawing::TextLineTest024,
OHOS::Rosen::Drawing::TextLineTest025,
};
return DispatchByCaseNum(caseNum, handlers);
}
static napi_value TextLineTest(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result = ExecuteTextLineTestCase(caseNum);
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static int ExecuteRunTestCase(int32_t caseNum)
{
static constexpr std::array<NapiFn, EXECUTE_RUN_TEST_HANDLER_COUNT> handlers = {
OHOS::Rosen::Drawing::RunTest001, OHOS::Rosen::Drawing::RunTest002, OHOS::Rosen::Drawing::RunTest003,
OHOS::Rosen::Drawing::RunTest004, OHOS::Rosen::Drawing::RunTest005, OHOS::Rosen::Drawing::RunTest006,
OHOS::Rosen::Drawing::RunTest007, OHOS::Rosen::Drawing::RunTest008, OHOS::Rosen::Drawing::RunTest009,
};
return DispatchByCaseNum(caseNum, handlers);
}
static napi_value RunTest(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result = ExecuteRunTestCase(caseNum);
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value OHDrawingSetTypographyTextAutoSpaceTest(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::OHDrawingSetTypographyTextAutoSpaceTest001();
break;
case CASE_NUM_1:
result = OHOS::Rosen::Drawing::OHDrawingSetTypographyTextAutoSpaceTest002();
break;
case CASE_NUM_2:
result = OHOS::Rosen::Drawing::OHDrawingSetTypographyTextAutoSpaceTest003();
break;
case CASE_NUM_3:
result = OHOS::Rosen::Drawing::OHDrawingSetTypographyTextAutoSpaceTest004();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value OHDrawingSetTextUndefinedGlyphDisplay(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::OHDrawingSetTextUndefinedGlyphDisplay001();
break;
case CASE_NUM_1:
result = OHOS::Rosen::Drawing::OHDrawingSetTextUndefinedGlyphDisplay002();
break;
case CASE_NUM_2:
result = OHOS::Rosen::Drawing::OHDrawingSetTextUndefinedGlyphDisplay003();
break;
case CASE_NUM_3:
result = OHOS::Rosen::Drawing::OHDrawingSetTextUndefinedGlyphDisplay004();
break;
case CASE_NUM_4:
result = OHOS::Rosen::Drawing::OHDrawingSetTextUndefinedGlyphDisplay005();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value OHDrawingTypographyUpdate(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::OHDrawingTypographyUpdate001();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value OHDrawingSetTypographyTextTrailingSpaceOptimized(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::OHDrawingSetTypographyTextTrailingSpaceOptimized001();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value OHDrawingSetTypographyVerticalAlignment(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::OHDrawingSetTypographyVerticalAlignment001();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static int ExecuteOHDrawingTypographyTestCasePart1(int32_t caseNum)
{
static constexpr std::array<NapiFn, 30> handlers = {
OHOS::Rosen::Drawing::OHDrawingTypographyTest001,
OHOS::Rosen::Drawing::OHDrawingTypographyTest002,
OHOS::Rosen::Drawing::OHDrawingTypographyTest003,
OHOS::Rosen::Drawing::OHDrawingTypographyTest004,
OHOS::Rosen::Drawing::OHDrawingTypographyTest005,
OHOS::Rosen::Drawing::OHDrawingTypographyTest006,
OHOS::Rosen::Drawing::OHDrawingTypographyTest007,
OHOS::Rosen::Drawing::OHDrawingTypographyTest008,
OHOS::Rosen::Drawing::OHDrawingTypographyTest009,
OHOS::Rosen::Drawing::OHDrawingTypographyTest010,
nullptr,
OHOS::Rosen::Drawing::OHDrawingTypographyTest012,
OHOS::Rosen::Drawing::OHDrawingTypographyTest013,
OHOS::Rosen::Drawing::OHDrawingTypographyTest014,
OHOS::Rosen::Drawing::OHDrawingTypographyTest015,
OHOS::Rosen::Drawing::OHDrawingTypographyTest016,
OHOS::Rosen::Drawing::OHDrawingTypographyTest017,
OHOS::Rosen::Drawing::OHDrawingTypographyTest018,
OHOS::Rosen::Drawing::OHDrawingTypographyTest019,
OHOS::Rosen::Drawing::OHDrawingTypographyTest020,
OHOS::Rosen::Drawing::OHDrawingTypographyTest021,
OHOS::Rosen::Drawing::OHDrawingTypographyTest022,
OHOS::Rosen::Drawing::OHDrawingTypographyTest023,
OHOS::Rosen::Drawing::OHDrawingTypographyTest024,
OHOS::Rosen::Drawing::OHDrawingTypographyTest025,
OHOS::Rosen::Drawing::OHDrawingTypographyTest026,
OHOS::Rosen::Drawing::OHDrawingTypographyTest027,
OHOS::Rosen::Drawing::OHDrawingTypographyTest028,
OHOS::Rosen::Drawing::OHDrawingTypographyTest029,
OHOS::Rosen::Drawing::OHDrawingTypographyTest030,
};
return DispatchByCaseNum(caseNum, handlers);
}
static int ExecuteOHDrawingTypographyTestCasePart2(int32_t caseNum)
{
static constexpr std::array<NapiFn, 30> handlers = {
OHOS::Rosen::Drawing::OHDrawingTypographyTest031, OHOS::Rosen::Drawing::OHDrawingTypographyTest032,
OHOS::Rosen::Drawing::OHDrawingTypographyTest033, OHOS::Rosen::Drawing::OHDrawingTypographyTest034,
OHOS::Rosen::Drawing::OHDrawingTypographyTest035, OHOS::Rosen::Drawing::OHDrawingTypographyTest036,
OHOS::Rosen::Drawing::OHDrawingTypographyTest037, OHOS::Rosen::Drawing::OHDrawingTypographyTest038,
OHOS::Rosen::Drawing::OHDrawingTypographyTest039, OHOS::Rosen::Drawing::OHDrawingTypographyTest040,
OHOS::Rosen::Drawing::OHDrawingTypographyTest041, OHOS::Rosen::Drawing::OHDrawingTypographyTest042,
OHOS::Rosen::Drawing::OHDrawingTypographyTest043, OHOS::Rosen::Drawing::OHDrawingTypographyTest044,
OHOS::Rosen::Drawing::OHDrawingTypographyTest045, OHOS::Rosen::Drawing::OHDrawingTypographyTest046,
OHOS::Rosen::Drawing::OHDrawingTypographyTest047, OHOS::Rosen::Drawing::OHDrawingTypographyTest048,
OHOS::Rosen::Drawing::OHDrawingTypographyTest049, OHOS::Rosen::Drawing::OHDrawingTypographyTest050,
OHOS::Rosen::Drawing::OHDrawingTypographyTest051, nullptr,
OHOS::Rosen::Drawing::OHDrawingTypographyTest053, OHOS::Rosen::Drawing::OHDrawingTypographyTest054,
OHOS::Rosen::Drawing::OHDrawingTypographyTest055, OHOS::Rosen::Drawing::OHDrawingTypographyTest056,
OHOS::Rosen::Drawing::OHDrawingTypographyTest057, OHOS::Rosen::Drawing::OHDrawingTypographyTest058,
OHOS::Rosen::Drawing::OHDrawingTypographyTest059, OHOS::Rosen::Drawing::OHDrawingTypographyTest060,
};
return DispatchByCaseNum(caseNum - CASE_NUM_30, handlers);
}
static int ExecuteOHDrawingTypographyTestCasePart3(int32_t caseNum)
{
static constexpr std::array<NapiFn, 31> handlers = {
OHOS::Rosen::Drawing::OHDrawingTypographyTest061,
OHOS::Rosen::Drawing::OHDrawingTypographyTest062,
OHOS::Rosen::Drawing::OHDrawingTypographyTest063,
OHOS::Rosen::Drawing::OHDrawingTypographyTest064,
OHOS::Rosen::Drawing::OHDrawingTypographyTest065,
OHOS::Rosen::Drawing::OHDrawingTypographyTest066,
OHOS::Rosen::Drawing::OHDrawingTypographyTest067,
OHOS::Rosen::Drawing::OHDrawingTypographyTest068,
OHOS::Rosen::Drawing::OHDrawingTypographyTest069,
OHOS::Rosen::Drawing::OHDrawingTypographyTest070,
OHOS::Rosen::Drawing::OHDrawingTypographyTest071,
OHOS::Rosen::Drawing::OHDrawingTypographyTest072,
OHOS::Rosen::Drawing::OHDrawingTypographyTest073,
OHOS::Rosen::Drawing::OHDrawingTypographyTest074,
OHOS::Rosen::Drawing::OHDrawingTypographyTest075,
nullptr,
OHOS::Rosen::Drawing::OHDrawingTypographyTest077,
OHOS::Rosen::Drawing::OHDrawingTypographyTest078,
nullptr,
OHOS::Rosen::Drawing::OHDrawingTypographyTest080,
OHOS::Rosen::Drawing::OHDrawingTypographyTest081,
OHOS::Rosen::Drawing::OHDrawingTypographyTest082,
OHOS::Rosen::Drawing::OHDrawingTypographyTest083,
OHOS::Rosen::Drawing::OHDrawingTypographyTest084,
OHOS::Rosen::Drawing::OHDrawingTypographyTest085,
OHOS::Rosen::Drawing::OHDrawingTypographyTest086,
OHOS::Rosen::Drawing::OHDrawingTypographyTest102,
OHOS::Rosen::Drawing::OHDrawingTypographyTest103,
OHOS::Rosen::Drawing::OHDrawingTypographyTest104,
OHOS::Rosen::Drawing::OHDrawingTypographyTest105,
OHOS::Rosen::Drawing::OHDrawingTypographyTestWithIndent,
};
return DispatchByCaseNum(caseNum - CASE_NUM_60, handlers);
}
static int ExecuteOHDrawingTypographyTestCase(int32_t caseNum)
{
if (caseNum >= CASE_NUM_0 && caseNum < CASE_NUM_30) {
return ExecuteOHDrawingTypographyTestCasePart1(caseNum);
} else if (caseNum >= CASE_NUM_30 && caseNum < CASE_NUM_60) {
return ExecuteOHDrawingTypographyTestCasePart2(caseNum);
} else if (caseNum >= CASE_NUM_60 && caseNum <= CASE_NUM_90) {
return ExecuteOHDrawingTypographyTestCasePart3(caseNum);
}
return RESULT_ERROR;
}
static napi_value OHDrawingTypographyTest(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result = ExecuteOHDrawingTypographyTestCase(caseNum);
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value OHDrawingAddTextStyleDecoration(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::OHDrawingAddTextStyleDecoration001();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value OHDrawingTextLineEnumerateCaretOffsets(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::OHDrawingTextLineEnumerateCaretOffsets001();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
static napi_value testOHDrawingUnregisterFont(napi_env env, napi_callback_info info)
{
return NapiTry(env, [&]() -> napi_value {
int32_t caseNum = GetInt32Arg(env, info, ARG_INDEX, DEFAULT_ARG);
int result;
switch (caseNum) {
case CASE_NUM_0:
result = OHOS::Rosen::Drawing::TestOHDrawingUnregisterFont001();
break;
case CASE_NUM_1:
result = OHOS::Rosen::Drawing::TestOHDrawingUnregisterFont002();
break;
default:
result = RESULT_ERROR;
break;
}
napi_value resultValue;
napi_create_int32(env, result, &resultValue);
return resultValue;
});
}
inline napi_property_descriptor MakeNapiDesc(const char* name, napi_callback cb)
{
return { name, nullptr, cb, nullptr, nullptr, nullptr, napi_default, nullptr };
}
#define DECL_NAPI_DESC(fn) MakeNapiDesc(#fn, fn)
static const napi_property_descriptor g_graphicDescriptors[] = {
DECL_NAPI_DESC(OHDrawingCopyTextStyle),
DECL_NAPI_DESC(OHDrawingCopyTextShadow),
DECL_NAPI_DESC(OHDrawingCopyTypographyStyle),
DECL_NAPI_DESC(OHDrawingFontMgrTest),
DECL_NAPI_DESC(OHDrawingFontMgrMatchFamilyStyleCharacter),
DECL_NAPI_DESC(NativeFontTest_FontMeasureText),
DECL_NAPI_DESC(NativeDrawingRegisterFontTest),
DECL_NAPI_DESC(OH_Drawing_FontCollectionTest),
DECL_NAPI_DESC(OHDrawingTypographyLargeValueTest),
DECL_NAPI_DESC(OHDrawingCreateTextTab),
DECL_NAPI_DESC(TypographyTest),
DECL_NAPI_DESC(FontGetTextPath),
DECL_NAPI_DESC(TextLineTest),
DECL_NAPI_DESC(RunTest),
DECL_NAPI_DESC(OHDrawingSetTypographyTextAutoSpaceTest),
DECL_NAPI_DESC(OHDrawingSetTextUndefinedGlyphDisplay),
DECL_NAPI_DESC(OHDrawingTypographyUpdate),
DECL_NAPI_DESC(OHDrawingSetTypographyTextTrailingSpaceOptimized),
DECL_NAPI_DESC(OHDrawingSetTypographyVerticalAlignment),
DECL_NAPI_DESC(OHDrawingTypographyTest),
DECL_NAPI_DESC(OHDrawingAddTextStyleDecoration),
DECL_NAPI_DESC(OHDrawingTextLineEnumerateCaretOffsets),
DECL_NAPI_DESC(testOHDrawingUnregisterFont),
};
EXTERN_C_START static napi_value Init(napi_env env, napi_value exports)
{
napi_define_properties(
env, exports, sizeof(g_graphicDescriptors) / sizeof(g_graphicDescriptors[0]), g_graphicDescriptors);
return exports;
}
EXTERN_C_END
static napi_module graphicdrawingModule = {
.nm_version = 1,
.nm_flags = 0,
.nm_filename = nullptr,
.nm_register_func = Init,
.nm_modname = "graphicdrawing",
.nm_priv = ((void*)0),
.reserved = { 0 },
};
extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
{
napi_module_register(&graphicdrawingModule);
}