14d6c458bSopenharmony_ci/*
24d6c458bSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
34d6c458bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44d6c458bSopenharmony_ci * you may not use this file except in compliance with the License.
54d6c458bSopenharmony_ci * You may obtain a copy of the License at
64d6c458bSopenharmony_ci *
74d6c458bSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84d6c458bSopenharmony_ci *
94d6c458bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104d6c458bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114d6c458bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124d6c458bSopenharmony_ci * See the License for the specific language governing permissions and
134d6c458bSopenharmony_ci * limitations under the License.
144d6c458bSopenharmony_ci */
154d6c458bSopenharmony_ci
164d6c458bSopenharmony_ci#include "test.h"
174d6c458bSopenharmony_ci#include <codecvt>
184d6c458bSopenharmony_ci#include "commonlibrary/ets_utils/js_util_module/util/js_uuid.h"
194d6c458bSopenharmony_ci#include "commonlibrary/ets_utils/js_util_module/util/js_stringdecoder.h"
204d6c458bSopenharmony_ci#include "commonlibrary/ets_utils/js_util_module/util/js_textencoder.h"
214d6c458bSopenharmony_ci#include "commonlibrary/ets_utils/js_util_module/util/js_textdecoder.h"
224d6c458bSopenharmony_ci#include "commonlibrary/ets_utils/js_util_module/util/js_base64.h"
234d6c458bSopenharmony_ci#include "ohos/init_data.h"
244d6c458bSopenharmony_ci#include "tools/log.h"
254d6c458bSopenharmony_ci#include "napi/native_api.h"
264d6c458bSopenharmony_ci#include "napi/native_node_api.h"
274d6c458bSopenharmony_ci#include "securec.h"
284d6c458bSopenharmony_ci
294d6c458bSopenharmony_ci
304d6c458bSopenharmony_ci#define ASSERT_CHECK_CALL(call)   \
314d6c458bSopenharmony_ci    {                             \
324d6c458bSopenharmony_ci        ASSERT_EQ(call, napi_ok); \
334d6c458bSopenharmony_ci    }
344d6c458bSopenharmony_ci
354d6c458bSopenharmony_ci#define ASSERT_CHECK_VALUE_TYPE(env, value, type)               \
364d6c458bSopenharmony_ci    {                                                           \
374d6c458bSopenharmony_ci        napi_valuetype valueType = napi_undefined;              \
384d6c458bSopenharmony_ci        ASSERT_TRUE(value != nullptr);                          \
394d6c458bSopenharmony_ci        ASSERT_CHECK_CALL(napi_typeof(env, value, &valueType)); \
404d6c458bSopenharmony_ci        ASSERT_EQ(valueType, type);                             \
414d6c458bSopenharmony_ci    }
424d6c458bSopenharmony_ci
434d6c458bSopenharmony_ci/* @tc.name: GetStringUUIDTest001
444d6c458bSopenharmony_ci * @tc.desc: Test Generate a random RFC 4122 version 4 UUID.
454d6c458bSopenharmony_ci * @tc.type: FUNC
464d6c458bSopenharmony_ci */
474d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetStringUUIDTest001, testing::ext::TestSize.Level0)
484d6c458bSopenharmony_ci{
494d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
504d6c458bSopenharmony_ci    std::string uuid = OHOS::Util::GetStringUUID(env, true);
514d6c458bSopenharmony_ci    ASSERT_EQ(uuid.length(), 36);
524d6c458bSopenharmony_ci}
534d6c458bSopenharmony_ci
544d6c458bSopenharmony_ci/* @tc.name: GetStringUUIDTest002
554d6c458bSopenharmony_ci * @tc.desc: Test Generate a random RFC 4122 version 4 UUID.
564d6c458bSopenharmony_ci * @tc.type: FUNC
574d6c458bSopenharmony_ci */
584d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetStringUUIDTest002, testing::ext::TestSize.Level0)
594d6c458bSopenharmony_ci{
604d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
614d6c458bSopenharmony_ci    std::string uuid = OHOS::Util::GetStringUUID(env, false);
624d6c458bSopenharmony_ci    ASSERT_EQ(uuid.length(), 36);
634d6c458bSopenharmony_ci}
644d6c458bSopenharmony_ci
654d6c458bSopenharmony_ci/* @tc.name: GetBinaryUUIDTest001
664d6c458bSopenharmony_ci * @tc.desc: Test Generate a random RFC 4122 version 4 UUID.
674d6c458bSopenharmony_ci * @tc.type: FUNC
684d6c458bSopenharmony_ci */
694d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetBinaryUUIDTest001, testing::ext::TestSize.Level0)
704d6c458bSopenharmony_ci{
714d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
724d6c458bSopenharmony_ci    napi_value arr = OHOS::Util::GetBinaryUUID(env, true);
734d6c458bSopenharmony_ci    napi_typedarray_type type = napi_int8_array;
744d6c458bSopenharmony_ci    size_t byteOffset = 0;
754d6c458bSopenharmony_ci    size_t length = 0;
764d6c458bSopenharmony_ci    void* resultData = nullptr;
774d6c458bSopenharmony_ci    napi_value resultBuffer = nullptr;
784d6c458bSopenharmony_ci    napi_get_typedarray_info(env, arr, &type, &length, &resultData, &resultBuffer, &byteOffset);
794d6c458bSopenharmony_ci    ASSERT_EQ(length, 16);
804d6c458bSopenharmony_ci}
814d6c458bSopenharmony_ci
824d6c458bSopenharmony_ci/* @tc.name: GetBinaryUUIDTest002
834d6c458bSopenharmony_ci * @tc.desc: Test Generate a random RFC 4122 version 4 UUID.
844d6c458bSopenharmony_ci * @tc.type: FUNC
854d6c458bSopenharmony_ci */
864d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetBinaryUUIDTest002, testing::ext::TestSize.Level0)
874d6c458bSopenharmony_ci{
884d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
894d6c458bSopenharmony_ci    napi_value arr = OHOS::Util::GetBinaryUUID(env, false);
904d6c458bSopenharmony_ci    napi_typedarray_type type = napi_int8_array;
914d6c458bSopenharmony_ci    size_t byteOffset = 0;
924d6c458bSopenharmony_ci    size_t length = 0;
934d6c458bSopenharmony_ci    void* resultData = nullptr;
944d6c458bSopenharmony_ci    napi_value resultBuffer = nullptr;
954d6c458bSopenharmony_ci    napi_get_typedarray_info(env, arr, &type, &length, &resultData, &resultBuffer, &byteOffset);
964d6c458bSopenharmony_ci    ASSERT_EQ(length, 16);
974d6c458bSopenharmony_ci}
984d6c458bSopenharmony_ci
994d6c458bSopenharmony_ci/* @tc.name: DoParseUUIDTest001
1004d6c458bSopenharmony_ci * @tc.desc: Parse a UUID from the string standard representation as described in the RFC 4122 version 4.
1014d6c458bSopenharmony_ci * @tc.type: FUNC
1024d6c458bSopenharmony_ci */
1034d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DoParseUUIDTest001, testing::ext::TestSize.Level0)
1044d6c458bSopenharmony_ci{
1054d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
1064d6c458bSopenharmony_ci    napi_value src = nullptr;
1074d6c458bSopenharmony_ci    napi_create_string_utf8(env, "84bdf796-66cc-4655-9b89-d6218d100f9c", NAPI_AUTO_LENGTH, &src);
1084d6c458bSopenharmony_ci    napi_value arr = OHOS::Util::DoParseUUID(env, src);
1094d6c458bSopenharmony_ci    napi_typedarray_type type = napi_int8_array;
1104d6c458bSopenharmony_ci    size_t byteOffset = 0;
1114d6c458bSopenharmony_ci    size_t length = 0;
1124d6c458bSopenharmony_ci    void* resultData = nullptr;
1134d6c458bSopenharmony_ci    napi_value resultBuffer = nullptr;
1144d6c458bSopenharmony_ci    napi_get_typedarray_info(env, arr, &type, &length, &resultData, &resultBuffer, &byteOffset);
1154d6c458bSopenharmony_ci    ASSERT_EQ(length, 16);
1164d6c458bSopenharmony_ci}
1174d6c458bSopenharmony_ci
1184d6c458bSopenharmony_ci/* @tc.name: DoParseUUIDTest002
1194d6c458bSopenharmony_ci * @tc.desc: Parse a UUID from the string standard representation as described in the RFC 4122 version 4.
1204d6c458bSopenharmony_ci * @tc.type: FUNC
1214d6c458bSopenharmony_ci */
1224d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DoParseUUIDTest002, testing::ext::TestSize.Level0)
1234d6c458bSopenharmony_ci{
1244d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
1254d6c458bSopenharmony_ci    napi_value src = nullptr;
1264d6c458bSopenharmony_ci    std::string input = "abc123";
1274d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), NAPI_AUTO_LENGTH, &src);
1284d6c458bSopenharmony_ci    napi_value arr = OHOS::Util::DoParseUUID(env, src);
1294d6c458bSopenharmony_ci    napi_typedarray_type type = napi_int8_array;
1304d6c458bSopenharmony_ci    size_t byteOffset = 0;
1314d6c458bSopenharmony_ci    size_t length = 0;
1324d6c458bSopenharmony_ci    void* resultData = nullptr;
1334d6c458bSopenharmony_ci    napi_value resultBuffer = nullptr;
1344d6c458bSopenharmony_ci    napi_get_typedarray_info(env, arr, &type, &length, &resultData, &resultBuffer, &byteOffset);
1354d6c458bSopenharmony_ci    ASSERT_EQ(length, 16);
1364d6c458bSopenharmony_ci}
1374d6c458bSopenharmony_ci
1384d6c458bSopenharmony_ci/* @tc.name: DoParseUUIDTest003
1394d6c458bSopenharmony_ci * @tc.desc: Parse a UUID from the string standard representation as described in the RFC 4122 version 4.
1404d6c458bSopenharmony_ci * @tc.type: FUNC
1414d6c458bSopenharmony_ci */
1424d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DoParseUUIDTest003, testing::ext::TestSize.Level0)
1434d6c458bSopenharmony_ci{
1444d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
1454d6c458bSopenharmony_ci    napi_value src = nullptr;
1464d6c458bSopenharmony_ci    std::string input = "abc123abc";
1474d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), NAPI_AUTO_LENGTH, &src);
1484d6c458bSopenharmony_ci    napi_value arr = OHOS::Util::DoParseUUID(env, src);
1494d6c458bSopenharmony_ci    napi_typedarray_type type = napi_int8_array;
1504d6c458bSopenharmony_ci    size_t byteOffset = 0;
1514d6c458bSopenharmony_ci    size_t length = 0;
1524d6c458bSopenharmony_ci    void* resultData = nullptr;
1534d6c458bSopenharmony_ci    napi_value resultBuffer = nullptr;
1544d6c458bSopenharmony_ci    napi_get_typedarray_info(env, arr, &type, &length, &resultData, &resultBuffer, &byteOffset);
1554d6c458bSopenharmony_ci    ASSERT_EQ(length, 16);
1564d6c458bSopenharmony_ci}
1574d6c458bSopenharmony_ci
1584d6c458bSopenharmony_ci/* @tc.name: DoParseUUIDTest004
1594d6c458bSopenharmony_ci * @tc.desc: Parse a UUID from the string standard representation as described in the RFC 4122 version 4.
1604d6c458bSopenharmony_ci * @tc.type: FUNC
1614d6c458bSopenharmony_ci */
1624d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DoParseUUIDTest004, testing::ext::TestSize.Level0)
1634d6c458bSopenharmony_ci{
1644d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
1654d6c458bSopenharmony_ci    napi_value src = nullptr;
1664d6c458bSopenharmony_ci    napi_value arr = OHOS::Util::DoParseUUID(env, src);
1674d6c458bSopenharmony_ci    ASSERT_EQ(arr, nullptr);
1684d6c458bSopenharmony_ci}
1694d6c458bSopenharmony_ci
1704d6c458bSopenharmony_ci/* @tc.name: HexToCharUUIDTest001
1714d6c458bSopenharmony_ci * @tc.desc: Hex to char with g convert to x.
1724d6c458bSopenharmony_ci * @tc.type: FUNC
1734d6c458bSopenharmony_ci */
1744d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, HexToCharUUIDTest001, testing::ext::TestSize.Level0)
1754d6c458bSopenharmony_ci{
1764d6c458bSopenharmony_ci    unsigned char input = 'g';
1774d6c458bSopenharmony_ci    unsigned char res = OHOS::Util::HexToChar(input);
1784d6c458bSopenharmony_ci    ASSERT_EQ(res, 'x');
1794d6c458bSopenharmony_ci}
1804d6c458bSopenharmony_ci
1814d6c458bSopenharmony_ci/* @tc.name: getEncodingTest001
1824d6c458bSopenharmony_ci * @tc.desc: Test acquire encoding mode.
1834d6c458bSopenharmony_ci * @tc.type: FUNC
1844d6c458bSopenharmony_ci */
1854d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, getEncodingTest001, testing::ext::TestSize.Level0)
1864d6c458bSopenharmony_ci{
1874d6c458bSopenharmony_ci    HILOG_INFO("getEncodingTest001 start");
1884d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
1894d6c458bSopenharmony_ci
1904d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("GBK");
1914d6c458bSopenharmony_ci    textEncoder.SetOrgEncoding("GBK");
1924d6c458bSopenharmony_ci    napi_value result = textEncoder.GetEncoding(env);
1934d6c458bSopenharmony_ci
1944d6c458bSopenharmony_ci    char *buffer = nullptr;
1954d6c458bSopenharmony_ci    size_t bufferSize = 0;
1964d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, result, buffer, -1, &bufferSize);
1974d6c458bSopenharmony_ci    if (bufferSize > 0) {
1984d6c458bSopenharmony_ci        buffer = new char[bufferSize + 1];
1994d6c458bSopenharmony_ci        napi_get_value_string_utf8(env, result, buffer, bufferSize + 1, &bufferSize);
2004d6c458bSopenharmony_ci    }
2014d6c458bSopenharmony_ci
2024d6c458bSopenharmony_ci    ASSERT_STREQ(buffer, "GBK");
2034d6c458bSopenharmony_ci    if (buffer != nullptr) {
2044d6c458bSopenharmony_ci        delete []buffer;
2054d6c458bSopenharmony_ci        buffer = nullptr;
2064d6c458bSopenharmony_ci    }
2074d6c458bSopenharmony_ci}
2084d6c458bSopenharmony_ci
2094d6c458bSopenharmony_ci/* @tc.name: getEncodingTest002
2104d6c458bSopenharmony_ci * @tc.desc: Test acquire encoding mode.
2114d6c458bSopenharmony_ci * @tc.type: FUNC
2124d6c458bSopenharmony_ci */
2134d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, getEncodingTest002, testing::ext::TestSize.Level0)
2144d6c458bSopenharmony_ci{
2154d6c458bSopenharmony_ci    HILOG_INFO("getEncodingTest002 start");
2164d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
2174d6c458bSopenharmony_ci
2184d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("gb18030");
2194d6c458bSopenharmony_ci    textEncoder.SetOrgEncoding("gb18030");
2204d6c458bSopenharmony_ci    napi_value result = textEncoder.GetEncoding(env);
2214d6c458bSopenharmony_ci
2224d6c458bSopenharmony_ci    char *buffer = nullptr;
2234d6c458bSopenharmony_ci    size_t bufferSize = 0;
2244d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, result, buffer, -1, &bufferSize);
2254d6c458bSopenharmony_ci    if (bufferSize > 0) {
2264d6c458bSopenharmony_ci        buffer = new char[bufferSize + 1];
2274d6c458bSopenharmony_ci        napi_get_value_string_utf8(env, result, buffer, bufferSize + 1, &bufferSize);
2284d6c458bSopenharmony_ci    }
2294d6c458bSopenharmony_ci
2304d6c458bSopenharmony_ci    ASSERT_STREQ(buffer, "gb18030");
2314d6c458bSopenharmony_ci    if (buffer != nullptr) {
2324d6c458bSopenharmony_ci        delete []buffer;
2334d6c458bSopenharmony_ci        buffer = nullptr;
2344d6c458bSopenharmony_ci    }
2354d6c458bSopenharmony_ci}
2364d6c458bSopenharmony_ci
2374d6c458bSopenharmony_ci/* @tc.name: getEncodingTest003
2384d6c458bSopenharmony_ci * @tc.desc: Test acquire encoding mode.
2394d6c458bSopenharmony_ci * @tc.type: FUNC
2404d6c458bSopenharmony_ci */
2414d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, getEncodingTest003, testing::ext::TestSize.Level0)
2424d6c458bSopenharmony_ci{
2434d6c458bSopenharmony_ci    HILOG_INFO("getEncodingTest003 start");
2444d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
2454d6c458bSopenharmony_ci
2464d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("GB18030");
2474d6c458bSopenharmony_ci    textEncoder.SetOrgEncoding("GB18030");
2484d6c458bSopenharmony_ci    napi_value result = textEncoder.GetEncoding(env);
2494d6c458bSopenharmony_ci
2504d6c458bSopenharmony_ci    char *buffer = nullptr;
2514d6c458bSopenharmony_ci    size_t bufferSize = 0;
2524d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, result, buffer, -1, &bufferSize);
2534d6c458bSopenharmony_ci    if (bufferSize > 0) {
2544d6c458bSopenharmony_ci        buffer = new char[bufferSize + 1];
2554d6c458bSopenharmony_ci        napi_get_value_string_utf8(env, result, buffer, bufferSize + 1, &bufferSize);
2564d6c458bSopenharmony_ci    }
2574d6c458bSopenharmony_ci
2584d6c458bSopenharmony_ci    ASSERT_STREQ(buffer, "GB18030");
2594d6c458bSopenharmony_ci    if (buffer != nullptr) {
2604d6c458bSopenharmony_ci        delete []buffer;
2614d6c458bSopenharmony_ci        buffer = nullptr;
2624d6c458bSopenharmony_ci    }
2634d6c458bSopenharmony_ci}
2644d6c458bSopenharmony_ci
2654d6c458bSopenharmony_ci/**
2664d6c458bSopenharmony_ci * @tc.name: textEncodeTest001
2674d6c458bSopenharmony_ci * @tc.desc: Test encode src.
2684d6c458bSopenharmony_ci * @tc.type: FUNC
2694d6c458bSopenharmony_ci */
2704d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeTest001, testing::ext::TestSize.Level0)
2714d6c458bSopenharmony_ci{
2724d6c458bSopenharmony_ci    HILOG_INFO("getEncodingTest001 start");
2734d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
2744d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("utf-8");
2754d6c458bSopenharmony_ci
2764d6c458bSopenharmony_ci    std::string input = "abc123";
2774d6c458bSopenharmony_ci    napi_value src = nullptr;
2784d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
2794d6c458bSopenharmony_ci    napi_value result = textEncoder.Encode(env, src);
2804d6c458bSopenharmony_ci
2814d6c458bSopenharmony_ci    char excepted[7] = {0x61, 0x62, 0x63, 0x31, 0x32, 0x33, 0};
2824d6c458bSopenharmony_ci
2834d6c458bSopenharmony_ci    napi_typedarray_type type;
2844d6c458bSopenharmony_ci    size_t srcLength = 0;
2854d6c458bSopenharmony_ci    void* srcData = nullptr;
2864d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
2874d6c458bSopenharmony_ci    size_t byteOffset = 0;
2884d6c458bSopenharmony_ci
2894d6c458bSopenharmony_ci    napi_get_typedarray_info(
2904d6c458bSopenharmony_ci        env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
2914d6c458bSopenharmony_ci
2924d6c458bSopenharmony_ci    ASSERT_EQ(srcLength, 6);
2934d6c458bSopenharmony_ci    char* res = reinterpret_cast<char*>(srcData);
2944d6c458bSopenharmony_ci
2954d6c458bSopenharmony_ci    res[srcLength] = 0;
2964d6c458bSopenharmony_ci    ASSERT_STREQ(res, excepted);
2974d6c458bSopenharmony_ci}
2984d6c458bSopenharmony_ci
2994d6c458bSopenharmony_ci/**
3004d6c458bSopenharmony_ci * @tc.name: textEncodeTest002
3014d6c458bSopenharmony_ci * @tc.desc: Test encode src.
3024d6c458bSopenharmony_ci * @tc.type: FUNC
3034d6c458bSopenharmony_ci */
3044d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeTest002, testing::ext::TestSize.Level0)
3054d6c458bSopenharmony_ci{
3064d6c458bSopenharmony_ci    HILOG_INFO("getEncodingTest002 start");
3074d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
3084d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("utf-8");
3094d6c458bSopenharmony_ci
3104d6c458bSopenharmony_ci    std::string input = "";
3114d6c458bSopenharmony_ci    napi_value src = nullptr;
3124d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
3134d6c458bSopenharmony_ci    napi_value result = textEncoder.Encode(env, src);
3144d6c458bSopenharmony_ci
3154d6c458bSopenharmony_ci    napi_typedarray_type type;
3164d6c458bSopenharmony_ci    size_t srcLength = 0;
3174d6c458bSopenharmony_ci    void* srcData = nullptr;
3184d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
3194d6c458bSopenharmony_ci    size_t byteOffset = 0;
3204d6c458bSopenharmony_ci
3214d6c458bSopenharmony_ci    napi_get_typedarray_info(
3224d6c458bSopenharmony_ci        env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
3234d6c458bSopenharmony_ci
3244d6c458bSopenharmony_ci    ASSERT_STREQ((char*)srcData, nullptr);
3254d6c458bSopenharmony_ci}
3264d6c458bSopenharmony_ci
3274d6c458bSopenharmony_ci/**
3284d6c458bSopenharmony_ci * @tc.name: textEncodeTest003
3294d6c458bSopenharmony_ci * @tc.desc: Test encode src.
3304d6c458bSopenharmony_ci * @tc.type: FUNC
3314d6c458bSopenharmony_ci */
3324d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeTest003, testing::ext::TestSize.Level0)
3334d6c458bSopenharmony_ci{
3344d6c458bSopenharmony_ci    HILOG_INFO("getEncodingTest003 start");
3354d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
3364d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("utf-8");
3374d6c458bSopenharmony_ci
3384d6c458bSopenharmony_ci    std::string input = "text";
3394d6c458bSopenharmony_ci    napi_value src = nullptr;
3404d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
3414d6c458bSopenharmony_ci    napi_value result = textEncoder.Encode(env, src);
3424d6c458bSopenharmony_ci
3434d6c458bSopenharmony_ci    char excepted[7] = {0x74, 0x65, 0x78, 0x74, 0};
3444d6c458bSopenharmony_ci
3454d6c458bSopenharmony_ci    napi_typedarray_type type;
3464d6c458bSopenharmony_ci    size_t srcLength = 0;
3474d6c458bSopenharmony_ci    void* srcData = nullptr;
3484d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
3494d6c458bSopenharmony_ci    size_t byteOffset = 0;
3504d6c458bSopenharmony_ci
3514d6c458bSopenharmony_ci    napi_get_typedarray_info(
3524d6c458bSopenharmony_ci        env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
3534d6c458bSopenharmony_ci
3544d6c458bSopenharmony_ci    ASSERT_EQ(srcLength, 4);
3554d6c458bSopenharmony_ci    char* res = reinterpret_cast<char*>(srcData);
3564d6c458bSopenharmony_ci
3574d6c458bSopenharmony_ci    res[srcLength] = 0;
3584d6c458bSopenharmony_ci    ASSERT_STREQ(res, excepted);
3594d6c458bSopenharmony_ci}
3604d6c458bSopenharmony_ci
3614d6c458bSopenharmony_ci/**
3624d6c458bSopenharmony_ci * @tc.name: textEncodeTest004
3634d6c458bSopenharmony_ci * @tc.desc: Test encode src.
3644d6c458bSopenharmony_ci * @tc.type: FUNC
3654d6c458bSopenharmony_ci */
3664d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeTest004, testing::ext::TestSize.Level0)
3674d6c458bSopenharmony_ci{
3684d6c458bSopenharmony_ci    SetHwIcuDirectory();
3694d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
3704d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("gbk");
3714d6c458bSopenharmony_ci
3724d6c458bSopenharmony_ci    std::string input = "abc123";
3734d6c458bSopenharmony_ci    napi_value src = nullptr;
3744d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
3754d6c458bSopenharmony_ci    napi_value result = textEncoder.Encode(env, src);
3764d6c458bSopenharmony_ci
3774d6c458bSopenharmony_ci    char excepted[7] = {0x61, 0x62, 0x63, 0x31, 0x32, 0x33, 0}; // 7:nums of args
3784d6c458bSopenharmony_ci
3794d6c458bSopenharmony_ci    napi_typedarray_type type;
3804d6c458bSopenharmony_ci    size_t srcLength = 0;
3814d6c458bSopenharmony_ci    void *srcData = nullptr;
3824d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
3834d6c458bSopenharmony_ci    size_t byteOffset = 0;
3844d6c458bSopenharmony_ci
3854d6c458bSopenharmony_ci    napi_get_typedarray_info(
3864d6c458bSopenharmony_ci        env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
3874d6c458bSopenharmony_ci
3884d6c458bSopenharmony_ci    ASSERT_EQ(srcLength, 6); // 6:string length
3894d6c458bSopenharmony_ci    char *res = reinterpret_cast<char*>(srcData);
3904d6c458bSopenharmony_ci
3914d6c458bSopenharmony_ci    res[srcLength] = 0;
3924d6c458bSopenharmony_ci    ASSERT_STREQ(res, excepted);
3934d6c458bSopenharmony_ci}
3944d6c458bSopenharmony_ci
3954d6c458bSopenharmony_ci/**
3964d6c458bSopenharmony_ci * @tc.name: textEncodeTest005
3974d6c458bSopenharmony_ci * @tc.desc: Test encode src.
3984d6c458bSopenharmony_ci * @tc.type: FUNC
3994d6c458bSopenharmony_ci */
4004d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeTest005, testing::ext::TestSize.Level0)
4014d6c458bSopenharmony_ci{
4024d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
4034d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("utf-8");
4044d6c458bSopenharmony_ci    napi_value src = nullptr;
4054d6c458bSopenharmony_ci    napi_value result = textEncoder.Encode(env, src);
4064d6c458bSopenharmony_ci    ASSERT_TRUE(result == nullptr);
4074d6c458bSopenharmony_ci}
4084d6c458bSopenharmony_ci
4094d6c458bSopenharmony_ci/**
4104d6c458bSopenharmony_ci * @tc.name: textEncodeTest006
4114d6c458bSopenharmony_ci * @tc.desc: Test encode src.
4124d6c458bSopenharmony_ci * @tc.type: FUNC
4134d6c458bSopenharmony_ci */
4144d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeTest006, testing::ext::TestSize.Level0)
4154d6c458bSopenharmony_ci{
4164d6c458bSopenharmony_ci    HILOG_INFO("textEncodeTest006 start");
4174d6c458bSopenharmony_ci    SetHwIcuDirectory();
4184d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
4194d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("big5");
4204d6c458bSopenharmony_ci
4214d6c458bSopenharmony_ci    std::string input = "abc哈熠";
4224d6c458bSopenharmony_ci    napi_value src = nullptr;
4234d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
4244d6c458bSopenharmony_ci    napi_value result = textEncoder.Encode(env, src);
4254d6c458bSopenharmony_ci
4264d6c458bSopenharmony_ci    char excepted[8] = {0x61, 0x62, 0x63, 0xAB, 0xA2, 0xE6, 0x66, 0}; // 8:nums of args
4274d6c458bSopenharmony_ci
4284d6c458bSopenharmony_ci    napi_typedarray_type type;
4294d6c458bSopenharmony_ci    size_t srcLength = 0;
4304d6c458bSopenharmony_ci    void *srcData = nullptr;
4314d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
4324d6c458bSopenharmony_ci    size_t byteOffset = 0;
4334d6c458bSopenharmony_ci
4344d6c458bSopenharmony_ci    napi_get_typedarray_info(
4354d6c458bSopenharmony_ci        env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
4364d6c458bSopenharmony_ci
4374d6c458bSopenharmony_ci    ASSERT_EQ(srcLength, 7); // 7:string length
4384d6c458bSopenharmony_ci    char *res = reinterpret_cast<char*>(srcData);
4394d6c458bSopenharmony_ci
4404d6c458bSopenharmony_ci    res[srcLength] = 0;
4414d6c458bSopenharmony_ci    ASSERT_STREQ(res, excepted);
4424d6c458bSopenharmony_ci}
4434d6c458bSopenharmony_ci
4444d6c458bSopenharmony_ci/**
4454d6c458bSopenharmony_ci * @tc.name: textEncodeTest007
4464d6c458bSopenharmony_ci * @tc.desc: Test encode src.
4474d6c458bSopenharmony_ci * @tc.type: FUNC
4484d6c458bSopenharmony_ci */
4494d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeTest007, testing::ext::TestSize.Level0)
4504d6c458bSopenharmony_ci{
4514d6c458bSopenharmony_ci    HILOG_INFO("textEncodeTest007 start");
4524d6c458bSopenharmony_ci    SetHwIcuDirectory();
4534d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
4544d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("shift_jis");
4554d6c458bSopenharmony_ci
4564d6c458bSopenharmony_ci    std::string input = "abc哈熠";
4574d6c458bSopenharmony_ci    napi_value src = nullptr;
4584d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
4594d6c458bSopenharmony_ci    napi_value result = textEncoder.Encode(env, src);
4604d6c458bSopenharmony_ci
4614d6c458bSopenharmony_ci    char excepted[8] = {0x61, 0x62, 0x63, 0x99, 0xFB, 0xFC, 0xFC, 0}; // 8:nums of args
4624d6c458bSopenharmony_ci
4634d6c458bSopenharmony_ci    napi_typedarray_type type;
4644d6c458bSopenharmony_ci    size_t srcLength = 0;
4654d6c458bSopenharmony_ci    void *srcData = nullptr;
4664d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
4674d6c458bSopenharmony_ci    size_t byteOffset = 0;
4684d6c458bSopenharmony_ci
4694d6c458bSopenharmony_ci    napi_get_typedarray_info(
4704d6c458bSopenharmony_ci        env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
4714d6c458bSopenharmony_ci
4724d6c458bSopenharmony_ci    ASSERT_EQ(srcLength, 7); // 7:string length
4734d6c458bSopenharmony_ci    char *res = reinterpret_cast<char*>(srcData);
4744d6c458bSopenharmony_ci
4754d6c458bSopenharmony_ci    res[srcLength] = 0;
4764d6c458bSopenharmony_ci    ASSERT_STREQ(res, excepted);
4774d6c458bSopenharmony_ci}
4784d6c458bSopenharmony_ci
4794d6c458bSopenharmony_ci/**
4804d6c458bSopenharmony_ci * @tc.name: textEncodeTest008
4814d6c458bSopenharmony_ci * @tc.desc: Test encode src.
4824d6c458bSopenharmony_ci * @tc.type: FUNC
4834d6c458bSopenharmony_ci */
4844d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeTest008, testing::ext::TestSize.Level0)
4854d6c458bSopenharmony_ci{
4864d6c458bSopenharmony_ci    HILOG_INFO("textEncodeTest008 start");
4874d6c458bSopenharmony_ci    SetHwIcuDirectory();
4884d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
4894d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("iso-2022-jp");
4904d6c458bSopenharmony_ci
4914d6c458bSopenharmony_ci    std::string input = "abc哈熠";
4924d6c458bSopenharmony_ci    napi_value src = nullptr;
4934d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
4944d6c458bSopenharmony_ci    napi_value result = textEncoder.Encode(env, src);
4954d6c458bSopenharmony_ci
4964d6c458bSopenharmony_ci    char excepted[13] = {0x61, 0x62, 0x63, 0x1B, 0x24, 0x42, 0x52, 0x7D, 0x1B, 0x28, 0x42, 0x1A, 0}; // 13:nums of args
4974d6c458bSopenharmony_ci
4984d6c458bSopenharmony_ci    napi_typedarray_type type;
4994d6c458bSopenharmony_ci    size_t srcLength = 0;
5004d6c458bSopenharmony_ci    void *srcData = nullptr;
5014d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
5024d6c458bSopenharmony_ci    size_t byteOffset = 0;
5034d6c458bSopenharmony_ci
5044d6c458bSopenharmony_ci    napi_get_typedarray_info(
5054d6c458bSopenharmony_ci        env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
5064d6c458bSopenharmony_ci
5074d6c458bSopenharmony_ci    ASSERT_EQ(srcLength, 12); // 12:string length
5084d6c458bSopenharmony_ci    char *res = reinterpret_cast<char*>(srcData);
5094d6c458bSopenharmony_ci
5104d6c458bSopenharmony_ci    res[srcLength] = 0;
5114d6c458bSopenharmony_ci    ASSERT_STREQ(res, excepted);
5124d6c458bSopenharmony_ci}
5134d6c458bSopenharmony_ci
5144d6c458bSopenharmony_ci/**
5154d6c458bSopenharmony_ci * @tc.name: textEncodeTest009
5164d6c458bSopenharmony_ci * @tc.desc: Test encode src.
5174d6c458bSopenharmony_ci * @tc.type: FUNC
5184d6c458bSopenharmony_ci */
5194d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeTest009, testing::ext::TestSize.Level0)
5204d6c458bSopenharmony_ci{
5214d6c458bSopenharmony_ci    HILOG_INFO("textEncodeTest009 start");
5224d6c458bSopenharmony_ci    SetHwIcuDirectory();
5234d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
5244d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("ibm866");
5254d6c458bSopenharmony_ci
5264d6c458bSopenharmony_ci    std::string input = "abc哈熠";
5274d6c458bSopenharmony_ci    napi_value src = nullptr;
5284d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
5294d6c458bSopenharmony_ci    napi_value result = textEncoder.Encode(env, src);
5304d6c458bSopenharmony_ci
5314d6c458bSopenharmony_ci    char excepted[6] = {0x61, 0x62, 0x63, 0x7F, 0x7F, 0}; // 6:nums of args
5324d6c458bSopenharmony_ci
5334d6c458bSopenharmony_ci    napi_typedarray_type type;
5344d6c458bSopenharmony_ci    size_t srcLength = 0;
5354d6c458bSopenharmony_ci    void *srcData = nullptr;
5364d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
5374d6c458bSopenharmony_ci    size_t byteOffset = 0;
5384d6c458bSopenharmony_ci
5394d6c458bSopenharmony_ci    napi_get_typedarray_info(
5404d6c458bSopenharmony_ci        env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
5414d6c458bSopenharmony_ci
5424d6c458bSopenharmony_ci    ASSERT_EQ(srcLength, 5); // 5:string length
5434d6c458bSopenharmony_ci    char *res = reinterpret_cast<char*>(srcData);
5444d6c458bSopenharmony_ci
5454d6c458bSopenharmony_ci    res[srcLength] = 0;
5464d6c458bSopenharmony_ci    ASSERT_STREQ(res, excepted);
5474d6c458bSopenharmony_ci}
5484d6c458bSopenharmony_ci
5494d6c458bSopenharmony_ci/**
5504d6c458bSopenharmony_ci * @tc.name: textEncodeTest010
5514d6c458bSopenharmony_ci * @tc.desc: Test encode src.
5524d6c458bSopenharmony_ci * @tc.type: FUNC
5534d6c458bSopenharmony_ci */
5544d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeTest010, testing::ext::TestSize.Level0)
5554d6c458bSopenharmony_ci{
5564d6c458bSopenharmony_ci    HILOG_INFO("textEncodeTest010 start");
5574d6c458bSopenharmony_ci    SetHwIcuDirectory();
5584d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
5594d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("macintosh");
5604d6c458bSopenharmony_ci
5614d6c458bSopenharmony_ci    std::string input = "abc哈熠";
5624d6c458bSopenharmony_ci    napi_value src = nullptr;
5634d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
5644d6c458bSopenharmony_ci    napi_value result = textEncoder.Encode(env, src);
5654d6c458bSopenharmony_ci
5664d6c458bSopenharmony_ci    char excepted[6] = {0x61, 0x62, 0x63, 0x3F, 0x3F, 0}; // 6:nums of args
5674d6c458bSopenharmony_ci
5684d6c458bSopenharmony_ci    napi_typedarray_type type;
5694d6c458bSopenharmony_ci    size_t srcLength = 0;
5704d6c458bSopenharmony_ci    void *srcData = nullptr;
5714d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
5724d6c458bSopenharmony_ci    size_t byteOffset = 0;
5734d6c458bSopenharmony_ci
5744d6c458bSopenharmony_ci    napi_get_typedarray_info(
5754d6c458bSopenharmony_ci        env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
5764d6c458bSopenharmony_ci
5774d6c458bSopenharmony_ci    ASSERT_EQ(srcLength, 5); // 5:string length
5784d6c458bSopenharmony_ci    char *res = reinterpret_cast<char*>(srcData);
5794d6c458bSopenharmony_ci
5804d6c458bSopenharmony_ci    res[srcLength] = 0;
5814d6c458bSopenharmony_ci    ASSERT_STREQ(res, excepted);
5824d6c458bSopenharmony_ci}
5834d6c458bSopenharmony_ci
5844d6c458bSopenharmony_ci/**
5854d6c458bSopenharmony_ci * @tc.name: textEncodeIntoTest001
5864d6c458bSopenharmony_ci * @tc.desc: Test returns a dictionary object indicating the progress of the encoding
5874d6c458bSopenharmony_ci * @tc.type: FUNC
5884d6c458bSopenharmony_ci */
5894d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeIntoTest001, testing::ext::TestSize.Level0)
5904d6c458bSopenharmony_ci{
5914d6c458bSopenharmony_ci    HILOG_INFO("textEncodeIntoTest001 start");
5924d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
5934d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("utf-8");
5944d6c458bSopenharmony_ci
5954d6c458bSopenharmony_ci    std::string input = "abc123";
5964d6c458bSopenharmony_ci    napi_value src = nullptr;
5974d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
5984d6c458bSopenharmony_ci
5994d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
6004d6c458bSopenharmony_ci    void* arrayBufferPtr = nullptr;
6014d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
6024d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
6034d6c458bSopenharmony_ci
6044d6c458bSopenharmony_ci    napi_value dest = nullptr;
6054d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, arrayBufferSize, arrayBuffer, 0, &dest);
6064d6c458bSopenharmony_ci
6074d6c458bSopenharmony_ci    napi_value result = textEncoder.EncodeInto(env, src, dest);
6084d6c458bSopenharmony_ci
6094d6c458bSopenharmony_ci    napi_value read = nullptr;
6104d6c458bSopenharmony_ci    napi_get_named_property(env, result, "read", &read);
6114d6c458bSopenharmony_ci
6124d6c458bSopenharmony_ci    uint32_t resRead = 0;
6134d6c458bSopenharmony_ci
6144d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resRead);
6154d6c458bSopenharmony_ci
6164d6c458bSopenharmony_ci    napi_value written = nullptr;
6174d6c458bSopenharmony_ci    napi_get_named_property(env, result, "written", &written);
6184d6c458bSopenharmony_ci
6194d6c458bSopenharmony_ci    uint32_t resWritten = 0;
6204d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resWritten);
6214d6c458bSopenharmony_ci
6224d6c458bSopenharmony_ci    ASSERT_EQ(resRead, static_cast<uint32_t>(6));
6234d6c458bSopenharmony_ci    ASSERT_EQ(resWritten, static_cast<uint32_t>(6));
6244d6c458bSopenharmony_ci}
6254d6c458bSopenharmony_ci
6264d6c458bSopenharmony_ci/**
6274d6c458bSopenharmony_ci * @tc.name: textEncodeIntoTest002
6284d6c458bSopenharmony_ci * @tc.desc: Test returns a dictionary object indicating the progress of the encoding
6294d6c458bSopenharmony_ci * @tc.type: FUNC
6304d6c458bSopenharmony_ci */
6314d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeIntoTest002, testing::ext::TestSize.Level0)
6324d6c458bSopenharmony_ci{
6334d6c458bSopenharmony_ci    HILOG_INFO("textEncodeIntoTest002 start");
6344d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
6354d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("utf-8");
6364d6c458bSopenharmony_ci
6374d6c458bSopenharmony_ci    std::string input = "text";
6384d6c458bSopenharmony_ci    napi_value src = nullptr;
6394d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
6404d6c458bSopenharmony_ci
6414d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
6424d6c458bSopenharmony_ci    void* arrayBufferPtr = nullptr;
6434d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
6444d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
6454d6c458bSopenharmony_ci
6464d6c458bSopenharmony_ci    napi_value dest = nullptr;
6474d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, arrayBufferSize, arrayBuffer, 0, &dest);
6484d6c458bSopenharmony_ci
6494d6c458bSopenharmony_ci    napi_value result = textEncoder.EncodeInto(env, src, dest);
6504d6c458bSopenharmony_ci
6514d6c458bSopenharmony_ci    napi_value read = nullptr;
6524d6c458bSopenharmony_ci    napi_get_named_property(env, result, "read", &read);
6534d6c458bSopenharmony_ci
6544d6c458bSopenharmony_ci    uint32_t resRead = 0;
6554d6c458bSopenharmony_ci
6564d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resRead);
6574d6c458bSopenharmony_ci
6584d6c458bSopenharmony_ci    napi_value written = nullptr;
6594d6c458bSopenharmony_ci    napi_get_named_property(env, result, "written", &written);
6604d6c458bSopenharmony_ci
6614d6c458bSopenharmony_ci    uint32_t resWritten = 0;
6624d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resWritten);
6634d6c458bSopenharmony_ci
6644d6c458bSopenharmony_ci    ASSERT_EQ(resRead, static_cast<uint32_t>(4));
6654d6c458bSopenharmony_ci    ASSERT_EQ(resWritten, static_cast<uint32_t>(4));
6664d6c458bSopenharmony_ci}
6674d6c458bSopenharmony_ci
6684d6c458bSopenharmony_ci/**
6694d6c458bSopenharmony_ci * @tc.name: textEncodeIntoTest003
6704d6c458bSopenharmony_ci * @tc.desc: Test returns a dictionary object indicating the progress of the encoding
6714d6c458bSopenharmony_ci * @tc.type: FUNC
6724d6c458bSopenharmony_ci */
6734d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeIntoTest003, testing::ext::TestSize.Level0)
6744d6c458bSopenharmony_ci{
6754d6c458bSopenharmony_ci    HILOG_INFO("textEncodeIntoTest003 start");
6764d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
6774d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("utf-8");
6784d6c458bSopenharmony_ci
6794d6c458bSopenharmony_ci    std::string input = "12345";
6804d6c458bSopenharmony_ci    napi_value src = nullptr;
6814d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
6824d6c458bSopenharmony_ci
6834d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
6844d6c458bSopenharmony_ci    void* arrayBufferPtr = nullptr;
6854d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
6864d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
6874d6c458bSopenharmony_ci
6884d6c458bSopenharmony_ci    napi_value dest = nullptr;
6894d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, arrayBufferSize, arrayBuffer, 0, &dest);
6904d6c458bSopenharmony_ci
6914d6c458bSopenharmony_ci    napi_value result = textEncoder.EncodeInto(env, src, dest);
6924d6c458bSopenharmony_ci
6934d6c458bSopenharmony_ci    napi_value read = nullptr;
6944d6c458bSopenharmony_ci    napi_get_named_property(env, result, "read", &read);
6954d6c458bSopenharmony_ci
6964d6c458bSopenharmony_ci    uint32_t resRead = 0;
6974d6c458bSopenharmony_ci
6984d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resRead);
6994d6c458bSopenharmony_ci
7004d6c458bSopenharmony_ci    napi_value written = nullptr;
7014d6c458bSopenharmony_ci    napi_get_named_property(env, result, "written", &written);
7024d6c458bSopenharmony_ci
7034d6c458bSopenharmony_ci    uint32_t resWritten = 0;
7044d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resWritten);
7054d6c458bSopenharmony_ci
7064d6c458bSopenharmony_ci    ASSERT_EQ(resRead, static_cast<uint32_t>(5));
7074d6c458bSopenharmony_ci    ASSERT_EQ(resWritten, static_cast<uint32_t>(5));
7084d6c458bSopenharmony_ci}
7094d6c458bSopenharmony_ci
7104d6c458bSopenharmony_ci/**
7114d6c458bSopenharmony_ci * @tc.name: textEncodeIntoTest004
7124d6c458bSopenharmony_ci * @tc.desc: Test returns a dictionary object indicating the progress of the encoding
7134d6c458bSopenharmony_ci * @tc.type: FUNC
7144d6c458bSopenharmony_ci */
7154d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeIntoTest004, testing::ext::TestSize.Level0)
7164d6c458bSopenharmony_ci{
7174d6c458bSopenharmony_ci    HILOG_INFO("textEncodeIntoTest004 start");
7184d6c458bSopenharmony_ci    SetHwIcuDirectory();
7194d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
7204d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("big5");
7214d6c458bSopenharmony_ci
7224d6c458bSopenharmony_ci    std::string input = "abc123";
7234d6c458bSopenharmony_ci    napi_value src = nullptr;
7244d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
7254d6c458bSopenharmony_ci
7264d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
7274d6c458bSopenharmony_ci    void* arrayBufferPtr = nullptr;
7284d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
7294d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
7304d6c458bSopenharmony_ci
7314d6c458bSopenharmony_ci    napi_value dest = nullptr;
7324d6c458bSopenharmony_ci        napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &dest);
7334d6c458bSopenharmony_ci
7344d6c458bSopenharmony_ci    napi_value result = textEncoder.EncodeInto(env, src, dest);
7354d6c458bSopenharmony_ci
7364d6c458bSopenharmony_ci    napi_value read = nullptr;
7374d6c458bSopenharmony_ci    napi_get_named_property(env, result, "read", &read);
7384d6c458bSopenharmony_ci
7394d6c458bSopenharmony_ci    uint32_t resRead = 0;
7404d6c458bSopenharmony_ci
7414d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resRead);
7424d6c458bSopenharmony_ci
7434d6c458bSopenharmony_ci    napi_value written = nullptr;
7444d6c458bSopenharmony_ci    napi_get_named_property(env, result, "written", &written);
7454d6c458bSopenharmony_ci
7464d6c458bSopenharmony_ci    uint32_t resWritten = 0;
7474d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resWritten);
7484d6c458bSopenharmony_ci
7494d6c458bSopenharmony_ci    ASSERT_EQ(resRead, static_cast<uint32_t>(6));
7504d6c458bSopenharmony_ci    ASSERT_EQ(resWritten, static_cast<uint32_t>(6));
7514d6c458bSopenharmony_ci}
7524d6c458bSopenharmony_ci
7534d6c458bSopenharmony_ci/**
7544d6c458bSopenharmony_ci * @tc.name: textEncodeIntoTest005
7554d6c458bSopenharmony_ci * @tc.desc: Test returns a dictionary object indicating the progress of the encoding
7564d6c458bSopenharmony_ci * @tc.type: FUNC
7574d6c458bSopenharmony_ci */
7584d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeIntoTest005, testing::ext::TestSize.Level0)
7594d6c458bSopenharmony_ci{
7604d6c458bSopenharmony_ci    HILOG_INFO("textEncodeIntoTest005 start");
7614d6c458bSopenharmony_ci    SetHwIcuDirectory();
7624d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
7634d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("shift_jis");
7644d6c458bSopenharmony_ci
7654d6c458bSopenharmony_ci    std::string input = "abc123哈";
7664d6c458bSopenharmony_ci    napi_value src = nullptr;
7674d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
7684d6c458bSopenharmony_ci
7694d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
7704d6c458bSopenharmony_ci    void* arrayBufferPtr = nullptr;
7714d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
7724d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
7734d6c458bSopenharmony_ci
7744d6c458bSopenharmony_ci    napi_value dest = nullptr;
7754d6c458bSopenharmony_ci        napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &dest);
7764d6c458bSopenharmony_ci
7774d6c458bSopenharmony_ci    napi_value result = textEncoder.EncodeInto(env, src, dest);
7784d6c458bSopenharmony_ci
7794d6c458bSopenharmony_ci    napi_value read = nullptr;
7804d6c458bSopenharmony_ci    napi_get_named_property(env, result, "read", &read);
7814d6c458bSopenharmony_ci
7824d6c458bSopenharmony_ci    uint32_t resRead = 0;
7834d6c458bSopenharmony_ci
7844d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resRead);
7854d6c458bSopenharmony_ci
7864d6c458bSopenharmony_ci    napi_value written = nullptr;
7874d6c458bSopenharmony_ci    napi_get_named_property(env, result, "written", &written);
7884d6c458bSopenharmony_ci
7894d6c458bSopenharmony_ci    uint32_t resWritten = 0;
7904d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resWritten);
7914d6c458bSopenharmony_ci
7924d6c458bSopenharmony_ci    ASSERT_EQ(resRead, static_cast<uint32_t>(7));
7934d6c458bSopenharmony_ci    ASSERT_EQ(resWritten, static_cast<uint32_t>(7));
7944d6c458bSopenharmony_ci}
7954d6c458bSopenharmony_ci
7964d6c458bSopenharmony_ci/**
7974d6c458bSopenharmony_ci * @tc.name: textEncodeIntoTest006
7984d6c458bSopenharmony_ci * @tc.desc: Test returns a dictionary object indicating the progress of the encoding
7994d6c458bSopenharmony_ci * @tc.type: FUNC
8004d6c458bSopenharmony_ci */
8014d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeIntoTest006, testing::ext::TestSize.Level0)
8024d6c458bSopenharmony_ci{
8034d6c458bSopenharmony_ci    HILOG_INFO("textEncodeIntoTest006 start");
8044d6c458bSopenharmony_ci    SetHwIcuDirectory();
8054d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
8064d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("iso-2022-jp");
8074d6c458bSopenharmony_ci
8084d6c458bSopenharmony_ci    std::string input = "abc123哈";
8094d6c458bSopenharmony_ci    napi_value src = nullptr;
8104d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
8114d6c458bSopenharmony_ci
8124d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
8134d6c458bSopenharmony_ci    void* arrayBufferPtr = nullptr;
8144d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
8154d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
8164d6c458bSopenharmony_ci
8174d6c458bSopenharmony_ci    napi_value dest = nullptr;
8184d6c458bSopenharmony_ci        napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &dest);
8194d6c458bSopenharmony_ci
8204d6c458bSopenharmony_ci    napi_value result = textEncoder.EncodeInto(env, src, dest);
8214d6c458bSopenharmony_ci
8224d6c458bSopenharmony_ci    napi_value read = nullptr;
8234d6c458bSopenharmony_ci    napi_get_named_property(env, result, "read", &read);
8244d6c458bSopenharmony_ci
8254d6c458bSopenharmony_ci    uint32_t resRead = 0;
8264d6c458bSopenharmony_ci
8274d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resRead);
8284d6c458bSopenharmony_ci
8294d6c458bSopenharmony_ci    napi_value written = nullptr;
8304d6c458bSopenharmony_ci    napi_get_named_property(env, result, "written", &written);
8314d6c458bSopenharmony_ci
8324d6c458bSopenharmony_ci    uint32_t resWritten = 0;
8334d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resWritten);
8344d6c458bSopenharmony_ci
8354d6c458bSopenharmony_ci    ASSERT_EQ(resRead, static_cast<uint32_t>(7));
8364d6c458bSopenharmony_ci    ASSERT_EQ(resWritten, static_cast<uint32_t>(7));
8374d6c458bSopenharmony_ci}
8384d6c458bSopenharmony_ci
8394d6c458bSopenharmony_ci/**
8404d6c458bSopenharmony_ci * @tc.name: textEncodeIntoTest007
8414d6c458bSopenharmony_ci * @tc.desc: Test returns a dictionary object indicating the progress of the encoding
8424d6c458bSopenharmony_ci * @tc.type: FUNC
8434d6c458bSopenharmony_ci */
8444d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeIntoTest007, testing::ext::TestSize.Level0)
8454d6c458bSopenharmony_ci{
8464d6c458bSopenharmony_ci    HILOG_INFO("textEncodeIntoTest007 start");
8474d6c458bSopenharmony_ci    SetHwIcuDirectory();
8484d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
8494d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("ibm866");
8504d6c458bSopenharmony_ci
8514d6c458bSopenharmony_ci    std::string input = "abc123哈";
8524d6c458bSopenharmony_ci    napi_value src = nullptr;
8534d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
8544d6c458bSopenharmony_ci
8554d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
8564d6c458bSopenharmony_ci    void* arrayBufferPtr = nullptr;
8574d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
8584d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
8594d6c458bSopenharmony_ci
8604d6c458bSopenharmony_ci    napi_value dest = nullptr;
8614d6c458bSopenharmony_ci        napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &dest);
8624d6c458bSopenharmony_ci
8634d6c458bSopenharmony_ci    napi_value result = textEncoder.EncodeInto(env, src, dest);
8644d6c458bSopenharmony_ci
8654d6c458bSopenharmony_ci    napi_value read = nullptr;
8664d6c458bSopenharmony_ci    napi_get_named_property(env, result, "read", &read);
8674d6c458bSopenharmony_ci
8684d6c458bSopenharmony_ci    uint32_t resRead = 0;
8694d6c458bSopenharmony_ci
8704d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resRead);
8714d6c458bSopenharmony_ci
8724d6c458bSopenharmony_ci    napi_value written = nullptr;
8734d6c458bSopenharmony_ci    napi_get_named_property(env, result, "written", &written);
8744d6c458bSopenharmony_ci
8754d6c458bSopenharmony_ci    uint32_t resWritten = 0;
8764d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resWritten);
8774d6c458bSopenharmony_ci
8784d6c458bSopenharmony_ci    ASSERT_EQ(resRead, static_cast<uint32_t>(7));
8794d6c458bSopenharmony_ci    ASSERT_EQ(resWritten, static_cast<uint32_t>(7));
8804d6c458bSopenharmony_ci}
8814d6c458bSopenharmony_ci
8824d6c458bSopenharmony_ci/**
8834d6c458bSopenharmony_ci * @tc.name: decoderUtf8001 utf-8
8844d6c458bSopenharmony_ci * @tc.desc: Test date type.
8854d6c458bSopenharmony_ci * @tc.type: FUNC
8864d6c458bSopenharmony_ci */
8874d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf8001, testing::ext::TestSize.Level0)
8884d6c458bSopenharmony_ci{
8894d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf8001 start");
8904d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
8914d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::FATAL_FLG) |
8924d6c458bSopenharmony_ci        static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::IGNORE_BOM_FLG);
8934d6c458bSopenharmony_ci    std::string str = "utf-8";
8944d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(str, flags);
8954d6c458bSopenharmony_ci    bool iflag = false;
8964d6c458bSopenharmony_ci    size_t byteLength = 3;
8974d6c458bSopenharmony_ci    void* data = nullptr;
8984d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
8994d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
9004d6c458bSopenharmony_ci    unsigned char arr[3] = {0x61, 0x62, 0x63};
9014d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
9024d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
9034d6c458bSopenharmony_ci    napi_value result2 = nullptr;
9044d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result2);
9054d6c458bSopenharmony_ci    napi_value testString = textDecoder.Decode(env, result2, iflag);
9064d6c458bSopenharmony_ci    size_t bufferSize = 0;
9074d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, testString, nullptr, 0, &bufferSize);
9084d6c458bSopenharmony_ci    size_t length = 0;
9094d6c458bSopenharmony_ci    char* ch = nullptr;
9104d6c458bSopenharmony_ci    if (bufferSize > 0) {
9114d6c458bSopenharmony_ci        ch = new char[bufferSize + 1]();
9124d6c458bSopenharmony_ci        napi_get_value_string_utf8(env, testString, ch, bufferSize + 1, &length);
9134d6c458bSopenharmony_ci    }
9144d6c458bSopenharmony_ci    ASSERT_STREQ("abc", ch);
9154d6c458bSopenharmony_ci    if (ch != nullptr) {
9164d6c458bSopenharmony_ci        delete []ch;
9174d6c458bSopenharmony_ci        ch = nullptr;
9184d6c458bSopenharmony_ci    }
9194d6c458bSopenharmony_ci}
9204d6c458bSopenharmony_ci
9214d6c458bSopenharmony_ci/**
9224d6c458bSopenharmony_ci * @tc.name: decoderUtf8002 utf-8
9234d6c458bSopenharmony_ci * @tc.desc: Test date type.
9244d6c458bSopenharmony_ci * @tc.type: FUNC
9254d6c458bSopenharmony_ci */
9264d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf8002, testing::ext::TestSize.Level0)
9274d6c458bSopenharmony_ci{
9284d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf8002 start");
9294d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
9304d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::FATAL_FLG);
9314d6c458bSopenharmony_ci    std::string str = "utf-8";
9324d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(str, flags);
9334d6c458bSopenharmony_ci    bool iflag = true;
9344d6c458bSopenharmony_ci    size_t byteLength = 5;
9354d6c458bSopenharmony_ci    void* data = nullptr;
9364d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
9374d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
9384d6c458bSopenharmony_ci    unsigned char arr[5] = {0x61, '\0', 0x62, 0x63, '\0'};
9394d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
9404d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
9414d6c458bSopenharmony_ci    napi_value result2 = nullptr;
9424d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result2);
9434d6c458bSopenharmony_ci    napi_value testString = textDecoder.Decode(env, result2, iflag);
9444d6c458bSopenharmony_ci    size_t bufferSize = 0;
9454d6c458bSopenharmony_ci    size_t length = 0;
9464d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, testString, nullptr, 0, &bufferSize);
9474d6c458bSopenharmony_ci    char* ch = nullptr;
9484d6c458bSopenharmony_ci    if (bufferSize > 0) {
9494d6c458bSopenharmony_ci        ch = new char[bufferSize + 1]();
9504d6c458bSopenharmony_ci        napi_get_value_string_utf8(env, testString, ch, bufferSize + 1, &length);
9514d6c458bSopenharmony_ci    }
9524d6c458bSopenharmony_ci    ASSERT_STREQ("a bc ", ch);
9534d6c458bSopenharmony_ci    if (ch != nullptr) {
9544d6c458bSopenharmony_ci        delete []ch;
9554d6c458bSopenharmony_ci        ch = nullptr;
9564d6c458bSopenharmony_ci    }
9574d6c458bSopenharmony_ci}
9584d6c458bSopenharmony_ci
9594d6c458bSopenharmony_ci/**
9604d6c458bSopenharmony_ci * @tc.name: decoderUtf8003 utf-8
9614d6c458bSopenharmony_ci * @tc.desc: Test date type.
9624d6c458bSopenharmony_ci * @tc.type: FUNC
9634d6c458bSopenharmony_ci */
9644d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf8003, testing::ext::TestSize.Level0)
9654d6c458bSopenharmony_ci{
9664d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
9674d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::FATAL_FLG) |
9684d6c458bSopenharmony_ci        static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::IGNORE_BOM_FLG);
9694d6c458bSopenharmony_ci    std::string str = "utf-8";
9704d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(str, flags);
9714d6c458bSopenharmony_ci    bool iflag = false;
9724d6c458bSopenharmony_ci    size_t byteLength = 0;
9734d6c458bSopenharmony_ci    void *data = nullptr;
9744d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
9754d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
9764d6c458bSopenharmony_ci    napi_value result2 = nullptr;
9774d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result2);
9784d6c458bSopenharmony_ci    napi_value testString = textDecoder.Decode(env, result2, iflag);
9794d6c458bSopenharmony_ci    ASSERT_TRUE(testString == nullptr);
9804d6c458bSopenharmony_ci}
9814d6c458bSopenharmony_ci
9824d6c458bSopenharmony_ci/**
9834d6c458bSopenharmony_ci * @tc.name: decoderUtf16le001 utf-16le
9844d6c458bSopenharmony_ci * @tc.desc: Test date type.
9854d6c458bSopenharmony_ci * @tc.type: FUNC
9864d6c458bSopenharmony_ci */
9874d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf16le001, testing::ext::TestSize.Level0)
9884d6c458bSopenharmony_ci{
9894d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf16le001 start");
9904d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
9914d6c458bSopenharmony_ci    int32_t flags = 0;
9924d6c458bSopenharmony_ci    std::string str = "utf-16le";
9934d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(str, flags);
9944d6c458bSopenharmony_ci    bool iflag = false;
9954d6c458bSopenharmony_ci    size_t byteLength = 6;
9964d6c458bSopenharmony_ci    void* data = nullptr;
9974d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
9984d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
9994d6c458bSopenharmony_ci    unsigned char arr[6] = {0x61, 0x00, 0x62, 0x00, 0x63, 0x00};
10004d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
10014d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
10024d6c458bSopenharmony_ci    napi_value result2 = nullptr;
10034d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result2);
10044d6c458bSopenharmony_ci    napi_value testString = textDecoder.Decode(env, result2, iflag);
10054d6c458bSopenharmony_ci    size_t bufferSize = 0;
10064d6c458bSopenharmony_ci    size_t length = 0;
10074d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, testString, nullptr, 0, &bufferSize);
10084d6c458bSopenharmony_ci    char* ch = nullptr;
10094d6c458bSopenharmony_ci    if (bufferSize > 0) {
10104d6c458bSopenharmony_ci        ch = new char[bufferSize + 1]();
10114d6c458bSopenharmony_ci        napi_get_value_string_utf8(env, testString, ch, bufferSize + 1, &length);
10124d6c458bSopenharmony_ci    }
10134d6c458bSopenharmony_ci    ASSERT_STREQ("abc", ch);
10144d6c458bSopenharmony_ci    if (ch != nullptr) {
10154d6c458bSopenharmony_ci        delete []ch;
10164d6c458bSopenharmony_ci        ch = nullptr;
10174d6c458bSopenharmony_ci    }
10184d6c458bSopenharmony_ci}
10194d6c458bSopenharmony_ci
10204d6c458bSopenharmony_ci/**
10214d6c458bSopenharmony_ci * @tc.name: decoderUtf16le002 utf-16le
10224d6c458bSopenharmony_ci * @tc.desc: Test date type.
10234d6c458bSopenharmony_ci * @tc.type: FUNC
10244d6c458bSopenharmony_ci */
10254d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf16le002, testing::ext::TestSize.Level0)
10264d6c458bSopenharmony_ci{
10274d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf16le002 start");
10284d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
10294d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::IGNORE_BOM_FLG);
10304d6c458bSopenharmony_ci    std::string str = "utf-16le";
10314d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(str, flags);
10324d6c458bSopenharmony_ci    bool iflag = true;
10334d6c458bSopenharmony_ci    size_t byteLength = 6;
10344d6c458bSopenharmony_ci    void* data = nullptr;
10354d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
10364d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
10374d6c458bSopenharmony_ci    unsigned char arr[6] = {0x61, 0x00, 0x62, 0x00, 0x63, 0x00};
10384d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
10394d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
10404d6c458bSopenharmony_ci    napi_value result2 = nullptr;
10414d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result2);
10424d6c458bSopenharmony_ci    napi_value testString = textDecoder.Decode(env, result2, iflag);
10434d6c458bSopenharmony_ci    size_t bufferSize = 0;
10444d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, testString, nullptr, 0, &bufferSize);
10454d6c458bSopenharmony_ci    char* ch = nullptr;
10464d6c458bSopenharmony_ci    size_t length = 0;
10474d6c458bSopenharmony_ci    if (bufferSize > 0) {
10484d6c458bSopenharmony_ci        ch = new char[bufferSize + 1]();
10494d6c458bSopenharmony_ci        napi_get_value_string_utf8(env, testString, ch, bufferSize + 1, &length);
10504d6c458bSopenharmony_ci    }
10514d6c458bSopenharmony_ci    ASSERT_STREQ("abc", ch);
10524d6c458bSopenharmony_ci    if (ch != nullptr) {
10534d6c458bSopenharmony_ci        delete []ch;
10544d6c458bSopenharmony_ci        ch = nullptr;
10554d6c458bSopenharmony_ci    }
10564d6c458bSopenharmony_ci}
10574d6c458bSopenharmony_ci
10584d6c458bSopenharmony_ci/**
10594d6c458bSopenharmony_ci * @tc.name: decoderUtf16le003 utf-16le
10604d6c458bSopenharmony_ci * @tc.desc: Test date type.
10614d6c458bSopenharmony_ci * @tc.type: FUNC
10624d6c458bSopenharmony_ci */
10634d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf16le003, testing::ext::TestSize.Level0)
10644d6c458bSopenharmony_ci{
10654d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf16le003 start");
10664d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
10674d6c458bSopenharmony_ci    int32_t flags = 0;
10684d6c458bSopenharmony_ci    std::string str = "utf-16le";
10694d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(str, flags);
10704d6c458bSopenharmony_ci    bool iflag = true;
10714d6c458bSopenharmony_ci    size_t byteLength = 8;
10724d6c458bSopenharmony_ci    void* data = nullptr;
10734d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
10744d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
10754d6c458bSopenharmony_ci    unsigned char arr[8] = {0xFF, 0xFE, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00};
10764d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
10774d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
10784d6c458bSopenharmony_ci    napi_value result2 = nullptr;
10794d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result2);
10804d6c458bSopenharmony_ci    napi_value testString = textDecoder.Decode(env, result2, iflag);
10814d6c458bSopenharmony_ci    size_t bufferSize = 0;
10824d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, testString, nullptr, 0, &bufferSize);
10834d6c458bSopenharmony_ci    char* ch = nullptr;
10844d6c458bSopenharmony_ci    size_t length = 0;
10854d6c458bSopenharmony_ci    std::string tempStr01 = "";
10864d6c458bSopenharmony_ci    if (bufferSize > 0) {
10874d6c458bSopenharmony_ci        ch = new char[bufferSize + 1]();
10884d6c458bSopenharmony_ci        napi_get_value_string_utf8(env, testString, ch, bufferSize + 1, &length);
10894d6c458bSopenharmony_ci        tempStr01 = ch;
10904d6c458bSopenharmony_ci    }
10914d6c458bSopenharmony_ci    std::u16string tempU16str02 =
10924d6c458bSopenharmony_ci        std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.from_bytes(tempStr01);
10934d6c458bSopenharmony_ci    ASSERT_EQ(0xFEFF, static_cast<int>(tempU16str02[0]));
10944d6c458bSopenharmony_ci    ASSERT_EQ(0x61, static_cast<int>(tempU16str02[1]));
10954d6c458bSopenharmony_ci    ASSERT_EQ(0x62, static_cast<int>(tempU16str02[2]));
10964d6c458bSopenharmony_ci    ASSERT_EQ(0x63, static_cast<int>(tempU16str02[3]));
10974d6c458bSopenharmony_ci    if (ch != nullptr) {
10984d6c458bSopenharmony_ci        delete []ch;
10994d6c458bSopenharmony_ci        ch = nullptr;
11004d6c458bSopenharmony_ci    }
11014d6c458bSopenharmony_ci}
11024d6c458bSopenharmony_ci
11034d6c458bSopenharmony_ci/**
11044d6c458bSopenharmony_ci * @tc.name: decoderUtf16le004 utf-16le
11054d6c458bSopenharmony_ci * @tc.desc: Test date type.
11064d6c458bSopenharmony_ci * @tc.type: FUNC
11074d6c458bSopenharmony_ci */
11084d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf16le004, testing::ext::TestSize.Level0)
11094d6c458bSopenharmony_ci{
11104d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf16le004 start");
11114d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
11124d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::FATAL_FLG) |
11134d6c458bSopenharmony_ci        static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::IGNORE_BOM_FLG);
11144d6c458bSopenharmony_ci    std::string str = "utf-16le";
11154d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(str, flags);
11164d6c458bSopenharmony_ci    bool iflag = false;
11174d6c458bSopenharmony_ci    size_t byteLength = 8;
11184d6c458bSopenharmony_ci    void* data = nullptr;
11194d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
11204d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
11214d6c458bSopenharmony_ci    unsigned char arr[8] = {0xFF, 0xFE, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00};
11224d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
11234d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
11244d6c458bSopenharmony_ci    napi_value result2 = nullptr;
11254d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result2);
11264d6c458bSopenharmony_ci    napi_value testString = textDecoder.Decode(env, result2, iflag);
11274d6c458bSopenharmony_ci    size_t bufferSize = 0;
11284d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, testString, nullptr, 0, &bufferSize);
11294d6c458bSopenharmony_ci    char* ch = nullptr;
11304d6c458bSopenharmony_ci    size_t length = 0;
11314d6c458bSopenharmony_ci    std::string tempStr01 = "";
11324d6c458bSopenharmony_ci    if (bufferSize > 0) {
11334d6c458bSopenharmony_ci        ch = new char[bufferSize + 1]();
11344d6c458bSopenharmony_ci        napi_get_value_string_utf8(env, testString, ch, bufferSize + 1, &length);
11354d6c458bSopenharmony_ci        tempStr01 = ch;
11364d6c458bSopenharmony_ci    }
11374d6c458bSopenharmony_ci    std::u16string tempU16str02 =
11384d6c458bSopenharmony_ci    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.from_bytes(tempStr01);
11394d6c458bSopenharmony_ci    ASSERT_EQ(0xFEFF, static_cast<int>(tempU16str02[0]));
11404d6c458bSopenharmony_ci    ASSERT_EQ(0x61, static_cast<int>(tempU16str02[1]));
11414d6c458bSopenharmony_ci    ASSERT_EQ(0x62, static_cast<int>(tempU16str02[2]));
11424d6c458bSopenharmony_ci    ASSERT_EQ(0x63, static_cast<int>(tempU16str02[3]));
11434d6c458bSopenharmony_ci    if (ch != nullptr) {
11444d6c458bSopenharmony_ci        delete []ch;
11454d6c458bSopenharmony_ci        ch = nullptr;
11464d6c458bSopenharmony_ci    }
11474d6c458bSopenharmony_ci}
11484d6c458bSopenharmony_ci
11494d6c458bSopenharmony_ci/**
11504d6c458bSopenharmony_ci * @tc.name: decoderUtf16be001 utf-16be
11514d6c458bSopenharmony_ci * @tc.desc: Test date type.
11524d6c458bSopenharmony_ci * @tc.type: FUNC
11534d6c458bSopenharmony_ci */
11544d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf16be001, testing::ext::TestSize.Level0)
11554d6c458bSopenharmony_ci{
11564d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf16be001 start");
11574d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
11584d6c458bSopenharmony_ci    int32_t flags = 0;
11594d6c458bSopenharmony_ci    std::string str = "utf-16be";
11604d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(str, flags);
11614d6c458bSopenharmony_ci    bool iflag = false;
11624d6c458bSopenharmony_ci    size_t byteLength = 6;
11634d6c458bSopenharmony_ci    void* data = nullptr;
11644d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
11654d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
11664d6c458bSopenharmony_ci    unsigned char arr[6] = {0x00, 0x61, 0x00, 0x62, 0x00, 0x63};
11674d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
11684d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
11694d6c458bSopenharmony_ci    napi_value result2 = nullptr;
11704d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result2);
11714d6c458bSopenharmony_ci    napi_value testString = textDecoder.Decode(env, result2, iflag);
11724d6c458bSopenharmony_ci    size_t bufferSize = 0;
11734d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, testString, nullptr, 0, &bufferSize);
11744d6c458bSopenharmony_ci    size_t length = 0;
11754d6c458bSopenharmony_ci    char* ch = nullptr;
11764d6c458bSopenharmony_ci    if (bufferSize > 0) {
11774d6c458bSopenharmony_ci        ch = new char[bufferSize + 1]();
11784d6c458bSopenharmony_ci        napi_get_value_string_utf8(env, testString, ch, bufferSize + 1, &length);
11794d6c458bSopenharmony_ci    }
11804d6c458bSopenharmony_ci    ASSERT_STREQ("abc", ch);
11814d6c458bSopenharmony_ci    if (ch != nullptr) {
11824d6c458bSopenharmony_ci        delete []ch;
11834d6c458bSopenharmony_ci        ch = nullptr;
11844d6c458bSopenharmony_ci    }
11854d6c458bSopenharmony_ci}
11864d6c458bSopenharmony_ci
11874d6c458bSopenharmony_ci/**
11884d6c458bSopenharmony_ci * @tc.name: decoderUtf16be002 utf-16be
11894d6c458bSopenharmony_ci * @tc.desc: Test date type.
11904d6c458bSopenharmony_ci * @tc.type: FUNC
11914d6c458bSopenharmony_ci */
11924d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf16be002, testing::ext::TestSize.Level0)
11934d6c458bSopenharmony_ci{
11944d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf16be002 start");
11954d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
11964d6c458bSopenharmony_ci    int32_t flags = 0;
11974d6c458bSopenharmony_ci    std::string str = "utf-16be";
11984d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(str, flags);
11994d6c458bSopenharmony_ci    bool iflag = false;
12004d6c458bSopenharmony_ci    size_t byteLength = 8;
12014d6c458bSopenharmony_ci    void* data = nullptr;
12024d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
12034d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
12044d6c458bSopenharmony_ci    unsigned char arr[8] = {0xFE, 0xFF, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63};
12054d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
12064d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
12074d6c458bSopenharmony_ci    napi_value result2 = nullptr;
12084d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result2);
12094d6c458bSopenharmony_ci    napi_value testString = textDecoder.Decode(env, result2, iflag);
12104d6c458bSopenharmony_ci    size_t bufferSize = 0;
12114d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, testString, nullptr, 0, &bufferSize);
12124d6c458bSopenharmony_ci    size_t length = 0;
12134d6c458bSopenharmony_ci    char* ch = nullptr;
12144d6c458bSopenharmony_ci    std::string tempStr01 = "";
12154d6c458bSopenharmony_ci    if (bufferSize > 0) {
12164d6c458bSopenharmony_ci        ch = new char[bufferSize + 1]();
12174d6c458bSopenharmony_ci        napi_get_value_string_utf8(env, testString, ch, bufferSize + 1, &length);
12184d6c458bSopenharmony_ci        tempStr01 = ch;
12194d6c458bSopenharmony_ci    }
12204d6c458bSopenharmony_ci    std::u16string tempU16str02 =
12214d6c458bSopenharmony_ci    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.from_bytes(tempStr01);
12224d6c458bSopenharmony_ci    ASSERT_EQ(0xFEFF, static_cast<int>(tempU16str02[0]));
12234d6c458bSopenharmony_ci    ASSERT_EQ(0x61, static_cast<int>(tempU16str02[1]));
12244d6c458bSopenharmony_ci    ASSERT_EQ(0x62, static_cast<int>(tempU16str02[2]));
12254d6c458bSopenharmony_ci    ASSERT_EQ(0x63, static_cast<int>(tempU16str02[3]));
12264d6c458bSopenharmony_ci    if (ch != nullptr) {
12274d6c458bSopenharmony_ci        delete []ch;
12284d6c458bSopenharmony_ci        ch = nullptr;
12294d6c458bSopenharmony_ci    }
12304d6c458bSopenharmony_ci}
12314d6c458bSopenharmony_ci
12324d6c458bSopenharmony_ci/**
12334d6c458bSopenharmony_ci * @tc.name: decoderUtf16be003 utf-16be
12344d6c458bSopenharmony_ci * @tc.desc: Test date type.
12354d6c458bSopenharmony_ci * @tc.type: FUNC
12364d6c458bSopenharmony_ci */
12374d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf16be003, testing::ext::TestSize.Level0)
12384d6c458bSopenharmony_ci{
12394d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf16be003 start");
12404d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
12414d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::IGNORE_BOM_FLG);
12424d6c458bSopenharmony_ci    std::string str = "utf-16be";
12434d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(str, flags);
12444d6c458bSopenharmony_ci    bool iflag = true;
12454d6c458bSopenharmony_ci    size_t byteLength = 8;
12464d6c458bSopenharmony_ci    void* data = nullptr;
12474d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
12484d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
12494d6c458bSopenharmony_ci    unsigned char arr[8] = {0xFE, 0xFF, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63};
12504d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
12514d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
12524d6c458bSopenharmony_ci    napi_value result2 = nullptr;
12534d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result2);
12544d6c458bSopenharmony_ci    napi_value testString = textDecoder.Decode(env, result2, iflag);
12554d6c458bSopenharmony_ci    size_t bufferSize = 0;
12564d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, testString, nullptr, 0, &bufferSize);
12574d6c458bSopenharmony_ci    size_t length = 0;
12584d6c458bSopenharmony_ci    char* ch = nullptr;
12594d6c458bSopenharmony_ci    std::string tempStr01 = "";
12604d6c458bSopenharmony_ci    if (bufferSize > 0) {
12614d6c458bSopenharmony_ci        ch = new char[bufferSize + 1]();
12624d6c458bSopenharmony_ci        napi_get_value_string_utf8(env, testString, ch, bufferSize + 1, &length);
12634d6c458bSopenharmony_ci        tempStr01 = ch;
12644d6c458bSopenharmony_ci    }
12654d6c458bSopenharmony_ci    std::u16string tempU16str02 =
12664d6c458bSopenharmony_ci    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.from_bytes(tempStr01);
12674d6c458bSopenharmony_ci    ASSERT_EQ(0xFEFF, static_cast<int>(tempU16str02[0]));
12684d6c458bSopenharmony_ci    ASSERT_EQ(0x61, static_cast<int>(tempU16str02[1]));
12694d6c458bSopenharmony_ci    ASSERT_EQ(0x62, static_cast<int>(tempU16str02[2]));
12704d6c458bSopenharmony_ci    ASSERT_EQ(0x63, static_cast<int>(tempU16str02[3]));
12714d6c458bSopenharmony_ci    if (ch != nullptr) {
12724d6c458bSopenharmony_ci        delete []ch;
12734d6c458bSopenharmony_ci        ch = nullptr;
12744d6c458bSopenharmony_ci    }
12754d6c458bSopenharmony_ci}
12764d6c458bSopenharmony_ci
12774d6c458bSopenharmony_ci/**
12784d6c458bSopenharmony_ci * @tc.name: decoderUtf8-BOM001
12794d6c458bSopenharmony_ci * @tc.desc: Testing the decoding result of UTF-8 data with BOM.
12804d6c458bSopenharmony_ci * @tc.type: FUNC
12814d6c458bSopenharmony_ci */
12824d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf8BOM001, testing::ext::TestSize.Level0)
12834d6c458bSopenharmony_ci{
12844d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf8BOM001 start");
12854d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
12864d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::IGNORE_BOM_FLG);
12874d6c458bSopenharmony_ci    std::string encoding = "utf-8";
12884d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(encoding, flags);
12894d6c458bSopenharmony_ci    bool iflag = true;
12904d6c458bSopenharmony_ci    size_t byteLength = 6;
12914d6c458bSopenharmony_ci    void* data = nullptr;
12924d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
12934d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
12944d6c458bSopenharmony_ci    unsigned char arr[8] = {0xEF, 0xBB, 0xBF, 0x41, 0x42, 0x43};
12954d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
12964d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
12974d6c458bSopenharmony_ci    napi_value result = nullptr;
12984d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
12994d6c458bSopenharmony_ci    napi_value testString = textDecoder.DecodeToString(env, result, iflag);
13004d6c458bSopenharmony_ci    size_t bufferSize = 0;
13014d6c458bSopenharmony_ci    napi_get_value_string_utf16(env, testString, nullptr, 0, &bufferSize);
13024d6c458bSopenharmony_ci    size_t length = 0;
13034d6c458bSopenharmony_ci    char16_t* ch = nullptr;
13044d6c458bSopenharmony_ci    if (bufferSize > 0) {
13054d6c458bSopenharmony_ci        ch = new char16_t[bufferSize + 1]();
13064d6c458bSopenharmony_ci        napi_get_value_string_utf16(env, testString, ch, bufferSize + 1, &length);
13074d6c458bSopenharmony_ci    }
13084d6c458bSopenharmony_ci    std::string str =
13094d6c458bSopenharmony_ci    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.to_bytes(ch);
13104d6c458bSopenharmony_ci    ASSERT_EQ(str, "ABC");
13114d6c458bSopenharmony_ci    if (ch != nullptr) {
13124d6c458bSopenharmony_ci        delete []ch;
13134d6c458bSopenharmony_ci        ch = nullptr;
13144d6c458bSopenharmony_ci    }
13154d6c458bSopenharmony_ci}
13164d6c458bSopenharmony_ci
13174d6c458bSopenharmony_ci/**
13184d6c458bSopenharmony_ci * @tc.name: decoderUtf8-BOM002
13194d6c458bSopenharmony_ci * @tc.desc: Testing the decoding result of UTF-8 data with BOM.
13204d6c458bSopenharmony_ci * @tc.type: FUNC
13214d6c458bSopenharmony_ci */
13224d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf8BOM002, testing::ext::TestSize.Level0)
13234d6c458bSopenharmony_ci{
13244d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf8BOM002 start");
13254d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
13264d6c458bSopenharmony_ci    int32_t flags = 0;
13274d6c458bSopenharmony_ci    std::string encoding = "utf-8";
13284d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(encoding, flags);
13294d6c458bSopenharmony_ci    bool iflag = true;
13304d6c458bSopenharmony_ci    size_t byteLength = 6;
13314d6c458bSopenharmony_ci    void* data = nullptr;
13324d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
13334d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
13344d6c458bSopenharmony_ci    unsigned char arr[8] = {0xEF, 0xBB, 0xBF, 0x41, 0x42, 0x43};
13354d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
13364d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
13374d6c458bSopenharmony_ci    napi_value result = nullptr;
13384d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
13394d6c458bSopenharmony_ci    napi_value testString = textDecoder.DecodeToString(env, result, iflag);
13404d6c458bSopenharmony_ci    size_t bufferSize = 0;
13414d6c458bSopenharmony_ci    napi_get_value_string_utf16(env, testString, nullptr, 0, &bufferSize);
13424d6c458bSopenharmony_ci    size_t length = 0;
13434d6c458bSopenharmony_ci    char16_t* ch = nullptr;
13444d6c458bSopenharmony_ci    if (bufferSize > 0) {
13454d6c458bSopenharmony_ci        ch = new char16_t[bufferSize + 1]();
13464d6c458bSopenharmony_ci        napi_get_value_string_utf16(env, testString, ch, bufferSize + 1, &length);
13474d6c458bSopenharmony_ci    }
13484d6c458bSopenharmony_ci    std::string str =
13494d6c458bSopenharmony_ci    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.to_bytes(ch);
13504d6c458bSopenharmony_ci    ASSERT_EQ(str, "\uFEFFABC");
13514d6c458bSopenharmony_ci    if (ch != nullptr) {
13524d6c458bSopenharmony_ci        delete []ch;
13534d6c458bSopenharmony_ci        ch = nullptr;
13544d6c458bSopenharmony_ci    }
13554d6c458bSopenharmony_ci}
13564d6c458bSopenharmony_ci
13574d6c458bSopenharmony_ci/**
13584d6c458bSopenharmony_ci * @tc.name: decoderUtf8-BOM003
13594d6c458bSopenharmony_ci * @tc.desc: Decoder utf8 BOM with limit err.
13604d6c458bSopenharmony_ci * @tc.type: FUNC
13614d6c458bSopenharmony_ci */
13624d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf8BOM003, testing::ext::TestSize.Level0)
13634d6c458bSopenharmony_ci{
13644d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf8BOM003 start");
13654d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
13664d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::FATAL_FLG) |
13674d6c458bSopenharmony_ci        static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::IGNORE_BOM_FLG);
13684d6c458bSopenharmony_ci    std::string str = "utf-8";
13694d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(str, flags);
13704d6c458bSopenharmony_ci    bool iflag = false;
13714d6c458bSopenharmony_ci    size_t byteLength = 0;
13724d6c458bSopenharmony_ci    void *data = nullptr;
13734d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
13744d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
13754d6c458bSopenharmony_ci    napi_value result2 = nullptr;
13764d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result2);
13774d6c458bSopenharmony_ci    napi_value testString = textDecoder.DecodeToString(env, result2, iflag);
13784d6c458bSopenharmony_ci    ASSERT_TRUE(testString == nullptr);
13794d6c458bSopenharmony_ci}
13804d6c458bSopenharmony_ci
13814d6c458bSopenharmony_ci/**
13824d6c458bSopenharmony_ci * @tc.name: decoderUtf8-BOM004
13834d6c458bSopenharmony_ci * @tc.desc: Testing the decoding result of UTF-8 data with BOM.
13844d6c458bSopenharmony_ci * @tc.type: FUNC
13854d6c458bSopenharmony_ci */
13864d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf8BOM004, testing::ext::TestSize.Level0)
13874d6c458bSopenharmony_ci{
13884d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf8BOM004 start");
13894d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
13904d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::IGNORE_BOM_FLG);
13914d6c458bSopenharmony_ci    std::string encoding = "utf-8";
13924d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(encoding, flags);
13934d6c458bSopenharmony_ci    bool iflag = false;
13944d6c458bSopenharmony_ci    size_t byteLength = 6;
13954d6c458bSopenharmony_ci    void* data = nullptr;
13964d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
13974d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
13984d6c458bSopenharmony_ci    unsigned char arr[8] = {0xEF, 0xBB, 0xBF, 0x41, 0x42, 0x43};
13994d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
14004d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
14014d6c458bSopenharmony_ci    napi_value result = nullptr;
14024d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
14034d6c458bSopenharmony_ci    napi_value testString = textDecoder.DecodeToString(env, result, iflag);
14044d6c458bSopenharmony_ci    size_t bufferSize = 0;
14054d6c458bSopenharmony_ci    napi_get_value_string_utf16(env, testString, nullptr, 0, &bufferSize);
14064d6c458bSopenharmony_ci    size_t length = 0;
14074d6c458bSopenharmony_ci    char16_t* ch = nullptr;
14084d6c458bSopenharmony_ci    if (bufferSize > 0) {
14094d6c458bSopenharmony_ci        ch = new char16_t[bufferSize + 1]();
14104d6c458bSopenharmony_ci        napi_get_value_string_utf16(env, testString, ch, bufferSize + 1, &length);
14114d6c458bSopenharmony_ci    }
14124d6c458bSopenharmony_ci    std::string str =
14134d6c458bSopenharmony_ci    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.to_bytes(ch);
14144d6c458bSopenharmony_ci    ASSERT_EQ(str, "ABC");
14154d6c458bSopenharmony_ci    if (ch != nullptr) {
14164d6c458bSopenharmony_ci        delete []ch;
14174d6c458bSopenharmony_ci        ch = nullptr;
14184d6c458bSopenharmony_ci    }
14194d6c458bSopenharmony_ci}
14204d6c458bSopenharmony_ci
14214d6c458bSopenharmony_ci/**
14224d6c458bSopenharmony_ci * @tc.name: decoderUtf8-BOM005
14234d6c458bSopenharmony_ci * @tc.desc: Testing the decoding result of UTF-8 data with BOM.
14244d6c458bSopenharmony_ci * @tc.type: FUNC
14254d6c458bSopenharmony_ci */
14264d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf8BOM005, testing::ext::TestSize.Level0)
14274d6c458bSopenharmony_ci{
14284d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf8BOM005 start");
14294d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
14304d6c458bSopenharmony_ci    int32_t flags = 0;
14314d6c458bSopenharmony_ci    std::string encoding = "utf-8";
14324d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(encoding, flags);
14334d6c458bSopenharmony_ci    bool iflag = true;
14344d6c458bSopenharmony_ci    size_t byteLength = 11;
14354d6c458bSopenharmony_ci    void* data = nullptr;
14364d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
14374d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
14384d6c458bSopenharmony_ci    unsigned char arr[11] = {0xEF, 0xBB, 0xBF, 0x41, 0x42, 0x43, 0x31, 0x32, 0x33, 0x34, 0x35};
14394d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
14404d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
14414d6c458bSopenharmony_ci    napi_value result = nullptr;
14424d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
14434d6c458bSopenharmony_ci    napi_value testString = textDecoder.DecodeToString(env, result, iflag);
14444d6c458bSopenharmony_ci    size_t bufferSize = 0;
14454d6c458bSopenharmony_ci    napi_get_value_string_utf16(env, testString, nullptr, 0, &bufferSize);
14464d6c458bSopenharmony_ci    size_t length = 0;
14474d6c458bSopenharmony_ci    char16_t* ch = nullptr;
14484d6c458bSopenharmony_ci    if (bufferSize > 0) {
14494d6c458bSopenharmony_ci        ch = new char16_t[bufferSize + 1]();
14504d6c458bSopenharmony_ci        napi_get_value_string_utf16(env, testString, ch, bufferSize + 1, &length);
14514d6c458bSopenharmony_ci    }
14524d6c458bSopenharmony_ci    std::string str =
14534d6c458bSopenharmony_ci    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.to_bytes(ch);
14544d6c458bSopenharmony_ci    ASSERT_EQ(str, "\uFEFFABC12345");
14554d6c458bSopenharmony_ci    if (ch != nullptr) {
14564d6c458bSopenharmony_ci        delete[] ch;
14574d6c458bSopenharmony_ci        ch = nullptr;
14584d6c458bSopenharmony_ci    }
14594d6c458bSopenharmony_ci}
14604d6c458bSopenharmony_ci
14614d6c458bSopenharmony_ci/**
14624d6c458bSopenharmony_ci * @tc.name: decoderUtf8-BOM006
14634d6c458bSopenharmony_ci * @tc.desc: Testing the decoding result of UTF-8 data with BOM.
14644d6c458bSopenharmony_ci * @tc.type: FUNC
14654d6c458bSopenharmony_ci */
14664d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf8BOM006, testing::ext::TestSize.Level0)
14674d6c458bSopenharmony_ci{
14684d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf8BOM006 start");
14694d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
14704d6c458bSopenharmony_ci    int32_t flags = 0;
14714d6c458bSopenharmony_ci    std::string encoding = "utf-8";
14724d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(encoding, flags);
14734d6c458bSopenharmony_ci    bool iflag = true;
14744d6c458bSopenharmony_ci    size_t byteLength = 12;
14754d6c458bSopenharmony_ci    void* data = nullptr;
14764d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
14774d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
14784d6c458bSopenharmony_ci    unsigned char arr[12] = {0xEF, 0xBB, 0xBF, 0x41, 0x42, 0x43, 0x61, 0x62, 0x63, 0x31, 0x32, 0x33};
14794d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
14804d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
14814d6c458bSopenharmony_ci    napi_value result = nullptr;
14824d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
14834d6c458bSopenharmony_ci    napi_value testString = textDecoder.DecodeToString(env, result, iflag);
14844d6c458bSopenharmony_ci    size_t bufferSize = 0;
14854d6c458bSopenharmony_ci    napi_get_value_string_utf16(env, testString, nullptr, 0, &bufferSize);
14864d6c458bSopenharmony_ci    size_t length = 0;
14874d6c458bSopenharmony_ci    char16_t* ch = nullptr;
14884d6c458bSopenharmony_ci    if (bufferSize > 0) {
14894d6c458bSopenharmony_ci        ch = new char16_t[bufferSize + 1]();
14904d6c458bSopenharmony_ci        napi_get_value_string_utf16(env, testString, ch, bufferSize + 1, &length);
14914d6c458bSopenharmony_ci    }
14924d6c458bSopenharmony_ci    std::string str =
14934d6c458bSopenharmony_ci    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.to_bytes(ch);
14944d6c458bSopenharmony_ci    ASSERT_EQ(str, "\uFEFFABCabc123");
14954d6c458bSopenharmony_ci    if (ch != nullptr) {
14964d6c458bSopenharmony_ci        delete[] ch;
14974d6c458bSopenharmony_ci        ch = nullptr;
14984d6c458bSopenharmony_ci    }
14994d6c458bSopenharmony_ci}
15004d6c458bSopenharmony_ci
15014d6c458bSopenharmony_ci/**
15024d6c458bSopenharmony_ci * @tc.name: decoderUtf8-BOM007
15034d6c458bSopenharmony_ci * @tc.desc: Testing the decoding result of UTF-8 data with BOM.
15044d6c458bSopenharmony_ci * @tc.type: FUNC
15054d6c458bSopenharmony_ci */
15064d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf8BOM007, testing::ext::TestSize.Level0)
15074d6c458bSopenharmony_ci{
15084d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf8BOM007 start");
15094d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
15104d6c458bSopenharmony_ci    int32_t flags = 0;
15114d6c458bSopenharmony_ci    std::string encoding = "utf-8";
15124d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(encoding, flags);
15134d6c458bSopenharmony_ci    bool iflag = true;
15144d6c458bSopenharmony_ci    size_t byteLength = 13;
15154d6c458bSopenharmony_ci    void* data = nullptr;
15164d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
15174d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
15184d6c458bSopenharmony_ci    unsigned char arr[13] = {0xEF, 0xBB, 0xBF, 0x41, 0x42, 0x43, 0x61, 0x62, 0x63, 0x31, 0x32, 0x33, 0x33};
15194d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
15204d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
15214d6c458bSopenharmony_ci    napi_value result = nullptr;
15224d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
15234d6c458bSopenharmony_ci    napi_value testString = textDecoder.DecodeToString(env, result, iflag);
15244d6c458bSopenharmony_ci    size_t bufferSize = 0;
15254d6c458bSopenharmony_ci    napi_get_value_string_utf16(env, testString, nullptr, 0, &bufferSize);
15264d6c458bSopenharmony_ci    size_t length = 0;
15274d6c458bSopenharmony_ci    char16_t* ch = nullptr;
15284d6c458bSopenharmony_ci    if (bufferSize > 0) {
15294d6c458bSopenharmony_ci        ch = new char16_t[bufferSize + 1]();
15304d6c458bSopenharmony_ci        napi_get_value_string_utf16(env, testString, ch, bufferSize + 1, &length);
15314d6c458bSopenharmony_ci    }
15324d6c458bSopenharmony_ci    std::string str =
15334d6c458bSopenharmony_ci    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.to_bytes(ch);
15344d6c458bSopenharmony_ci    ASSERT_EQ(str, "\uFEFFABCabc1233");
15354d6c458bSopenharmony_ci    if (ch != nullptr) {
15364d6c458bSopenharmony_ci        delete[] ch;
15374d6c458bSopenharmony_ci        ch = nullptr;
15384d6c458bSopenharmony_ci    }
15394d6c458bSopenharmony_ci}
15404d6c458bSopenharmony_ci
15414d6c458bSopenharmony_ci/**
15424d6c458bSopenharmony_ci * @tc.name: decoderUtf8-BOM008
15434d6c458bSopenharmony_ci * @tc.desc: Testing the decoding result of UTF-8 data with BOM.
15444d6c458bSopenharmony_ci * @tc.type: FUNC
15454d6c458bSopenharmony_ci */
15464d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf8BOM008, testing::ext::TestSize.Level0)
15474d6c458bSopenharmony_ci{
15484d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf8BOM008 start");
15494d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
15504d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::IGNORE_BOM_FLG);
15514d6c458bSopenharmony_ci    std::string encoding = "utf-8";
15524d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(encoding, flags);
15534d6c458bSopenharmony_ci    bool iflag = false;
15544d6c458bSopenharmony_ci    size_t byteLength = 200;
15554d6c458bSopenharmony_ci    void* data = nullptr;
15564d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
15574d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
15584d6c458bSopenharmony_ci    unsigned char arr[200] = {0xEF, 0xBB, 0xBF};
15594d6c458bSopenharmony_ci    for (size_t i = 3; i < 200; ++i) {
15604d6c458bSopenharmony_ci        arr[i] = static_cast<char>('A' + (i - 3) % 26);
15614d6c458bSopenharmony_ci    }
15624d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
15634d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
15644d6c458bSopenharmony_ci    napi_value result = nullptr;
15654d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
15664d6c458bSopenharmony_ci    napi_value testString = textDecoder.DecodeToString(env, result, iflag);
15674d6c458bSopenharmony_ci    size_t bufferSize = 0;
15684d6c458bSopenharmony_ci    napi_get_value_string_utf16(env, testString, nullptr, 0, &bufferSize);
15694d6c458bSopenharmony_ci    size_t length = 0;
15704d6c458bSopenharmony_ci    char16_t* ch = nullptr;
15714d6c458bSopenharmony_ci    if (bufferSize > 0) {
15724d6c458bSopenharmony_ci        ch = new char16_t[bufferSize + 1]();
15734d6c458bSopenharmony_ci        napi_get_value_string_utf16(env, testString, ch, bufferSize + 1, &length);
15744d6c458bSopenharmony_ci    }
15754d6c458bSopenharmony_ci    std::string str =
15764d6c458bSopenharmony_ci    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.to_bytes(ch);
15774d6c458bSopenharmony_ci    std::string expectedStr;
15784d6c458bSopenharmony_ci    for (size_t i = 3; i < 200; ++i) {
15794d6c458bSopenharmony_ci        expectedStr += static_cast<char>('A' + (i - 3) % 26);
15804d6c458bSopenharmony_ci    }
15814d6c458bSopenharmony_ci    ASSERT_EQ(str, expectedStr);
15824d6c458bSopenharmony_ci    if (ch != nullptr) {
15834d6c458bSopenharmony_ci        delete []ch;
15844d6c458bSopenharmony_ci        ch = nullptr;
15854d6c458bSopenharmony_ci    }
15864d6c458bSopenharmony_ci}
15874d6c458bSopenharmony_ci
15884d6c458bSopenharmony_ci/**
15894d6c458bSopenharmony_ci * @tc.name: decoderUtf8-BOM009
15904d6c458bSopenharmony_ci * @tc.desc: Testing the decoding result of UTF-8 data with BOM.
15914d6c458bSopenharmony_ci * @tc.type: FUNC
15924d6c458bSopenharmony_ci */
15934d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decoderUtf8BOM009, testing::ext::TestSize.Level0)
15944d6c458bSopenharmony_ci{
15954d6c458bSopenharmony_ci    HILOG_INFO("decoderUtf8BOM009 start");
15964d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
15974d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::IGNORE_BOM_FLG);
15984d6c458bSopenharmony_ci    std::string encoding = "utf-16";
15994d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(encoding, flags);
16004d6c458bSopenharmony_ci    bool iflag = true;
16014d6c458bSopenharmony_ci    size_t byteLength = 6;
16024d6c458bSopenharmony_ci    void* data = nullptr;
16034d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
16044d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
16054d6c458bSopenharmony_ci    unsigned char arr[8] = {0xEF, 0xBB, 0xBF, 0x41, 0x42, 0x43};
16064d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
16074d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
16084d6c458bSopenharmony_ci    napi_value result = nullptr;
16094d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
16104d6c458bSopenharmony_ci    napi_value testString = textDecoder.DecodeToString(env, result, iflag);
16114d6c458bSopenharmony_ci    size_t bufferSize = 0;
16124d6c458bSopenharmony_ci    napi_get_value_string_utf16(env, testString, nullptr, 0, &bufferSize);
16134d6c458bSopenharmony_ci    size_t length = 0;
16144d6c458bSopenharmony_ci    char16_t* ch = nullptr;
16154d6c458bSopenharmony_ci    if (bufferSize > 0) {
16164d6c458bSopenharmony_ci        ch = new char16_t[bufferSize + 1]();
16174d6c458bSopenharmony_ci        napi_get_value_string_utf16(env, testString, ch, bufferSize + 1, &length);
16184d6c458bSopenharmony_ci    }
16194d6c458bSopenharmony_ci    std::string str =
16204d6c458bSopenharmony_ci    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> {}.to_bytes(ch);
16214d6c458bSopenharmony_ci    ASSERT_TRUE(str != "");
16224d6c458bSopenharmony_ci    if (ch != nullptr) {
16234d6c458bSopenharmony_ci        delete []ch;
16244d6c458bSopenharmony_ci        ch = nullptr;
16254d6c458bSopenharmony_ci    }
16264d6c458bSopenharmony_ci}
16274d6c458bSopenharmony_ci
16284d6c458bSopenharmony_ci/**
16294d6c458bSopenharmony_ci * @tc.name: getMinByteSizeTest001 utf-8
16304d6c458bSopenharmony_ci * @tc.desc: get minbyte size with tranTool nullptr.
16314d6c458bSopenharmony_ci * @tc.type: FUNC
16324d6c458bSopenharmony_ci */
16334d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, getMinByteSizeTest001, testing::ext::TestSize.Level0)
16344d6c458bSopenharmony_ci{
16354d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::FATAL_FLG) |
16364d6c458bSopenharmony_ci        static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::IGNORE_BOM_FLG);
16374d6c458bSopenharmony_ci    std::string str = "XYZ123";
16384d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(str, flags);
16394d6c458bSopenharmony_ci    textDecoder.Reset();
16404d6c458bSopenharmony_ci    size_t rel1 = textDecoder.GetMinByteSize();
16414d6c458bSopenharmony_ci    ASSERT_EQ(rel1, 0);
16424d6c458bSopenharmony_ci}
16434d6c458bSopenharmony_ci
16444d6c458bSopenharmony_ci/* @tc.name: encodeTest001
16454d6c458bSopenharmony_ci * @tc.desc: Encodes all bytes in the specified u8 array into
16464d6c458bSopenharmony_ci             the newly allocated u8 array using the Base64 encoding scheme.
16474d6c458bSopenharmony_ci * @tc.type: FUNC
16484d6c458bSopenharmony_ci */
16494d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeTest001, testing::ext::TestSize.Level0)
16504d6c458bSopenharmony_ci{
16514d6c458bSopenharmony_ci    HILOG_INFO("encodeTest001 start");
16524d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
16534d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
16544d6c458bSopenharmony_ci    unsigned char input[3] = {0x73, 0x31, 0x33};
16554d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
16564d6c458bSopenharmony_ci    void* data = nullptr;
16574d6c458bSopenharmony_ci    size_t arrayBufferSize = 3;
16584d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
16594d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
16604d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
16614d6c458bSopenharmony_ci    napi_value src = nullptr;
16624d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
16634d6c458bSopenharmony_ci
16644d6c458bSopenharmony_ci    napi_value result = base64.EncodeSync(env, src, OHOS::Util::Type::BASIC);
16654d6c458bSopenharmony_ci    char excepted[4] = {0x63, 0x7A, 0x45, 0x7A};
16664d6c458bSopenharmony_ci    napi_typedarray_type type;
16674d6c458bSopenharmony_ci    size_t srcLength = 0;
16684d6c458bSopenharmony_ci    void* srcData = nullptr;
16694d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
16704d6c458bSopenharmony_ci    size_t byteOffset = 0;
16714d6c458bSopenharmony_ci    napi_get_typedarray_info(env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
16724d6c458bSopenharmony_ci    char* res = (char*)srcData;
16734d6c458bSopenharmony_ci    ASSERT_EQ(res[0], excepted[0]);
16744d6c458bSopenharmony_ci    ASSERT_EQ(res[1], excepted[1]);
16754d6c458bSopenharmony_ci    ASSERT_EQ(res[2], excepted[2]);
16764d6c458bSopenharmony_ci    ASSERT_EQ(res[3], excepted[3]);
16774d6c458bSopenharmony_ci}
16784d6c458bSopenharmony_ci
16794d6c458bSopenharmony_ci/* @tc.name: encodeTest002
16804d6c458bSopenharmony_ci * @tc.desc: Encodes all bytes in the specified u8 array
16814d6c458bSopenharmony_ci             into the newly allocated u8 array using the Base64 encoding scheme.
16824d6c458bSopenharmony_ci * @tc.type: FUNC
16834d6c458bSopenharmony_ci */
16844d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeTest002, testing::ext::TestSize.Level0)
16854d6c458bSopenharmony_ci{
16864d6c458bSopenharmony_ci    HILOG_INFO("encodeTest002 start");
16874d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
16884d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
16894d6c458bSopenharmony_ci    unsigned char input[14] = {66, 97, 115, 101, 54, 52, 32, 78, 111, 100, 101, 46, 106, 115};
16904d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
16914d6c458bSopenharmony_ci    void* data = nullptr;
16924d6c458bSopenharmony_ci    size_t arrayBufferSize = 14;
16934d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
16944d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
16954d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
16964d6c458bSopenharmony_ci    napi_value src = nullptr;
16974d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
16984d6c458bSopenharmony_ci
16994d6c458bSopenharmony_ci    napi_value result = base64.EncodeSync(env, src, OHOS::Util::Type::BASIC);
17004d6c458bSopenharmony_ci    char excepted[20] = {81, 109, 70, 122, 90, 84, 89, 48, 73, 69, 53, 118, 90, 71, 85, 117, 97, 110, 77, 61};
17014d6c458bSopenharmony_ci    napi_typedarray_type type;
17024d6c458bSopenharmony_ci    size_t srcLength = 0;
17034d6c458bSopenharmony_ci    void* srcData = nullptr;
17044d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
17054d6c458bSopenharmony_ci    size_t byteOffset = 0;
17064d6c458bSopenharmony_ci    napi_get_typedarray_info(env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
17074d6c458bSopenharmony_ci    char* res = (char*)srcData;
17084d6c458bSopenharmony_ci    for (size_t i = 0; i < 20; i++) {
17094d6c458bSopenharmony_ci        ASSERT_EQ(res[i], excepted[i]);
17104d6c458bSopenharmony_ci    }
17114d6c458bSopenharmony_ci}
17124d6c458bSopenharmony_ci
17134d6c458bSopenharmony_ci/* @tc.name: encodeTest003
17144d6c458bSopenharmony_ci * @tc.desc: Encodes all bytes in the specified u8 array
17154d6c458bSopenharmony_ci             into the newly allocated u8 array using the Base64 encoding scheme.
17164d6c458bSopenharmony_ci * @tc.type: FUNC
17174d6c458bSopenharmony_ci */
17184d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeTest003, testing::ext::TestSize.Level0)
17194d6c458bSopenharmony_ci{
17204d6c458bSopenharmony_ci    HILOG_INFO("encodeTest003 start");
17214d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
17224d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
17234d6c458bSopenharmony_ci    unsigned char input[26] = {66, 97, 115, 101, 54, 52, 32, 69, 110,
17244d6c458bSopenharmony_ci                              99, 111, 100, 105, 110, 103, 32, 105, 110, 32, 78, 111, 100, 101, 46, 106, 115};
17254d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
17264d6c458bSopenharmony_ci    void* data = nullptr;
17274d6c458bSopenharmony_ci    size_t arrayBufferSize = 26;
17284d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
17294d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
17304d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
17314d6c458bSopenharmony_ci    napi_value src = nullptr;
17324d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
17334d6c458bSopenharmony_ci
17344d6c458bSopenharmony_ci    napi_value result = base64.EncodeSync(env, src, OHOS::Util::Type::BASIC);
17354d6c458bSopenharmony_ci    char excepted[36] = {81, 109, 70, 122, 90, 84, 89, 48, 73, 69, 86, 117, 89, 50, 57, 107, 97, 87, 53,
17364d6c458bSopenharmony_ci                        110, 73, 71, 108, 117, 73, 69, 53, 118, 90, 71, 85, 117, 97, 110, 77, 61};
17374d6c458bSopenharmony_ci    napi_typedarray_type type;
17384d6c458bSopenharmony_ci    size_t srcLength = 0;
17394d6c458bSopenharmony_ci    void* srcData = nullptr;
17404d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
17414d6c458bSopenharmony_ci    size_t byteOffset = 0;
17424d6c458bSopenharmony_ci    napi_get_typedarray_info(env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
17434d6c458bSopenharmony_ci    char* res = (char*)srcData;
17444d6c458bSopenharmony_ci    for (size_t i = 0; i < 36; i++) {
17454d6c458bSopenharmony_ci        ASSERT_EQ(res[i], excepted[i]);
17464d6c458bSopenharmony_ci    }
17474d6c458bSopenharmony_ci}
17484d6c458bSopenharmony_ci
17494d6c458bSopenharmony_ci/* @tc.name: encodeTest004
17504d6c458bSopenharmony_ci * @tc.desc: Encodes all bytes in the specified u8 array into the
17514d6c458bSopenharmony_ci             newly allocated u8 array using the Base64 encoding scheme.
17524d6c458bSopenharmony_ci * @tc.type: FUNC
17534d6c458bSopenharmony_ci */
17544d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeTest004, testing::ext::TestSize.Level0)
17554d6c458bSopenharmony_ci{
17564d6c458bSopenharmony_ci    HILOG_INFO("encodeTest004 start");
17574d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
17584d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
17594d6c458bSopenharmony_ci    unsigned char input[4] = {168, 174, 155, 255};
17604d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
17614d6c458bSopenharmony_ci    void* data = nullptr;
17624d6c458bSopenharmony_ci    size_t arrayBufferSize = 4;
17634d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
17644d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
17654d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
17664d6c458bSopenharmony_ci    napi_value src = nullptr;
17674d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
17684d6c458bSopenharmony_ci
17694d6c458bSopenharmony_ci    napi_value result = base64.EncodeSync(env, src, OHOS::Util::Type::BASIC);
17704d6c458bSopenharmony_ci    char excepted[8] = {113, 75, 54, 98, 47, 119, 61, 61};
17714d6c458bSopenharmony_ci    napi_typedarray_type type;
17724d6c458bSopenharmony_ci    size_t srcLength = 0;
17734d6c458bSopenharmony_ci    void* srcData = nullptr;
17744d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
17754d6c458bSopenharmony_ci    size_t byteOffset = 0;
17764d6c458bSopenharmony_ci    napi_get_typedarray_info(env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
17774d6c458bSopenharmony_ci    char* res = (char*)srcData;
17784d6c458bSopenharmony_ci    for (size_t i = 0; i < 8; i++) {
17794d6c458bSopenharmony_ci        ASSERT_EQ(res[i], excepted[i]);
17804d6c458bSopenharmony_ci    }
17814d6c458bSopenharmony_ci}
17824d6c458bSopenharmony_ci
17834d6c458bSopenharmony_ci/* @tc.name: encodeTest005
17844d6c458bSopenharmony_ci * @tc.desc: Encodes all bytes in the specified u8 array
17854d6c458bSopenharmony_ci             into the newly allocated u8 array using the Base64 encoding scheme.
17864d6c458bSopenharmony_ci * @tc.type: FUNC
17874d6c458bSopenharmony_ci */
17884d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeTest005, testing::ext::TestSize.Level0)
17894d6c458bSopenharmony_ci{
17904d6c458bSopenharmony_ci    HILOG_INFO("encodeTest005 start");
17914d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
17924d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
17934d6c458bSopenharmony_ci    unsigned char input[6] = {66, 97, 115, 101, 54, 52};
17944d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
17954d6c458bSopenharmony_ci    void* data = nullptr;
17964d6c458bSopenharmony_ci    size_t arrayBufferSize = 6;
17974d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
17984d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
17994d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
18004d6c458bSopenharmony_ci    napi_value src = nullptr;
18014d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
18024d6c458bSopenharmony_ci
18034d6c458bSopenharmony_ci    napi_value result = base64.EncodeSync(env, src, OHOS::Util::Type::BASIC);
18044d6c458bSopenharmony_ci    char excepted[8] = {81, 109, 70, 122, 90, 84, 89, 48};
18054d6c458bSopenharmony_ci    napi_typedarray_type type;
18064d6c458bSopenharmony_ci    size_t srcLength = 0;
18074d6c458bSopenharmony_ci    void* srcData = nullptr;
18084d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
18094d6c458bSopenharmony_ci    size_t byteOffset = 0;
18104d6c458bSopenharmony_ci    napi_get_typedarray_info(env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
18114d6c458bSopenharmony_ci    char* res = (char*)srcData;
18124d6c458bSopenharmony_ci    for (size_t i = 0; i < 8; i++) {
18134d6c458bSopenharmony_ci        ASSERT_EQ(res[i], excepted[i]);
18144d6c458bSopenharmony_ci    }
18154d6c458bSopenharmony_ci}
18164d6c458bSopenharmony_ci
18174d6c458bSopenharmony_ci/* @tc.name: encodeTest006
18184d6c458bSopenharmony_ci * @tc.desc: Encode sync with napi_uint16_array.
18194d6c458bSopenharmony_ci * @tc.type: FUNC
18204d6c458bSopenharmony_ci */
18214d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeTest006, testing::ext::TestSize.Level0)
18224d6c458bSopenharmony_ci{
18234d6c458bSopenharmony_ci    HILOG_INFO("encodeTest006 start");
18244d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
18254d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
18264d6c458bSopenharmony_ci    unsigned char input[6] = {66, 97, 115, 101, 54, 51};
18274d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
18284d6c458bSopenharmony_ci    void* data = nullptr;
18294d6c458bSopenharmony_ci    size_t arrayBufferSize = 6;
18304d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
18314d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
18324d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
18334d6c458bSopenharmony_ci    napi_value src = nullptr;
18344d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint16_array, arrayBufferSize, arrayBuffer, 0, &src);
18354d6c458bSopenharmony_ci
18364d6c458bSopenharmony_ci    napi_value result = base64.EncodeSync(env, src, OHOS::Util::Type::BASIC);
18374d6c458bSopenharmony_ci    ASSERT_EQ(nullptr, result);
18384d6c458bSopenharmony_ci    napi_value result1 = base64.EncodeToStringSync(env, src, OHOS::Util::Type::BASIC);
18394d6c458bSopenharmony_ci    ASSERT_EQ(nullptr, result1);
18404d6c458bSopenharmony_ci    napi_value exception;
18414d6c458bSopenharmony_ci    napi_get_and_clear_last_exception(env, &exception);
18424d6c458bSopenharmony_ci}
18434d6c458bSopenharmony_ci
18444d6c458bSopenharmony_ci/* @tc.name: encodeTest007
18454d6c458bSopenharmony_ci * @tc.desc: Encodes all bytes in the specified u8 array with type BASIC_URL_SAFE.
18464d6c458bSopenharmony_ci * @tc.type: FUNC
18474d6c458bSopenharmony_ci */
18484d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeTest007, testing::ext::TestSize.Level0)
18494d6c458bSopenharmony_ci{
18504d6c458bSopenharmony_ci    HILOG_INFO("encodeTest007 start");
18514d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
18524d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
18534d6c458bSopenharmony_ci    unsigned char input[4] = {168, 174, 155, 255};
18544d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
18554d6c458bSopenharmony_ci    void* data = nullptr;
18564d6c458bSopenharmony_ci    size_t arrayBufferSize = 4;
18574d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
18584d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
18594d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
18604d6c458bSopenharmony_ci    napi_value src = nullptr;
18614d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
18624d6c458bSopenharmony_ci
18634d6c458bSopenharmony_ci    napi_value result = base64.EncodeSync(env, src, OHOS::Util::Type::BASIC_URL_SAFE);
18644d6c458bSopenharmony_ci    char excepted[7] = {113, 75, 54, 98, 95, 119};
18654d6c458bSopenharmony_ci    napi_typedarray_type type;
18664d6c458bSopenharmony_ci    size_t srcLength = 0;
18674d6c458bSopenharmony_ci    void* srcData = nullptr;
18684d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
18694d6c458bSopenharmony_ci    size_t byteOffset = 0;
18704d6c458bSopenharmony_ci    napi_get_typedarray_info(env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
18714d6c458bSopenharmony_ci    char* res = (char*)srcData;
18724d6c458bSopenharmony_ci    for (size_t i = 0; i < 6; i++) {
18734d6c458bSopenharmony_ci        ASSERT_EQ(res[i], excepted[i]);
18744d6c458bSopenharmony_ci    }
18754d6c458bSopenharmony_ci}
18764d6c458bSopenharmony_ci
18774d6c458bSopenharmony_ci/* @tc.name: encodeToStringTest001
18784d6c458bSopenharmony_ci * @tc.desc: Encodes the specified byte array as a String using the Base64 encoding scheme.
18794d6c458bSopenharmony_ci * @tc.type: FUNC
18804d6c458bSopenharmony_ci */
18814d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeToStringTest001, testing::ext::TestSize.Level0)
18824d6c458bSopenharmony_ci{
18834d6c458bSopenharmony_ci    HILOG_INFO("encodeToStringTest001 start");
18844d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
18854d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
18864d6c458bSopenharmony_ci
18874d6c458bSopenharmony_ci    unsigned char input[3] = {115, 49, 51};
18884d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
18894d6c458bSopenharmony_ci    size_t arrayBufferSize = 3;
18904d6c458bSopenharmony_ci    void* data = nullptr;
18914d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
18924d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
18934d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
18944d6c458bSopenharmony_ci    napi_value src = nullptr;
18954d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
18964d6c458bSopenharmony_ci    napi_value result = base64.EncodeToStringSync(env, src, OHOS::Util::Type::BASIC);
18974d6c458bSopenharmony_ci    size_t prolen = 0;
18984d6c458bSopenharmony_ci    char* inputString = nullptr;
18994d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, result, nullptr, 0, &prolen);
19004d6c458bSopenharmony_ci    if (prolen > 0) {
19014d6c458bSopenharmony_ci        inputString = new char[prolen + 1];
19024d6c458bSopenharmony_ci        if (memset_s(inputString, prolen + 1, '\0', prolen + 1) != 0) {
19034d6c458bSopenharmony_ci            napi_throw_error(env, "-1", "decode inputString memset_s failed");
19044d6c458bSopenharmony_ci        }
19054d6c458bSopenharmony_ci    } else {
19064d6c458bSopenharmony_ci        napi_throw_error(env, "-2", "prolen is error !");
19074d6c458bSopenharmony_ci    }
19084d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, result, inputString, prolen + 1, &prolen);
19094d6c458bSopenharmony_ci    ASSERT_STREQ("czEz", inputString);
19104d6c458bSopenharmony_ci    if (inputString != nullptr) {
19114d6c458bSopenharmony_ci        delete []inputString;
19124d6c458bSopenharmony_ci        inputString = nullptr;
19134d6c458bSopenharmony_ci    }
19144d6c458bSopenharmony_ci}
19154d6c458bSopenharmony_ci
19164d6c458bSopenharmony_ci/* @tc.name: encodeToStringTest002
19174d6c458bSopenharmony_ci * @tc.desc: Encodes the specified byte array as a String using the Base64 encoding scheme.
19184d6c458bSopenharmony_ci * @tc.type: FUNC
19194d6c458bSopenharmony_ci */
19204d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeToStringTest002, testing::ext::TestSize.Level0)
19214d6c458bSopenharmony_ci{
19224d6c458bSopenharmony_ci    HILOG_INFO("encodeToStringTest002 start");
19234d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
19244d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
19254d6c458bSopenharmony_ci
19264d6c458bSopenharmony_ci    unsigned char input[14] = {66, 97, 115, 101, 54, 52, 32, 78, 111, 100, 101, 46, 106, 115};
19274d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
19284d6c458bSopenharmony_ci    size_t arrayBufferSize = 14;
19294d6c458bSopenharmony_ci    void* data = nullptr;
19304d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
19314d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
19324d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
19334d6c458bSopenharmony_ci    napi_value src = nullptr;
19344d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
19354d6c458bSopenharmony_ci    napi_value result = base64.EncodeToStringSync(env, src, OHOS::Util::Type::BASIC);
19364d6c458bSopenharmony_ci    size_t prolen = 0;
19374d6c458bSopenharmony_ci    char* inputString = nullptr;
19384d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, result, nullptr, 0, &prolen);
19394d6c458bSopenharmony_ci    if (prolen > 0) {
19404d6c458bSopenharmony_ci        inputString = new char[prolen + 1];
19414d6c458bSopenharmony_ci        if (memset_s(inputString, prolen + 1, '\0', prolen + 1) != 0) {
19424d6c458bSopenharmony_ci            napi_throw_error(env, "-1", "decode inputString memset_s failed");
19434d6c458bSopenharmony_ci        }
19444d6c458bSopenharmony_ci    } else {
19454d6c458bSopenharmony_ci        napi_throw_error(env, "-2", "prolen is error !");
19464d6c458bSopenharmony_ci    }
19474d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, result, inputString, prolen + 1, &prolen);
19484d6c458bSopenharmony_ci    ASSERT_STREQ("QmFzZTY0IE5vZGUuanM=", inputString);
19494d6c458bSopenharmony_ci    if (inputString != nullptr) {
19504d6c458bSopenharmony_ci        delete []inputString;
19514d6c458bSopenharmony_ci        inputString = nullptr;
19524d6c458bSopenharmony_ci    }
19534d6c458bSopenharmony_ci}
19544d6c458bSopenharmony_ci
19554d6c458bSopenharmony_ci/* @tc.name: encodeToStringTest003
19564d6c458bSopenharmony_ci * @tc.desc: Encodes the specified byte array as a String using the Base64 encoding scheme.
19574d6c458bSopenharmony_ci * @tc.type: FUNC
19584d6c458bSopenharmony_ci */
19594d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeToStringTest003, testing::ext::TestSize.Level0)
19604d6c458bSopenharmony_ci{
19614d6c458bSopenharmony_ci    HILOG_INFO("encodeToStringTest003 start");
19624d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
19634d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
19644d6c458bSopenharmony_ci
19654d6c458bSopenharmony_ci    unsigned char input[26] = {66, 97, 115, 101, 54, 52, 32, 69, 110,
19664d6c458bSopenharmony_ci                              99, 111, 100, 105, 110, 103, 32, 105, 110, 32, 78, 111, 100, 101, 46, 106, 115};
19674d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
19684d6c458bSopenharmony_ci    size_t arrayBufferSize = 26;
19694d6c458bSopenharmony_ci    void* data = nullptr;
19704d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
19714d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
19724d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
19734d6c458bSopenharmony_ci    napi_value src = nullptr;
19744d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
19754d6c458bSopenharmony_ci    napi_value result = base64.EncodeToStringSync(env, src, OHOS::Util::Type::BASIC);
19764d6c458bSopenharmony_ci    size_t prolen = 0;
19774d6c458bSopenharmony_ci    char* inputString = nullptr;
19784d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, result, nullptr, 0, &prolen);
19794d6c458bSopenharmony_ci    if (prolen > 0) {
19804d6c458bSopenharmony_ci        inputString = new char[prolen + 1];
19814d6c458bSopenharmony_ci        if (memset_s(inputString, prolen + 1, '\0', prolen + 1) != 0) {
19824d6c458bSopenharmony_ci            napi_throw_error(env, "-1", "decode inputString memset_s failed");
19834d6c458bSopenharmony_ci        }
19844d6c458bSopenharmony_ci    } else {
19854d6c458bSopenharmony_ci        napi_throw_error(env, "-2", "prolen is error !");
19864d6c458bSopenharmony_ci    }
19874d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, result, inputString, prolen + 1, &prolen);
19884d6c458bSopenharmony_ci    ASSERT_STREQ("QmFzZTY0IEVuY29kaW5nIGluIE5vZGUuanM=", inputString);
19894d6c458bSopenharmony_ci    if (inputString != nullptr) {
19904d6c458bSopenharmony_ci        delete []inputString;
19914d6c458bSopenharmony_ci        inputString = nullptr;
19924d6c458bSopenharmony_ci    }
19934d6c458bSopenharmony_ci}
19944d6c458bSopenharmony_ci
19954d6c458bSopenharmony_ci/* @tc.name: encodeToStringTest004
19964d6c458bSopenharmony_ci * @tc.desc: Encodes the specified byte array as a String using the Base64 encoding scheme.
19974d6c458bSopenharmony_ci * @tc.type: FUNC
19984d6c458bSopenharmony_ci */
19994d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeToStringTest004, testing::ext::TestSize.Level0)
20004d6c458bSopenharmony_ci{
20014d6c458bSopenharmony_ci    HILOG_INFO("encodeToStringTest004 start");
20024d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
20034d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
20044d6c458bSopenharmony_ci
20054d6c458bSopenharmony_ci    unsigned char input[4] = {168, 174, 155, 255};
20064d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
20074d6c458bSopenharmony_ci    size_t arrayBufferSize = 4;
20084d6c458bSopenharmony_ci    void* data = nullptr;
20094d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
20104d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
20114d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
20124d6c458bSopenharmony_ci    napi_value src = nullptr;
20134d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
20144d6c458bSopenharmony_ci    napi_value result = base64.EncodeToStringSync(env, src, OHOS::Util::Type::BASIC);
20154d6c458bSopenharmony_ci    size_t prolen = 0;
20164d6c458bSopenharmony_ci    char* inputString = nullptr;
20174d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, result, nullptr, 0, &prolen);
20184d6c458bSopenharmony_ci    if (prolen > 0) {
20194d6c458bSopenharmony_ci        inputString = new char[prolen + 1];
20204d6c458bSopenharmony_ci        if (memset_s(inputString, prolen + 1, '\0', prolen + 1) != 0) {
20214d6c458bSopenharmony_ci            napi_throw_error(env, "-1", "decode inputString memset_s failed");
20224d6c458bSopenharmony_ci        }
20234d6c458bSopenharmony_ci    } else {
20244d6c458bSopenharmony_ci        napi_throw_error(env, "-2", "prolen is error !");
20254d6c458bSopenharmony_ci    }
20264d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, result, inputString, prolen + 1, &prolen);
20274d6c458bSopenharmony_ci    ASSERT_STREQ("qK6b/w==", inputString);
20284d6c458bSopenharmony_ci    if (inputString != nullptr) {
20294d6c458bSopenharmony_ci        delete []inputString;
20304d6c458bSopenharmony_ci        inputString = nullptr;
20314d6c458bSopenharmony_ci    }
20324d6c458bSopenharmony_ci}
20334d6c458bSopenharmony_ci
20344d6c458bSopenharmony_ci/* @tc.name: encodeToStringTest005
20354d6c458bSopenharmony_ci * @tc.desc: Encodes the specified byte array as a String using the Base64 encoding scheme.
20364d6c458bSopenharmony_ci * @tc.type: FUNC
20374d6c458bSopenharmony_ci */
20384d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeToStringTest005, testing::ext::TestSize.Level0)
20394d6c458bSopenharmony_ci{
20404d6c458bSopenharmony_ci    HILOG_INFO("encodeToStringTest005 start");
20414d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
20424d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
20434d6c458bSopenharmony_ci
20444d6c458bSopenharmony_ci    unsigned char input[6] = {66, 97, 115, 101, 54, 52};
20454d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
20464d6c458bSopenharmony_ci    size_t arrayBufferSize = 6;
20474d6c458bSopenharmony_ci    void* data = nullptr;
20484d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
20494d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
20504d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
20514d6c458bSopenharmony_ci    napi_value src = nullptr;
20524d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
20534d6c458bSopenharmony_ci    napi_value result = base64.EncodeToStringSync(env, src, OHOS::Util::Type::BASIC);
20544d6c458bSopenharmony_ci    size_t prolen = 0;
20554d6c458bSopenharmony_ci    char* inputString = nullptr;
20564d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, result, nullptr, 0, &prolen);
20574d6c458bSopenharmony_ci    if (prolen > 0) {
20584d6c458bSopenharmony_ci        inputString = new char[prolen + 1];
20594d6c458bSopenharmony_ci        if (memset_s(inputString, prolen + 1, '\0', prolen + 1) != 0) {
20604d6c458bSopenharmony_ci            napi_throw_error(env, "-1", "decode inputString memset_s failed");
20614d6c458bSopenharmony_ci        }
20624d6c458bSopenharmony_ci    } else {
20634d6c458bSopenharmony_ci        napi_throw_error(env, "-2", "prolen is error !");
20644d6c458bSopenharmony_ci    }
20654d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, result, inputString, prolen + 1, &prolen);
20664d6c458bSopenharmony_ci    ASSERT_STREQ("QmFzZTY0", inputString);
20674d6c458bSopenharmony_ci    if (inputString != nullptr) {
20684d6c458bSopenharmony_ci        delete []inputString;
20694d6c458bSopenharmony_ci        inputString = nullptr;
20704d6c458bSopenharmony_ci    }
20714d6c458bSopenharmony_ci}
20724d6c458bSopenharmony_ci
20734d6c458bSopenharmony_ci/* @tc.name: decodeTest001
20744d6c458bSopenharmony_ci * @tc.desc: Decodes the Base64-encoded string or input u8 array
20754d6c458bSopenharmony_ci             into the newly allocated u8 array using the Base64 encoding scheme.
20764d6c458bSopenharmony_ci * @tc.type: FUNC
20774d6c458bSopenharmony_ci */
20784d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decodeTest001, testing::ext::TestSize.Level0)
20794d6c458bSopenharmony_ci{
20804d6c458bSopenharmony_ci    HILOG_INFO("decodeTest001 start");
20814d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
20824d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
20834d6c458bSopenharmony_ci
20844d6c458bSopenharmony_ci    unsigned char input[4] = {99, 122, 69, 122};
20854d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
20864d6c458bSopenharmony_ci    size_t arrayBufferSize = 4;
20874d6c458bSopenharmony_ci    void* data = nullptr;
20884d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
20894d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
20904d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
20914d6c458bSopenharmony_ci    napi_value src = nullptr;
20924d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
20934d6c458bSopenharmony_ci    napi_value result = base64.DecodeSync(env, src, OHOS::Util::Type::BASIC);
20944d6c458bSopenharmony_ci    char excepted[3] = {115, 49, 51};
20954d6c458bSopenharmony_ci    napi_typedarray_type type;
20964d6c458bSopenharmony_ci    size_t srcLength = 0;
20974d6c458bSopenharmony_ci    void* srcData = nullptr;
20984d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
20994d6c458bSopenharmony_ci    size_t byteOffset = 0;
21004d6c458bSopenharmony_ci    napi_get_typedarray_info(env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
21014d6c458bSopenharmony_ci    char* res = (char*)srcData;
21024d6c458bSopenharmony_ci
21034d6c458bSopenharmony_ci    ASSERT_EQ(res[0], excepted[0]);
21044d6c458bSopenharmony_ci    ASSERT_EQ(res[1], excepted[1]);
21054d6c458bSopenharmony_ci    ASSERT_EQ(res[2], excepted[2]);
21064d6c458bSopenharmony_ci}
21074d6c458bSopenharmony_ci
21084d6c458bSopenharmony_ci/* @tc.name: decodeTest002
21094d6c458bSopenharmony_ci * @tc.desc: Decodes the Base64-encoded string or input u8 array
21104d6c458bSopenharmony_ci             into the newly allocated u8 array using the Base64 encoding scheme.
21114d6c458bSopenharmony_ci * @tc.type: FUNC
21124d6c458bSopenharmony_ci */
21134d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decodeTest002, testing::ext::TestSize.Level0)
21144d6c458bSopenharmony_ci{
21154d6c458bSopenharmony_ci    HILOG_INFO("decodeTest002 start");
21164d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
21174d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
21184d6c458bSopenharmony_ci
21194d6c458bSopenharmony_ci    unsigned char input[20] = {81, 109, 70, 122, 90, 84, 89, 48, 73, 69, 53, 118, 90, 71, 85, 117, 97, 110, 77, 61};
21204d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
21214d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
21224d6c458bSopenharmony_ci    void* data = nullptr;
21234d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
21244d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
21254d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
21264d6c458bSopenharmony_ci    napi_value src = nullptr;
21274d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
21284d6c458bSopenharmony_ci    napi_value result = base64.DecodeSync(env, src, OHOS::Util::Type::BASIC);
21294d6c458bSopenharmony_ci    char excepted[14] = {66, 97, 115, 101, 54, 52, 32, 78, 111, 100, 101, 46, 106, 115};
21304d6c458bSopenharmony_ci    napi_typedarray_type type;
21314d6c458bSopenharmony_ci    size_t srcLength = 0;
21324d6c458bSopenharmony_ci    void* srcData = nullptr;
21334d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
21344d6c458bSopenharmony_ci    size_t byteOffset = 0;
21354d6c458bSopenharmony_ci    napi_get_typedarray_info(env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
21364d6c458bSopenharmony_ci    char* res = (char*)srcData;
21374d6c458bSopenharmony_ci
21384d6c458bSopenharmony_ci    for (size_t i = 0; i < 14; i++) {
21394d6c458bSopenharmony_ci        ASSERT_EQ(res[i], excepted[i]);
21404d6c458bSopenharmony_ci    }
21414d6c458bSopenharmony_ci}
21424d6c458bSopenharmony_ci
21434d6c458bSopenharmony_ci/* @tc.name: decodeTest003
21444d6c458bSopenharmony_ci * @tc.desc: Decodes the Base64-encoded string or input u8 array
21454d6c458bSopenharmony_ci             into the newly allocated u8 array using the Base64 encoding scheme.
21464d6c458bSopenharmony_ci * @tc.type: FUNC
21474d6c458bSopenharmony_ci */
21484d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decodeTest003, testing::ext::TestSize.Level0)
21494d6c458bSopenharmony_ci{
21504d6c458bSopenharmony_ci    HILOG_INFO("decodeTest003 start");
21514d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
21524d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
21534d6c458bSopenharmony_ci
21544d6c458bSopenharmony_ci    std::string input = "czEz";
21554d6c458bSopenharmony_ci    napi_value src = nullptr;
21564d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
21574d6c458bSopenharmony_ci    napi_value result = base64.DecodeSync(env, src, OHOS::Util::Type::BASIC);
21584d6c458bSopenharmony_ci    char excepted[3] = {115, 49, 51};
21594d6c458bSopenharmony_ci    napi_typedarray_type type;
21604d6c458bSopenharmony_ci    size_t srcLength = 0;
21614d6c458bSopenharmony_ci    void* srcData = nullptr;
21624d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
21634d6c458bSopenharmony_ci    size_t byteOffset = 0;
21644d6c458bSopenharmony_ci    napi_get_typedarray_info(env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
21654d6c458bSopenharmony_ci    char* res = (char*)srcData;
21664d6c458bSopenharmony_ci
21674d6c458bSopenharmony_ci    ASSERT_EQ(res[0], excepted[0]);
21684d6c458bSopenharmony_ci    ASSERT_EQ(res[1], excepted[1]);
21694d6c458bSopenharmony_ci    ASSERT_EQ(res[2], excepted[2]);
21704d6c458bSopenharmony_ci}
21714d6c458bSopenharmony_ci
21724d6c458bSopenharmony_ci/* @tc.name: decodeTest004
21734d6c458bSopenharmony_ci * @tc.desc: Decodes the Base64-encoded string or input u8 array
21744d6c458bSopenharmony_ci             into the newly allocated u8 array using the Base64 encoding scheme.
21754d6c458bSopenharmony_ci * @tc.type: FUNC
21764d6c458bSopenharmony_ci */
21774d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decodeTest004, testing::ext::TestSize.Level0)
21784d6c458bSopenharmony_ci{
21794d6c458bSopenharmony_ci    HILOG_INFO("decodeTest004 start");
21804d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
21814d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
21824d6c458bSopenharmony_ci
21834d6c458bSopenharmony_ci    std::string input = "qK6b/w==";
21844d6c458bSopenharmony_ci    napi_value src = nullptr;
21854d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
21864d6c458bSopenharmony_ci    napi_value result = base64.DecodeSync(env, src, OHOS::Util::Type::BASIC);
21874d6c458bSopenharmony_ci    char excepted[4] = {168, 174, 155, 255};
21884d6c458bSopenharmony_ci    napi_typedarray_type type;
21894d6c458bSopenharmony_ci    size_t srcLength = 0;
21904d6c458bSopenharmony_ci    void* srcData = nullptr;
21914d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
21924d6c458bSopenharmony_ci    size_t byteOffset = 0;
21934d6c458bSopenharmony_ci    napi_get_typedarray_info(env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
21944d6c458bSopenharmony_ci    char* res = (char*)srcData;
21954d6c458bSopenharmony_ci    for (size_t i = 0; i < 4; i++) {
21964d6c458bSopenharmony_ci        ASSERT_EQ(res[i], excepted[i]);
21974d6c458bSopenharmony_ci    }
21984d6c458bSopenharmony_ci}
21994d6c458bSopenharmony_ci
22004d6c458bSopenharmony_ci/* @tc.name: decodeTest005
22014d6c458bSopenharmony_ci * @tc.desc: Decodes the Base64-encoded string or input u8 array
22024d6c458bSopenharmony_ci             into the newly allocated u8 array using the Base64 encoding scheme.
22034d6c458bSopenharmony_ci * @tc.type: FUNC
22044d6c458bSopenharmony_ci */
22054d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decodeTest005, testing::ext::TestSize.Level0)
22064d6c458bSopenharmony_ci{
22074d6c458bSopenharmony_ci    HILOG_INFO("decodeTest005 start");
22084d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
22094d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
22104d6c458bSopenharmony_ci
22114d6c458bSopenharmony_ci    std::string input = "QmFzZTY0";
22124d6c458bSopenharmony_ci    napi_value src = nullptr;
22134d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
22144d6c458bSopenharmony_ci    napi_value result = base64.DecodeSync(env, src, OHOS::Util::Type::BASIC);
22154d6c458bSopenharmony_ci    char excepted[6] = {66, 97, 115, 101, 54, 52};
22164d6c458bSopenharmony_ci    napi_typedarray_type type;
22174d6c458bSopenharmony_ci    size_t srcLength = 0;
22184d6c458bSopenharmony_ci    void* srcData = nullptr;
22194d6c458bSopenharmony_ci    napi_value srcBuffer = nullptr;
22204d6c458bSopenharmony_ci    size_t byteOffset = 0;
22214d6c458bSopenharmony_ci    napi_get_typedarray_info(env, result, &type, &srcLength, &srcData, &srcBuffer, &byteOffset);
22224d6c458bSopenharmony_ci    char* res = (char*)srcData;
22234d6c458bSopenharmony_ci    for (size_t i = 0; i < 6; i++) {
22244d6c458bSopenharmony_ci        ASSERT_EQ(res[i], excepted[i]);
22254d6c458bSopenharmony_ci    }
22264d6c458bSopenharmony_ci}
22274d6c458bSopenharmony_ci
22284d6c458bSopenharmony_ci/* @tc.name: decodeTest006
22294d6c458bSopenharmony_ci * @tc.desc: Decodes the Base64-encoded string or input unit32 array with return null.
22304d6c458bSopenharmony_ci * @tc.type: FUNC
22314d6c458bSopenharmony_ci */
22324d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decodeTest006, testing::ext::TestSize.Level0)
22334d6c458bSopenharmony_ci{
22344d6c458bSopenharmony_ci    HILOG_INFO("decodeTest006 start");
22354d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
22364d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
22374d6c458bSopenharmony_ci
22384d6c458bSopenharmony_ci    std::string input1 = "";
22394d6c458bSopenharmony_ci    napi_value src1 = nullptr;
22404d6c458bSopenharmony_ci    napi_create_string_utf8(env, input1.c_str(), input1.size(), &src1);
22414d6c458bSopenharmony_ci    base64.DecodeSync(env, src1, OHOS::Util::Type::BASIC_URL_SAFE);
22424d6c458bSopenharmony_ci    napi_value result1 = base64.DecodeSync(env, src1, OHOS::Util::Type::BASIC);
22434d6c458bSopenharmony_ci    ASSERT_EQ(result1, nullptr);
22444d6c458bSopenharmony_ci    napi_value exception;
22454d6c458bSopenharmony_ci    napi_get_and_clear_last_exception(env, &exception);
22464d6c458bSopenharmony_ci
22474d6c458bSopenharmony_ci    unsigned char input[20] = {81, 109, 70, 122, 90, 84, 89, 48, 73, 69, 53, 118, 90, 71, 85, 117, 97, 110, 77, 61};
22484d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
22494d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
22504d6c458bSopenharmony_ci    void* data = nullptr;
22514d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
22524d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
22534d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
22544d6c458bSopenharmony_ci    napi_value src = nullptr;
22554d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint32_array, arrayBufferSize, arrayBuffer, 0, &src);
22564d6c458bSopenharmony_ci    napi_value result = base64.DecodeSync(env, src, OHOS::Util::Type::BASIC);
22574d6c458bSopenharmony_ci    ASSERT_EQ(result, nullptr);
22584d6c458bSopenharmony_ci
22594d6c458bSopenharmony_ci    napi_get_and_clear_last_exception(env, &exception);
22604d6c458bSopenharmony_ci}
22614d6c458bSopenharmony_ci
22624d6c458bSopenharmony_ci/* @tc.name: decodeTest007
22634d6c458bSopenharmony_ci * @tc.desc: Decodes the Base64-encoded string with type BASIC_URL_SAFE.
22644d6c458bSopenharmony_ci * @tc.type: FUNC
22654d6c458bSopenharmony_ci */
22664d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decodeTest007, testing::ext::TestSize.Level0)
22674d6c458bSopenharmony_ci{
22684d6c458bSopenharmony_ci    HILOG_INFO("decodeTest007 start");
22694d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
22704d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
22714d6c458bSopenharmony_ci    std::string input = "qK6b/w==";
22724d6c458bSopenharmony_ci    napi_value src = nullptr;
22734d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
22744d6c458bSopenharmony_ci    napi_value result = base64.DecodeSync(env, src, OHOS::Util::Type::BASIC_URL_SAFE);
22754d6c458bSopenharmony_ci    ASSERT_EQ(nullptr, result);
22764d6c458bSopenharmony_ci
22774d6c458bSopenharmony_ci    std::string input1 = "qK6b/w";
22784d6c458bSopenharmony_ci    napi_value src1 = nullptr;
22794d6c458bSopenharmony_ci    napi_create_string_utf8(env, input1.c_str(), input1.size(), &src1);
22804d6c458bSopenharmony_ci    napi_value result1 = base64.DecodeSync(env, src1, OHOS::Util::Type::BASIC_URL_SAFE);
22814d6c458bSopenharmony_ci    ASSERT_EQ(nullptr, result1);
22824d6c458bSopenharmony_ci
22834d6c458bSopenharmony_ci    std::string input2 = "qK6b/w=";
22844d6c458bSopenharmony_ci    napi_value src2 = nullptr;
22854d6c458bSopenharmony_ci    napi_create_string_utf8(env, input2.c_str(), input2.size(), &src2);
22864d6c458bSopenharmony_ci    napi_value result2 = base64.DecodeSync(env, src2, OHOS::Util::Type::BASIC_URL_SAFE);
22874d6c458bSopenharmony_ci    ASSERT_EQ(nullptr, result2);
22884d6c458bSopenharmony_ci
22894d6c458bSopenharmony_ci    napi_value exception;
22904d6c458bSopenharmony_ci    napi_get_and_clear_last_exception(env, &exception);
22914d6c458bSopenharmony_ci}
22924d6c458bSopenharmony_ci
22934d6c458bSopenharmony_ci/* @tc.name: encodeAsyncTest001
22944d6c458bSopenharmony_ci * @tc.desc: Asynchronously encodes all bytes in the specified u8 array
22954d6c458bSopenharmony_ci             into the newly allocated u8 array using the Base64 encoding scheme.
22964d6c458bSopenharmony_ci * @tc.type: FUNC
22974d6c458bSopenharmony_ci */
22984d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeAsyncTest001, testing::ext::TestSize.Level0)
22994d6c458bSopenharmony_ci{
23004d6c458bSopenharmony_ci    HILOG_INFO("encodeAsyncTest001 start");
23014d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
23024d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
23034d6c458bSopenharmony_ci    unsigned char input[3] = {0x73, 0x31, 0x33};
23044d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
23054d6c458bSopenharmony_ci    void* data = nullptr;
23064d6c458bSopenharmony_ci    size_t arrayBufferSize = 3;
23074d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
23084d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
23094d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
23104d6c458bSopenharmony_ci    napi_value src = nullptr;
23114d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
23124d6c458bSopenharmony_ci
23134d6c458bSopenharmony_ci    napi_value result = base64.Encode(env, src, OHOS::Util::Type::BASIC);
23144d6c458bSopenharmony_ci    bool res = false;
23154d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
23164d6c458bSopenharmony_ci    ASSERT_TRUE(res);
23174d6c458bSopenharmony_ci
23184d6c458bSopenharmony_ci    napi_value src1 = nullptr;
23194d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint16_array, arrayBufferSize, arrayBuffer, 0, &src1);
23204d6c458bSopenharmony_ci    napi_value result1 = base64.Encode(env, src1, OHOS::Util::Type::BASIC);
23214d6c458bSopenharmony_ci    ASSERT_EQ(result1, nullptr);
23224d6c458bSopenharmony_ci
23234d6c458bSopenharmony_ci    napi_value exception;
23244d6c458bSopenharmony_ci    napi_get_and_clear_last_exception(env, &exception);
23254d6c458bSopenharmony_ci}
23264d6c458bSopenharmony_ci
23274d6c458bSopenharmony_ci/* @tc.name: encodeAsyncTest002
23284d6c458bSopenharmony_ci * @tc.desc: Asynchronously encodes all bytes in the specified u8 array
23294d6c458bSopenharmony_ci             into the newly allocated u8 array using the Base64 encoding scheme.
23304d6c458bSopenharmony_ci * @tc.type: FUNC
23314d6c458bSopenharmony_ci */
23324d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeAsyncTest002, testing::ext::TestSize.Level0)
23334d6c458bSopenharmony_ci{
23344d6c458bSopenharmony_ci    HILOG_INFO("encodeAsyncTest002 start");
23354d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
23364d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
23374d6c458bSopenharmony_ci    unsigned char input[14] = {66, 97, 115, 101, 54, 52, 32, 78, 111, 100, 101, 46, 106, 115};
23384d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
23394d6c458bSopenharmony_ci    void* data = nullptr;
23404d6c458bSopenharmony_ci    size_t arrayBufferSize = 14;
23414d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
23424d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
23434d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
23444d6c458bSopenharmony_ci    napi_value src = nullptr;
23454d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
23464d6c458bSopenharmony_ci
23474d6c458bSopenharmony_ci    napi_value result = base64.Encode(env, src, OHOS::Util::Type::BASIC);
23484d6c458bSopenharmony_ci    bool res = false;
23494d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
23504d6c458bSopenharmony_ci    ASSERT_TRUE(res);
23514d6c458bSopenharmony_ci}
23524d6c458bSopenharmony_ci
23534d6c458bSopenharmony_ci/* @tc.name: encodeAsyncTest003
23544d6c458bSopenharmony_ci * @tc.desc: Asynchronously encodes all bytes in the specified u8 array
23554d6c458bSopenharmony_ci             into the newly allocated u8 array using the Base64 encoding scheme.
23564d6c458bSopenharmony_ci * @tc.type: FUNC
23574d6c458bSopenharmony_ci */
23584d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeAsyncTest003, testing::ext::TestSize.Level0)
23594d6c458bSopenharmony_ci{
23604d6c458bSopenharmony_ci    HILOG_INFO("encodeAsyncTest003 start");
23614d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
23624d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
23634d6c458bSopenharmony_ci    unsigned char input[26] = {66, 97, 115, 101, 54, 52, 32, 69, 110,
23644d6c458bSopenharmony_ci                               99, 111, 100, 105, 110, 103, 32, 105, 110, 32, 78, 111, 100, 101, 46, 106, 115};
23654d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
23664d6c458bSopenharmony_ci    void* data = nullptr;
23674d6c458bSopenharmony_ci    size_t arrayBufferSize = 26;
23684d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
23694d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
23704d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
23714d6c458bSopenharmony_ci    napi_value src = nullptr;
23724d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
23734d6c458bSopenharmony_ci
23744d6c458bSopenharmony_ci    napi_value result = base64.Encode(env, src, OHOS::Util::Type::BASIC);
23754d6c458bSopenharmony_ci    bool res = false;
23764d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
23774d6c458bSopenharmony_ci    ASSERT_TRUE(res);
23784d6c458bSopenharmony_ci}
23794d6c458bSopenharmony_ci
23804d6c458bSopenharmony_ci/* @tc.name: encodeAsyncTest004
23814d6c458bSopenharmony_ci * @tc.desc: Asynchronously encodes all bytes in the specified u8 array
23824d6c458bSopenharmony_ci             into the newly allocated u8 array using the Base64 encoding scheme.
23834d6c458bSopenharmony_ci * @tc.type: FUNC
23844d6c458bSopenharmony_ci */
23854d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeAsyncTest004, testing::ext::TestSize.Level0)
23864d6c458bSopenharmony_ci{
23874d6c458bSopenharmony_ci    HILOG_INFO("encodeAsyncTest004 start");
23884d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
23894d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
23904d6c458bSopenharmony_ci    unsigned char input[4] = {168, 174, 155, 255};
23914d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
23924d6c458bSopenharmony_ci    void* data = nullptr;
23934d6c458bSopenharmony_ci    size_t arrayBufferSize = 4;
23944d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
23954d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
23964d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
23974d6c458bSopenharmony_ci    napi_value src = nullptr;
23984d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
23994d6c458bSopenharmony_ci
24004d6c458bSopenharmony_ci    napi_value result = base64.Encode(env, src, OHOS::Util::Type::BASIC);
24014d6c458bSopenharmony_ci    bool res = false;
24024d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
24034d6c458bSopenharmony_ci    ASSERT_TRUE(res);
24044d6c458bSopenharmony_ci}
24054d6c458bSopenharmony_ci
24064d6c458bSopenharmony_ci/* @tc.name: encodeAsyncTest005
24074d6c458bSopenharmony_ci * @tc.desc: Asynchronously encodes all bytes in the specified u8 array
24084d6c458bSopenharmony_ci             into the newly allocated u8 array using the Base64 encoding scheme.
24094d6c458bSopenharmony_ci * @tc.type: FUNC
24104d6c458bSopenharmony_ci */
24114d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeAsyncTest005, testing::ext::TestSize.Level0)
24124d6c458bSopenharmony_ci{
24134d6c458bSopenharmony_ci    HILOG_INFO("encodeAsyncTest005 start");
24144d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
24154d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
24164d6c458bSopenharmony_ci    unsigned char input[6] = {66, 97, 115, 101, 54, 52};
24174d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
24184d6c458bSopenharmony_ci    void* data = nullptr;
24194d6c458bSopenharmony_ci    size_t arrayBufferSize = 6;
24204d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
24214d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
24224d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
24234d6c458bSopenharmony_ci    napi_value src = nullptr;
24244d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
24254d6c458bSopenharmony_ci
24264d6c458bSopenharmony_ci    napi_value result = base64.Encode(env, src, OHOS::Util::Type::BASIC);
24274d6c458bSopenharmony_ci    bool res = false;
24284d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
24294d6c458bSopenharmony_ci    ASSERT_TRUE(res);
24304d6c458bSopenharmony_ci}
24314d6c458bSopenharmony_ci
24324d6c458bSopenharmony_ci/* @tc.name: encodeToStringAsyncTest001
24334d6c458bSopenharmony_ci * @tc.desc: Asynchronously encodes the specified byte array into a String using the Base64 encoding scheme.
24344d6c458bSopenharmony_ci * @tc.type: FUNC
24354d6c458bSopenharmony_ci */
24364d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeToStringAsyncTest001, testing::ext::TestSize.Level0)
24374d6c458bSopenharmony_ci{
24384d6c458bSopenharmony_ci    HILOG_INFO("encodeToStringAsyncTest001 start");
24394d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
24404d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
24414d6c458bSopenharmony_ci
24424d6c458bSopenharmony_ci    unsigned char input[3] = {115, 49, 51};
24434d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
24444d6c458bSopenharmony_ci    size_t arrayBufferSize = 3;
24454d6c458bSopenharmony_ci    void* data = nullptr;
24464d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
24474d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
24484d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
24494d6c458bSopenharmony_ci    napi_value src = nullptr;
24504d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
24514d6c458bSopenharmony_ci    napi_value result = base64.EncodeToString(env, src, OHOS::Util::Type::BASIC);
24524d6c458bSopenharmony_ci    bool res = false;
24534d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
24544d6c458bSopenharmony_ci    ASSERT_TRUE(res);
24554d6c458bSopenharmony_ci
24564d6c458bSopenharmony_ci    napi_value src1 = nullptr;
24574d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint16_array, arrayBufferSize, arrayBuffer, 0, &src1);
24584d6c458bSopenharmony_ci    napi_value result1 = base64.EncodeToString(env, src1, OHOS::Util::Type::BASIC);
24594d6c458bSopenharmony_ci    ASSERT_EQ(result1, nullptr);
24604d6c458bSopenharmony_ci
24614d6c458bSopenharmony_ci    napi_value exception;
24624d6c458bSopenharmony_ci    napi_get_and_clear_last_exception(env, &exception);
24634d6c458bSopenharmony_ci}
24644d6c458bSopenharmony_ci
24654d6c458bSopenharmony_ci/* @tc.name: encodeToStringAsyncTest002
24664d6c458bSopenharmony_ci * @tc.desc: Asynchronously encodes the specified byte array into a String using the Base64 encoding scheme.
24674d6c458bSopenharmony_ci * @tc.type: FUNC
24684d6c458bSopenharmony_ci */
24694d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeToStringAsyncTest002, testing::ext::TestSize.Level0)
24704d6c458bSopenharmony_ci{
24714d6c458bSopenharmony_ci    HILOG_INFO("encodeToStringAsyncTest002 start");
24724d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
24734d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
24744d6c458bSopenharmony_ci    unsigned char input[14] = {66, 97, 115, 101, 54, 52, 32, 78, 111, 100, 101, 46, 106, 115};
24754d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
24764d6c458bSopenharmony_ci    void* data = nullptr;
24774d6c458bSopenharmony_ci    size_t arrayBufferSize = 14;
24784d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
24794d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
24804d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
24814d6c458bSopenharmony_ci    napi_value src = nullptr;
24824d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
24834d6c458bSopenharmony_ci
24844d6c458bSopenharmony_ci    napi_value result = base64.EncodeToString(env, src, OHOS::Util::Type::BASIC);
24854d6c458bSopenharmony_ci    bool res = false;
24864d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
24874d6c458bSopenharmony_ci    ASSERT_TRUE(res);
24884d6c458bSopenharmony_ci}
24894d6c458bSopenharmony_ci
24904d6c458bSopenharmony_ci/* @tc.name: encodeToStringAsyncTest003
24914d6c458bSopenharmony_ci * @tc.desc: Asynchronously encodes the specified byte array into a String using the Base64 encoding scheme.
24924d6c458bSopenharmony_ci * @tc.type: FUNC
24934d6c458bSopenharmony_ci */
24944d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeToStringAsyncTest003, testing::ext::TestSize.Level0)
24954d6c458bSopenharmony_ci{
24964d6c458bSopenharmony_ci    HILOG_INFO("encodeToStringAsyncTest003 start");
24974d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
24984d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
24994d6c458bSopenharmony_ci    unsigned char input[26] = {66, 97, 115, 101, 54, 52, 32, 69, 110,
25004d6c458bSopenharmony_ci                                99, 111, 100, 105, 110, 103, 32, 105, 110, 32, 78, 111, 100, 101, 46, 106, 115};
25014d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
25024d6c458bSopenharmony_ci    void* data = nullptr;
25034d6c458bSopenharmony_ci    size_t arrayBufferSize = 26;
25044d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
25054d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
25064d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
25074d6c458bSopenharmony_ci    napi_value src = nullptr;
25084d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
25094d6c458bSopenharmony_ci
25104d6c458bSopenharmony_ci    napi_value result = base64.EncodeToString(env, src, OHOS::Util::Type::BASIC);
25114d6c458bSopenharmony_ci    bool res = false;
25124d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
25134d6c458bSopenharmony_ci    ASSERT_TRUE(res);
25144d6c458bSopenharmony_ci}
25154d6c458bSopenharmony_ci
25164d6c458bSopenharmony_ci/* @tc.name: encodeToStringAsyncTest004
25174d6c458bSopenharmony_ci * @tc.desc: Asynchronously encodes the specified byte array into a String using the Base64 encoding scheme.
25184d6c458bSopenharmony_ci * @tc.type: FUNC
25194d6c458bSopenharmony_ci */
25204d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeToStringAsyncTest004, testing::ext::TestSize.Level0)
25214d6c458bSopenharmony_ci{
25224d6c458bSopenharmony_ci    HILOG_INFO("encodeToStringAsyncTest004 start");
25234d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
25244d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
25254d6c458bSopenharmony_ci    unsigned char input[4] = {168, 174, 155, 255};
25264d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
25274d6c458bSopenharmony_ci    void* data = nullptr;
25284d6c458bSopenharmony_ci    size_t arrayBufferSize = 4;
25294d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
25304d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
25314d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
25324d6c458bSopenharmony_ci    napi_value src = nullptr;
25334d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
25344d6c458bSopenharmony_ci
25354d6c458bSopenharmony_ci    napi_value result = base64.EncodeToString(env, src, OHOS::Util::Type::BASIC);
25364d6c458bSopenharmony_ci    bool res = false;
25374d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
25384d6c458bSopenharmony_ci    ASSERT_TRUE(res);
25394d6c458bSopenharmony_ci}
25404d6c458bSopenharmony_ci
25414d6c458bSopenharmony_ci/* @tc.name: encodeToStringAsyncTest005
25424d6c458bSopenharmony_ci * @tc.desc: Asynchronously encodes the specified byte array into a String using the Base64 encoding scheme.
25434d6c458bSopenharmony_ci * @tc.type: FUNC
25444d6c458bSopenharmony_ci */
25454d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, encodeToStringAsyncTest005, testing::ext::TestSize.Level0)
25464d6c458bSopenharmony_ci{
25474d6c458bSopenharmony_ci    HILOG_INFO("encodeToStringAsyncTest005 start");
25484d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
25494d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
25504d6c458bSopenharmony_ci    unsigned char input[6] = {66, 97, 115, 101, 54, 52};
25514d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
25524d6c458bSopenharmony_ci    void* data = nullptr;
25534d6c458bSopenharmony_ci    size_t arrayBufferSize = 6;
25544d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
25554d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
25564d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
25574d6c458bSopenharmony_ci    napi_value src = nullptr;
25584d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
25594d6c458bSopenharmony_ci
25604d6c458bSopenharmony_ci    napi_value result = base64.EncodeToString(env, src, OHOS::Util::Type::BASIC);
25614d6c458bSopenharmony_ci    bool res = false;
25624d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
25634d6c458bSopenharmony_ci    ASSERT_TRUE(res);
25644d6c458bSopenharmony_ci}
25654d6c458bSopenharmony_ci
25664d6c458bSopenharmony_ci/* @tc.name: decodeAsyncTest001
25674d6c458bSopenharmony_ci * @tc.desc: Use the Base64 encoding scheme to asynchronously decode a
25684d6c458bSopenharmony_ci             Base64-encoded string or input u8 array into a newly allocated u8 array.
25694d6c458bSopenharmony_ci * @tc.type: FUNC
25704d6c458bSopenharmony_ci */
25714d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decodeAsyncTest001, testing::ext::TestSize.Level0)
25724d6c458bSopenharmony_ci{
25734d6c458bSopenharmony_ci    HILOG_INFO("decodeAsyncTest001 start");
25744d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
25754d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
25764d6c458bSopenharmony_ci
25774d6c458bSopenharmony_ci    unsigned char input[4] = {99, 122, 69, 122};
25784d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
25794d6c458bSopenharmony_ci    size_t arrayBufferSize = 4;
25804d6c458bSopenharmony_ci    void* data = nullptr;
25814d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
25824d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
25834d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
25844d6c458bSopenharmony_ci    napi_value src = nullptr;
25854d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
25864d6c458bSopenharmony_ci    napi_value result = base64.Decode(env, src, OHOS::Util::Type::BASIC);
25874d6c458bSopenharmony_ci    bool res = false;
25884d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
25894d6c458bSopenharmony_ci    ASSERT_TRUE(res);
25904d6c458bSopenharmony_ci}
25914d6c458bSopenharmony_ci
25924d6c458bSopenharmony_ci/* @tc.name: decodeAsyncTest002
25934d6c458bSopenharmony_ci * @tc.desc: Use the Base64 encoding scheme to asynchronously decode a
25944d6c458bSopenharmony_ci             Base64-encoded string or input u8 array into a newly allocated u8 array.
25954d6c458bSopenharmony_ci * @tc.type: FUNC
25964d6c458bSopenharmony_ci */
25974d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decodeAsyncTest002, testing::ext::TestSize.Level0)
25984d6c458bSopenharmony_ci{
25994d6c458bSopenharmony_ci    HILOG_INFO("decodeAsyncTest002 start");
26004d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
26014d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
26024d6c458bSopenharmony_ci
26034d6c458bSopenharmony_ci    unsigned char input[8] = {113, 75, 54, 98, 47, 119, 61, 61};
26044d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
26054d6c458bSopenharmony_ci    size_t arrayBufferSize = 8;
26064d6c458bSopenharmony_ci    void* data = nullptr;
26074d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
26084d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
26094d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
26104d6c458bSopenharmony_ci    napi_value src = nullptr;
26114d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src);
26124d6c458bSopenharmony_ci    napi_value result = base64.Decode(env, src, OHOS::Util::Type::BASIC);
26134d6c458bSopenharmony_ci    bool res = false;
26144d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
26154d6c458bSopenharmony_ci    ASSERT_TRUE(res);
26164d6c458bSopenharmony_ci}
26174d6c458bSopenharmony_ci
26184d6c458bSopenharmony_ci/* @tc.name: decodeAsyncTest003
26194d6c458bSopenharmony_ci * @tc.desc: Use the Base64 encoding scheme to asynchronously decode a
26204d6c458bSopenharmony_ci             Base64-encoded string or input u8 array into a newly allocated u8 array.
26214d6c458bSopenharmony_ci * @tc.type: FUNC
26224d6c458bSopenharmony_ci */
26234d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decodeAsyncTest003, testing::ext::TestSize.Level0)
26244d6c458bSopenharmony_ci{
26254d6c458bSopenharmony_ci    HILOG_INFO("decodeAsyncTest003 start");
26264d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
26274d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
26284d6c458bSopenharmony_ci
26294d6c458bSopenharmony_ci    std::string input = "czEz";
26304d6c458bSopenharmony_ci    napi_value src = nullptr;
26314d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
26324d6c458bSopenharmony_ci    napi_value result = base64.Decode(env, src, OHOS::Util::Type::BASIC);
26334d6c458bSopenharmony_ci    bool res = false;
26344d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
26354d6c458bSopenharmony_ci    ASSERT_TRUE(res);
26364d6c458bSopenharmony_ci}
26374d6c458bSopenharmony_ci
26384d6c458bSopenharmony_ci/* @tc.name: decodeAsyncTest004
26394d6c458bSopenharmony_ci * @tc.desc: Use the Base64 encoding scheme to asynchronously decode a
26404d6c458bSopenharmony_ci             Base64-encoded string or input u8 array into a newly allocated u8 array.
26414d6c458bSopenharmony_ci * @tc.type: FUNC
26424d6c458bSopenharmony_ci */
26434d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decodeAsyncTest004, testing::ext::TestSize.Level0)
26444d6c458bSopenharmony_ci{
26454d6c458bSopenharmony_ci    HILOG_INFO("decodeAsyncTest004 start");
26464d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
26474d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
26484d6c458bSopenharmony_ci
26494d6c458bSopenharmony_ci    std::string input = "QmFzZTY0IEVuY29kaW5nIGluIE5vZGUuanM=";
26504d6c458bSopenharmony_ci    napi_value src = nullptr;
26514d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
26524d6c458bSopenharmony_ci    napi_value result = base64.Decode(env, src, OHOS::Util::Type::BASIC);
26534d6c458bSopenharmony_ci    bool res = false;
26544d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
26554d6c458bSopenharmony_ci    ASSERT_TRUE(res);
26564d6c458bSopenharmony_ci}
26574d6c458bSopenharmony_ci
26584d6c458bSopenharmony_ci/* @tc.name: decodeAsyncTest005
26594d6c458bSopenharmony_ci * @tc.desc: Use the Base64 encoding scheme to asynchronously decode a
26604d6c458bSopenharmony_ci             Base64-encoded string or input u8 array into a newly allocated u8 array.
26614d6c458bSopenharmony_ci * @tc.type: FUNC
26624d6c458bSopenharmony_ci */
26634d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decodeAsyncTest005, testing::ext::TestSize.Level0)
26644d6c458bSopenharmony_ci{
26654d6c458bSopenharmony_ci    HILOG_INFO("decodeAsyncTest005 start");
26664d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
26674d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
26684d6c458bSopenharmony_ci
26694d6c458bSopenharmony_ci    std::string input = "qK6b/w==";
26704d6c458bSopenharmony_ci    napi_value src = nullptr;
26714d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
26724d6c458bSopenharmony_ci    napi_value result = base64.Decode(env, src, OHOS::Util::Type::BASIC);
26734d6c458bSopenharmony_ci    bool res = false;
26744d6c458bSopenharmony_ci    napi_is_promise(env, result, &res);
26754d6c458bSopenharmony_ci    ASSERT_TRUE(res);
26764d6c458bSopenharmony_ci}
26774d6c458bSopenharmony_ci
26784d6c458bSopenharmony_ci/* @tc.name: decodeAsyncTest006
26794d6c458bSopenharmony_ci * @tc.desc: Use the Base64 encoding scheme to asynchronously decode a
26804d6c458bSopenharmony_ci             Base64-encoded string or input u8 array into a newly allocated u8 array.
26814d6c458bSopenharmony_ci * @tc.type: FUNC
26824d6c458bSopenharmony_ci */
26834d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, decodeAsyncTest006, testing::ext::TestSize.Level0)
26844d6c458bSopenharmony_ci{
26854d6c458bSopenharmony_ci    HILOG_INFO("decodeAsyncTest006 start");
26864d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
26874d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
26884d6c458bSopenharmony_ci
26894d6c458bSopenharmony_ci    napi_value src = nullptr;
26904d6c458bSopenharmony_ci    napi_value result = base64.Decode(env, src, OHOS::Util::Type::BASIC);
26914d6c458bSopenharmony_ci    ASSERT_EQ(nullptr, result);
26924d6c458bSopenharmony_ci
26934d6c458bSopenharmony_ci    std::string input1 = "";
26944d6c458bSopenharmony_ci    napi_value src1 = nullptr;
26954d6c458bSopenharmony_ci    napi_create_string_utf8(env, input1.c_str(), input1.size(), &src1);
26964d6c458bSopenharmony_ci    napi_value result1 = base64.Decode(env, src1, OHOS::Util::Type::BASIC);
26974d6c458bSopenharmony_ci    ASSERT_EQ(nullptr, result1);
26984d6c458bSopenharmony_ci    napi_value exception;
26994d6c458bSopenharmony_ci    napi_get_and_clear_last_exception(env, &exception);
27004d6c458bSopenharmony_ci
27014d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
27024d6c458bSopenharmony_ci    size_t arrayBufferSize = 0;
27034d6c458bSopenharmony_ci    void* data = nullptr;
27044d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
27054d6c458bSopenharmony_ci    napi_value src2 = nullptr;
27064d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_uint8_array, arrayBufferSize, arrayBuffer, 0, &src2);
27074d6c458bSopenharmony_ci    napi_value result2 = base64.Decode(env, src2, OHOS::Util::Type::BASIC);
27084d6c458bSopenharmony_ci    ASSERT_EQ(nullptr, result2);
27094d6c458bSopenharmony_ci
27104d6c458bSopenharmony_ci    napi_get_and_clear_last_exception(env, &exception);
27114d6c458bSopenharmony_ci}
27124d6c458bSopenharmony_ci
27134d6c458bSopenharmony_ci/**
27144d6c458bSopenharmony_ci * @tc.name: stringDecoderWrite001
27154d6c458bSopenharmony_ci * @tc.desc: Test the write function with complete data.
27164d6c458bSopenharmony_ci * @tc.type: FUNC
27174d6c458bSopenharmony_ci */
27184d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, stringDecoderWrite001, testing::ext::TestSize.Level0)
27194d6c458bSopenharmony_ci{
27204d6c458bSopenharmony_ci    OHOS::Util::StringDecoder stringDecoder("utf-8");
27214d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
27224d6c458bSopenharmony_ci    const int arrCount = 6;
27234d6c458bSopenharmony_ci    size_t byteLength = arrCount;
27244d6c458bSopenharmony_ci    void* data = nullptr;
27254d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
27264d6c458bSopenharmony_ci    unsigned char arr[arrCount] = {0xE4, 0xBD, 0xA0, 0xE5, 0xA5, 0xBD};
27274d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
27284d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
27294d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
27304d6c458bSopenharmony_ci    napi_value result = nullptr;
27314d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
27324d6c458bSopenharmony_ci    napi_value testRes = stringDecoder.Write(env, result);
27334d6c458bSopenharmony_ci    size_t bufferSize = 0;
27344d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, nullptr, 0, &bufferSize) != napi_ok) {
27354d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg size");
27364d6c458bSopenharmony_ci    }
27374d6c458bSopenharmony_ci    std::string buffer = "";
27384d6c458bSopenharmony_ci    buffer.reserve(bufferSize);
27394d6c458bSopenharmony_ci    buffer.resize(bufferSize);
27404d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, buffer.data(), bufferSize + 1, &bufferSize) != napi_ok) {
27414d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg value");
27424d6c458bSopenharmony_ci    }
27434d6c458bSopenharmony_ci    ASSERT_STREQ("你好", buffer.c_str());
27444d6c458bSopenharmony_ci
27454d6c458bSopenharmony_ci    napi_value testResEnd = stringDecoder.End(env);
27464d6c458bSopenharmony_ci    size_t bufferEndSizeEnd = 0;
27474d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testResEnd, nullptr, 0, &bufferEndSizeEnd) != napi_ok) {
27484d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg size");
27494d6c458bSopenharmony_ci    }
27504d6c458bSopenharmony_ci    std::string bufferEnd = "";
27514d6c458bSopenharmony_ci    bufferEnd.reserve(bufferEndSizeEnd);
27524d6c458bSopenharmony_ci    bufferEnd.resize(bufferEndSizeEnd);
27534d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(
27544d6c458bSopenharmony_ci        env, testResEnd, bufferEnd.data(), bufferEndSizeEnd + 1, &bufferEndSizeEnd) != napi_ok) {
27554d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg value");
27564d6c458bSopenharmony_ci    }
27574d6c458bSopenharmony_ci    ASSERT_STREQ("", bufferEnd.c_str());
27584d6c458bSopenharmony_ci}
27594d6c458bSopenharmony_ci
27604d6c458bSopenharmony_ci/**
27614d6c458bSopenharmony_ci * @tc.name: stringDecoderWrite002
27624d6c458bSopenharmony_ci * @tc.desc: Test the write function by splitting the complete data into two parts.
27634d6c458bSopenharmony_ci * @tc.type: FUNC
27644d6c458bSopenharmony_ci */
27654d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, stringDecoderWrite002, testing::ext::TestSize.Level0)
27664d6c458bSopenharmony_ci{
27674d6c458bSopenharmony_ci    OHOS::Util::StringDecoder stringDecoder("utf-8");
27684d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
27694d6c458bSopenharmony_ci    const int arrCount = 2;
27704d6c458bSopenharmony_ci    size_t byteLength = arrCount;
27714d6c458bSopenharmony_ci    void* data = nullptr;
27724d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
27734d6c458bSopenharmony_ci    unsigned char arr[arrCount] = {0xE4, 0xBD};
27744d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
27754d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
27764d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
27774d6c458bSopenharmony_ci    napi_value result = nullptr;
27784d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
27794d6c458bSopenharmony_ci    napi_value testRes = stringDecoder.Write(env, result);
27804d6c458bSopenharmony_ci    size_t bufferSize = 0;
27814d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, nullptr, 0, &bufferSize) != napi_ok) {
27824d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg size");
27834d6c458bSopenharmony_ci    }
27844d6c458bSopenharmony_ci    std::string buffer = "";
27854d6c458bSopenharmony_ci    buffer.reserve(bufferSize);
27864d6c458bSopenharmony_ci    buffer.resize(bufferSize);
27874d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, buffer.data(), bufferSize + 1, &bufferSize) != napi_ok) {
27884d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg value");
27894d6c458bSopenharmony_ci    }
27904d6c458bSopenharmony_ci    ASSERT_STREQ("", buffer.c_str());
27914d6c458bSopenharmony_ci
27924d6c458bSopenharmony_ci    const int count = 4;
27934d6c458bSopenharmony_ci    byteLength = count;
27944d6c458bSopenharmony_ci    data = nullptr;
27954d6c458bSopenharmony_ci    resultBuff = nullptr;
27964d6c458bSopenharmony_ci    unsigned char uint8[count] = {0xA0, 0xE5, 0xA5, 0xBD};
27974d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
27984d6c458bSopenharmony_ci    ret = memcpy_s(data, sizeof(uint8), reinterpret_cast<void*>(uint8), sizeof(uint8));
27994d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
28004d6c458bSopenharmony_ci    result = nullptr;
28014d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
28024d6c458bSopenharmony_ci    testRes = stringDecoder.Write(env, result);
28034d6c458bSopenharmony_ci    bufferSize = 0;
28044d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, nullptr, 0, &bufferSize) != napi_ok) {
28054d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg size");
28064d6c458bSopenharmony_ci    }
28074d6c458bSopenharmony_ci    buffer = "";
28084d6c458bSopenharmony_ci    buffer.reserve(bufferSize);
28094d6c458bSopenharmony_ci    buffer.resize(bufferSize);
28104d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, buffer.data(), bufferSize + 1, &bufferSize) != napi_ok) {
28114d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg value");
28124d6c458bSopenharmony_ci    }
28134d6c458bSopenharmony_ci    ASSERT_STREQ("你好", buffer.c_str());
28144d6c458bSopenharmony_ci}
28154d6c458bSopenharmony_ci
28164d6c458bSopenharmony_ci/**
28174d6c458bSopenharmony_ci * @tc.name: stringDecoderWrite003
28184d6c458bSopenharmony_ci * @tc.desc: Test the write function with not typedarray.
28194d6c458bSopenharmony_ci * @tc.type: FUNC
28204d6c458bSopenharmony_ci */
28214d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, stringDecoderWrite003, testing::ext::TestSize.Level0)
28224d6c458bSopenharmony_ci{
28234d6c458bSopenharmony_ci    OHOS::Util::StringDecoder stringDecoder("utf-8");
28244d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
28254d6c458bSopenharmony_ci    napi_value testRes = stringDecoder.Write(env, nullptr);
28264d6c458bSopenharmony_ci    ASSERT_EQ(testRes, nullptr);
28274d6c458bSopenharmony_ci
28284d6c458bSopenharmony_ci    napi_value exception;
28294d6c458bSopenharmony_ci    napi_get_and_clear_last_exception(env, &exception);
28304d6c458bSopenharmony_ci}
28314d6c458bSopenharmony_ci
28324d6c458bSopenharmony_ci/**
28334d6c458bSopenharmony_ci * @tc.name: stringDecoderEnd001
28344d6c458bSopenharmony_ci * @tc.desc: Test the end function by splitting the complete data into two parts.
28354d6c458bSopenharmony_ci * @tc.type: FUNC
28364d6c458bSopenharmony_ci */
28374d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, stringDecoderEnd001, testing::ext::TestSize.Level0)
28384d6c458bSopenharmony_ci{
28394d6c458bSopenharmony_ci    OHOS::Util::StringDecoder stringDecoder("utf-8");
28404d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
28414d6c458bSopenharmony_ci    const int arrCount = 2;
28424d6c458bSopenharmony_ci    size_t byteLength = arrCount;
28434d6c458bSopenharmony_ci    void* data = nullptr;
28444d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
28454d6c458bSopenharmony_ci    unsigned char arr[arrCount] = {0xE4, 0xBD};
28464d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
28474d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
28484d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
28494d6c458bSopenharmony_ci    napi_value result = nullptr;
28504d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
28514d6c458bSopenharmony_ci    napi_value testRes = stringDecoder.Write(env, result);
28524d6c458bSopenharmony_ci    size_t bufferSize = 0;
28534d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, nullptr, 0, &bufferSize) != napi_ok) {
28544d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg size");
28554d6c458bSopenharmony_ci    }
28564d6c458bSopenharmony_ci    std::string buffer = "";
28574d6c458bSopenharmony_ci    buffer.reserve(bufferSize);
28584d6c458bSopenharmony_ci    buffer.resize(bufferSize);
28594d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, buffer.data(), bufferSize + 1, &bufferSize) != napi_ok) {
28604d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg value");
28614d6c458bSopenharmony_ci    }
28624d6c458bSopenharmony_ci    ASSERT_STREQ("", buffer.c_str());
28634d6c458bSopenharmony_ci
28644d6c458bSopenharmony_ci    const int count = 4;
28654d6c458bSopenharmony_ci    byteLength = count;
28664d6c458bSopenharmony_ci    data = nullptr;
28674d6c458bSopenharmony_ci    resultBuff = nullptr;
28684d6c458bSopenharmony_ci    unsigned char uint8[count] = {0xA0, 0xE5, 0xA5, 0xBD};
28694d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
28704d6c458bSopenharmony_ci    ret = memcpy_s(data, sizeof(uint8), reinterpret_cast<void*>(uint8), sizeof(uint8));
28714d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
28724d6c458bSopenharmony_ci    result = nullptr;
28734d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
28744d6c458bSopenharmony_ci    testRes = stringDecoder.End(env, result);
28754d6c458bSopenharmony_ci    bufferSize = 0;
28764d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, nullptr, 0, &bufferSize) != napi_ok) {
28774d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg size");
28784d6c458bSopenharmony_ci    }
28794d6c458bSopenharmony_ci    buffer = "";
28804d6c458bSopenharmony_ci    buffer.reserve(bufferSize);
28814d6c458bSopenharmony_ci    buffer.resize(bufferSize);
28824d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, buffer.data(), bufferSize + 1, &bufferSize) != napi_ok) {
28834d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg value");
28844d6c458bSopenharmony_ci    }
28854d6c458bSopenharmony_ci    ASSERT_STREQ("你好", buffer.c_str());
28864d6c458bSopenharmony_ci}
28874d6c458bSopenharmony_ci
28884d6c458bSopenharmony_ci/**
28894d6c458bSopenharmony_ci * @tc.name: stringDecoderEnd002
28904d6c458bSopenharmony_ci * @tc.desc: Test the end function by splitting the complete data into two parts.
28914d6c458bSopenharmony_ci * @tc.type: FUNC
28924d6c458bSopenharmony_ci */
28934d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, stringDecoderEnd002, testing::ext::TestSize.Level0)
28944d6c458bSopenharmony_ci{
28954d6c458bSopenharmony_ci    OHOS::Util::StringDecoder stringDecoder("utf-8");
28964d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
28974d6c458bSopenharmony_ci    const int arrCount = 3;
28984d6c458bSopenharmony_ci    size_t byteLength = arrCount;
28994d6c458bSopenharmony_ci    void* data = nullptr;
29004d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
29014d6c458bSopenharmony_ci    unsigned char arr[arrCount] = {0xE4, 0xBD, 0xA0};
29024d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
29034d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
29044d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
29054d6c458bSopenharmony_ci    napi_value result = nullptr;
29064d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
29074d6c458bSopenharmony_ci    napi_value testRes = stringDecoder.Write(env, result);
29084d6c458bSopenharmony_ci    size_t bufferSize = 0;
29094d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, nullptr, 0, &bufferSize) != napi_ok) {
29104d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg size");
29114d6c458bSopenharmony_ci    }
29124d6c458bSopenharmony_ci    std::string buffer = "";
29134d6c458bSopenharmony_ci    buffer.reserve(bufferSize);
29144d6c458bSopenharmony_ci    buffer.resize(bufferSize);
29154d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, buffer.data(), bufferSize + 1, &bufferSize) != napi_ok) {
29164d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg value");
29174d6c458bSopenharmony_ci    }
29184d6c458bSopenharmony_ci    ASSERT_STREQ("你", buffer.c_str());
29194d6c458bSopenharmony_ci    testRes = stringDecoder.End(env);
29204d6c458bSopenharmony_ci    bufferSize = 0;
29214d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, nullptr, 0, &bufferSize) != napi_ok) {
29224d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg size");
29234d6c458bSopenharmony_ci    }
29244d6c458bSopenharmony_ci    buffer = "";
29254d6c458bSopenharmony_ci    buffer.reserve(bufferSize);
29264d6c458bSopenharmony_ci    buffer.resize(bufferSize);
29274d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testRes, buffer.data(), bufferSize + 1, &bufferSize) != napi_ok) {
29284d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg value");
29294d6c458bSopenharmony_ci    }
29304d6c458bSopenharmony_ci    ASSERT_STREQ("", buffer.c_str());
29314d6c458bSopenharmony_ci}
29324d6c458bSopenharmony_ci
29334d6c458bSopenharmony_ci/**
29344d6c458bSopenharmony_ci * @tc.name: stringDecoderEnd003
29354d6c458bSopenharmony_ci * @tc.desc: string decoder end with pending len 0.
29364d6c458bSopenharmony_ci * @tc.type: FUNC
29374d6c458bSopenharmony_ci */
29384d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, stringDecoderEnd003, testing::ext::TestSize.Level0)
29394d6c458bSopenharmony_ci{
29404d6c458bSopenharmony_ci    OHOS::Util::StringDecoder stringDecoder("utf-8");
29414d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
29424d6c458bSopenharmony_ci    const int arrCount = 6;
29434d6c458bSopenharmony_ci    size_t byteLength = arrCount;
29444d6c458bSopenharmony_ci    void* data = nullptr;
29454d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
29464d6c458bSopenharmony_ci    unsigned char arr[arrCount] = {0xE4, 0xBD, 0xA0, 0xE5, 0xA5, 0xBD};
29474d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
29484d6c458bSopenharmony_ci    memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
29494d6c458bSopenharmony_ci    napi_value result = nullptr;
29504d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
29514d6c458bSopenharmony_ci    stringDecoder.Write(env, result, false);
29524d6c458bSopenharmony_ci
29534d6c458bSopenharmony_ci    napi_value testResEnd = stringDecoder.End(env);
29544d6c458bSopenharmony_ci    size_t bufferEndSizeEnd = 0;
29554d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, testResEnd, nullptr, 0, &bufferEndSizeEnd) != napi_ok) {
29564d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg size");
29574d6c458bSopenharmony_ci    }
29584d6c458bSopenharmony_ci    std::string bufferEnd = "";
29594d6c458bSopenharmony_ci    bufferEnd.reserve(bufferEndSizeEnd);
29604d6c458bSopenharmony_ci    bufferEnd.resize(bufferEndSizeEnd);
29614d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(
29624d6c458bSopenharmony_ci        env, testResEnd, bufferEnd.data(), bufferEndSizeEnd + 1, &bufferEndSizeEnd) != napi_ok) {
29634d6c458bSopenharmony_ci        HILOG_ERROR("can not get arg value");
29644d6c458bSopenharmony_ci    }
29654d6c458bSopenharmony_ci    ASSERT_STREQ("", bufferEnd.c_str());
29664d6c458bSopenharmony_ci}
29674d6c458bSopenharmony_ci
29684d6c458bSopenharmony_ci/**
29694d6c458bSopenharmony_ci * @tc.name: charEncodeAchieves001
29704d6c458bSopenharmony_ci * @tc.desc: char encode achieves with throw error.
29714d6c458bSopenharmony_ci * @tc.type: FUNC
29724d6c458bSopenharmony_ci */
29734d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, charEncodeAchieves001, testing::ext::TestSize.Level0)
29744d6c458bSopenharmony_ci{
29754d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
29764d6c458bSopenharmony_ci    OHOS::Util::EncodeInfo* stdEncodeInfo = nullptr;
29774d6c458bSopenharmony_ci    stdEncodeInfo = new OHOS::Util::EncodeInfo();
29784d6c458bSopenharmony_ci    stdEncodeInfo->slength = 0;
29794d6c458bSopenharmony_ci    unsigned char* res = OHOS::Util::EncodeAchieves(env, stdEncodeInfo);
29804d6c458bSopenharmony_ci    ASSERT_EQ(nullptr, res);
29814d6c458bSopenharmony_ci
29824d6c458bSopenharmony_ci    OHOS::Util::EncodeInfo* stdEncodeInfo1 = nullptr;
29834d6c458bSopenharmony_ci    unsigned char arr[] = {0xE4, 0xBD, 0xA0, 0xE5, 0xA5, 0xBD};
29844d6c458bSopenharmony_ci    stdEncodeInfo1 = new OHOS::Util::EncodeInfo();
29854d6c458bSopenharmony_ci    stdEncodeInfo1->sinputEncode = arr;
29864d6c458bSopenharmony_ci    stdEncodeInfo1->slength = 1;
29874d6c458bSopenharmony_ci    stdEncodeInfo1->valueType = OHOS::Util::Type::BASIC_URL_SAFE;
29884d6c458bSopenharmony_ci    unsigned char* res1 = OHOS::Util::EncodeAchieves(env, stdEncodeInfo1);
29894d6c458bSopenharmony_ci    ASSERT_EQ(0x35, static_cast<unsigned char>(*res1));
29904d6c458bSopenharmony_ci
29914d6c458bSopenharmony_ci    napi_value exception;
29924d6c458bSopenharmony_ci    napi_get_and_clear_last_exception(env, &exception);
29934d6c458bSopenharmony_ci}
29944d6c458bSopenharmony_ci
29954d6c458bSopenharmony_ci/* @tc.name: testDecode001
29964d6c458bSopenharmony_ci * @tc.desc: Test for abnormal situations in the decode function
29974d6c458bSopenharmony_ci * @tc.type: FUNC
29984d6c458bSopenharmony_ci */
29994d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, testDecode001, testing::ext::TestSize.Level0)
30004d6c458bSopenharmony_ci{
30014d6c458bSopenharmony_ci    HILOG_INFO("testDecode001 start");
30024d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
30034d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
30044d6c458bSopenharmony_ci
30054d6c458bSopenharmony_ci    unsigned char input[4] = {99, 122, 69, 122};
30064d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
30074d6c458bSopenharmony_ci    size_t arrayBufferSize = 4;
30084d6c458bSopenharmony_ci    void* data = nullptr;
30094d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &data, &arrayBuffer);
30104d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(input), reinterpret_cast<void*>(input), sizeof(input));
30114d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
30124d6c458bSopenharmony_ci    napi_value src = nullptr;
30134d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, arrayBufferSize, arrayBuffer, 0, &src);
30144d6c458bSopenharmony_ci    napi_value result = base64.Decode(env, src, OHOS::Util::Type::BASIC);
30154d6c458bSopenharmony_ci    ASSERT_TRUE(result == nullptr);
30164d6c458bSopenharmony_ci}
30174d6c458bSopenharmony_ci
30184d6c458bSopenharmony_ci/* @tc.name: testDecode002
30194d6c458bSopenharmony_ci * @tc.desc: Test for abnormal situations in the decode function
30204d6c458bSopenharmony_ci * @tc.type: FUNC
30214d6c458bSopenharmony_ci */
30224d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, testDecode002, testing::ext::TestSize.Level0)
30234d6c458bSopenharmony_ci{
30244d6c458bSopenharmony_ci    HILOG_INFO("testDecode002 start");
30254d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
30264d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
30274d6c458bSopenharmony_ci    napi_value src = nullptr;
30284d6c458bSopenharmony_ci    napi_create_int32(env, 9, &src);
30294d6c458bSopenharmony_ci    napi_value result = base64.Decode(env, src, OHOS::Util::Type::BASIC);
30304d6c458bSopenharmony_ci    ASSERT_TRUE(result == nullptr);
30314d6c458bSopenharmony_ci}
30324d6c458bSopenharmony_ci
30334d6c458bSopenharmony_ci/* @tc.name: testDecodeSync001
30344d6c458bSopenharmony_ci * @tc.desc: Test for abnormal situations in the DecodeSync function
30354d6c458bSopenharmony_ci * @tc.type: FUNC
30364d6c458bSopenharmony_ci */
30374d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, testDecodeSync001, testing::ext::TestSize.Level0)
30384d6c458bSopenharmony_ci{
30394d6c458bSopenharmony_ci    HILOG_INFO("testDecodeSync001 start");
30404d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
30414d6c458bSopenharmony_ci    OHOS::Util::Base64 base64;
30424d6c458bSopenharmony_ci
30434d6c458bSopenharmony_ci    napi_value src = nullptr;
30444d6c458bSopenharmony_ci    napi_create_int32(env, 9, &src);
30454d6c458bSopenharmony_ci    napi_value result = base64.DecodeSync(env, src, OHOS::Util::Type::BASIC);
30464d6c458bSopenharmony_ci    ASSERT_TRUE(result == nullptr);
30474d6c458bSopenharmony_ci}
30484d6c458bSopenharmony_ci
30494d6c458bSopenharmony_ci/**
30504d6c458bSopenharmony_ci * @tc.name: charDecodeAchieves001
30514d6c458bSopenharmony_ci * @tc.desc: char dencode achieves with throw error.
30524d6c458bSopenharmony_ci * @tc.type: FUNC
30534d6c458bSopenharmony_ci */
30544d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, charDencodeAchieves001, testing::ext::TestSize.Level0)
30554d6c458bSopenharmony_ci{
30564d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
30574d6c458bSopenharmony_ci    OHOS::Util::DecodeInfo* stdDecodeInfo2 = nullptr;
30584d6c458bSopenharmony_ci    char arr2[] = {0xE4, 0xBD, 0xA0, 0xE5, 0xA5, 0xBD};
30594d6c458bSopenharmony_ci    stdDecodeInfo2 = new OHOS::Util::DecodeInfo();
30604d6c458bSopenharmony_ci    stdDecodeInfo2->sinputDecode = arr2;
30614d6c458bSopenharmony_ci    stdDecodeInfo2->slength = 2;
30624d6c458bSopenharmony_ci    stdDecodeInfo2->valueType = OHOS::Util::Type::BASIC_URL_SAFE;
30634d6c458bSopenharmony_ci    unsigned char* res2 = OHOS::Util::DecodeAchieves(env, stdDecodeInfo2);
30644d6c458bSopenharmony_ci    ASSERT_EQ(0, static_cast<const char>(*res2));
30654d6c458bSopenharmony_ci
30664d6c458bSopenharmony_ci    OHOS::Util::DecodeInfo* stdDecodeInfo3 = nullptr;
30674d6c458bSopenharmony_ci    char arr3[] = {0xE4, 0xBD, 0xA0, 0xE5, 0xA5, 0xBD};
30684d6c458bSopenharmony_ci    stdDecodeInfo3 = new OHOS::Util::DecodeInfo();
30694d6c458bSopenharmony_ci    stdDecodeInfo3->sinputDecode = arr3;
30704d6c458bSopenharmony_ci    stdDecodeInfo3->slength = 3;
30714d6c458bSopenharmony_ci    stdDecodeInfo3->valueType = OHOS::Util::Type::BASIC_URL_SAFE;
30724d6c458bSopenharmony_ci    unsigned char* res3 = OHOS::Util::DecodeAchieves(env, stdDecodeInfo3);
30734d6c458bSopenharmony_ci    ASSERT_EQ(0, static_cast<unsigned char>(*res3));
30744d6c458bSopenharmony_ci
30754d6c458bSopenharmony_ci    napi_value exception;
30764d6c458bSopenharmony_ci    napi_get_and_clear_last_exception(env, &exception);
30774d6c458bSopenharmony_ci}
30784d6c458bSopenharmony_ci
30794d6c458bSopenharmony_ci/**
30804d6c458bSopenharmony_ci * @tc.name: DecodeToStringNoStream001
30814d6c458bSopenharmony_ci * @tc.desc: Testing the ignoreBOM of TextDecoder.
30824d6c458bSopenharmony_ci * @tc.type: FUNC
30834d6c458bSopenharmony_ci */
30844d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DecodeToStringNoStream001, testing::ext::TestSize.Level0)
30854d6c458bSopenharmony_ci{
30864d6c458bSopenharmony_ci    HILOG_INFO("DecodeToStringNoStream start");
30874d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
30884d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::FATAL_FLG) |
30894d6c458bSopenharmony_ci        static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::IGNORE_BOM_FLG);
30904d6c458bSopenharmony_ci    std::string encoding = "utf-8";
30914d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(encoding, flags);
30924d6c458bSopenharmony_ci    bool iflag = false;
30934d6c458bSopenharmony_ci    size_t byteLength = 6;
30944d6c458bSopenharmony_ci    void* data = nullptr;
30954d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
30964d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
30974d6c458bSopenharmony_ci    unsigned char arr[8] = {0xEF, 0xBB, 0xBF, 0x41, 0x42, 0x43};
30984d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
30994d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
31004d6c458bSopenharmony_ci    napi_value result = nullptr;
31014d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
31024d6c458bSopenharmony_ci    textDecoder.DecodeToString(env, result, iflag);
31034d6c458bSopenharmony_ci}
31044d6c458bSopenharmony_ci
31054d6c458bSopenharmony_ci/**
31064d6c458bSopenharmony_ci * @tc.name: DecodeToStringWithStream001
31074d6c458bSopenharmony_ci * @tc.desc: Testing the ignoreBOM of TextDecoder.
31084d6c458bSopenharmony_ci * @tc.type: FUNC
31094d6c458bSopenharmony_ci */
31104d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DecodeToStringWithStream001, testing::ext::TestSize.Level0)
31114d6c458bSopenharmony_ci{
31124d6c458bSopenharmony_ci    HILOG_INFO("DecodeToStringWithStream start");
31134d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
31144d6c458bSopenharmony_ci    int32_t flags = static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::FATAL_FLG) |
31154d6c458bSopenharmony_ci        static_cast<int>(OHOS::Util::TextDecoder::ConverterFlags::IGNORE_BOM_FLG);
31164d6c458bSopenharmony_ci    std::string encoding = "utf-8";
31174d6c458bSopenharmony_ci    OHOS::Util::TextDecoder textDecoder(encoding, flags);
31184d6c458bSopenharmony_ci    bool iflag = true;
31194d6c458bSopenharmony_ci    size_t byteLength = 6;
31204d6c458bSopenharmony_ci    void* data = nullptr;
31214d6c458bSopenharmony_ci    napi_value resultBuff = nullptr;
31224d6c458bSopenharmony_ci    napi_create_arraybuffer(env, byteLength, &data, &resultBuff);
31234d6c458bSopenharmony_ci    unsigned char arr[8] = {0xEF, 0xBB, 0xBF, 0x41, 0x42, 0x43};
31244d6c458bSopenharmony_ci    int ret = memcpy_s(data, sizeof(arr), reinterpret_cast<void*>(arr), sizeof(arr));
31254d6c458bSopenharmony_ci    ASSERT_EQ(0, ret);
31264d6c458bSopenharmony_ci    napi_value result = nullptr;
31274d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, byteLength, resultBuff, 0, &result);
31284d6c458bSopenharmony_ci    textDecoder.DecodeToString(env, result, iflag);
31294d6c458bSopenharmony_ci}
31304d6c458bSopenharmony_ci
31314d6c458bSopenharmony_ci/**
31324d6c458bSopenharmony_ci * @tc.name: textEncodeIntoTest008
31334d6c458bSopenharmony_ci * @tc.desc: Test returns a dictionary object indicating the progress of the encoding
31344d6c458bSopenharmony_ci * @tc.type: FUNC
31354d6c458bSopenharmony_ci */
31364d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeIntoTest008, testing::ext::TestSize.Level0)
31374d6c458bSopenharmony_ci{
31384d6c458bSopenharmony_ci    HILOG_INFO("textEncodeIntoTest008 start");
31394d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
31404d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("utf-8");
31414d6c458bSopenharmony_ci    std::string input = "�";
31424d6c458bSopenharmony_ci    napi_value src = nullptr;
31434d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
31444d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
31454d6c458bSopenharmony_ci    void* arrayBufferPtr = nullptr;
31464d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
31474d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
31484d6c458bSopenharmony_ci    napi_value dest = nullptr;
31494d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, arrayBufferSize, arrayBuffer, 0, &dest);
31504d6c458bSopenharmony_ci    napi_value result = textEncoder.EncodeInto(env, src, dest);
31514d6c458bSopenharmony_ci    napi_value read = nullptr;
31524d6c458bSopenharmony_ci    napi_get_named_property(env, result, "read", &read);
31534d6c458bSopenharmony_ci    uint32_t resRead = 0;
31544d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resRead);
31554d6c458bSopenharmony_ci    napi_value written = nullptr;
31564d6c458bSopenharmony_ci    napi_get_named_property(env, result, "written", &written);
31574d6c458bSopenharmony_ci    uint32_t resWritten = 0;
31584d6c458bSopenharmony_ci    napi_get_value_uint32(env, written, &resWritten);
31594d6c458bSopenharmony_ci    ASSERT_EQ(resRead, static_cast<uint32_t>(2));
31604d6c458bSopenharmony_ci    ASSERT_EQ(resWritten, static_cast<uint32_t>(4));
31614d6c458bSopenharmony_ci}
31624d6c458bSopenharmony_ci
31634d6c458bSopenharmony_ci/**
31644d6c458bSopenharmony_ci * @tc.name: textEncodeIntoTest009
31654d6c458bSopenharmony_ci * @tc.desc: Test returns a dictionary object indicating the progress of the encoding
31664d6c458bSopenharmony_ci * @tc.type: FUNC
31674d6c458bSopenharmony_ci */
31684d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeIntoTest009, testing::ext::TestSize.Level0)
31694d6c458bSopenharmony_ci{
31704d6c458bSopenharmony_ci    HILOG_INFO("textEncodeIntoTest009 start");
31714d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
31724d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("utf-8");
31734d6c458bSopenharmony_ci    std::string input = "�a";
31744d6c458bSopenharmony_ci    napi_value src = nullptr;
31754d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
31764d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
31774d6c458bSopenharmony_ci    void* arrayBufferPtr = nullptr;
31784d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
31794d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
31804d6c458bSopenharmony_ci    napi_value dest = nullptr;
31814d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, arrayBufferSize, arrayBuffer, 0, &dest);
31824d6c458bSopenharmony_ci    napi_value result = textEncoder.EncodeInto(env, src, dest);
31834d6c458bSopenharmony_ci    napi_value read = nullptr;
31844d6c458bSopenharmony_ci    napi_get_named_property(env, result, "read", &read);
31854d6c458bSopenharmony_ci    uint32_t resRead = 0;
31864d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resRead);
31874d6c458bSopenharmony_ci    napi_value written = nullptr;
31884d6c458bSopenharmony_ci    napi_get_named_property(env, result, "written", &written);
31894d6c458bSopenharmony_ci    uint32_t resWritten = 0;
31904d6c458bSopenharmony_ci    napi_get_value_uint32(env, written, &resWritten);
31914d6c458bSopenharmony_ci    ASSERT_EQ(resRead, static_cast<uint32_t>(3));
31924d6c458bSopenharmony_ci    ASSERT_EQ(resWritten, static_cast<uint32_t>(5));
31934d6c458bSopenharmony_ci}
31944d6c458bSopenharmony_ci
31954d6c458bSopenharmony_ci/**
31964d6c458bSopenharmony_ci * @tc.name: textEncodeIntoTest010
31974d6c458bSopenharmony_ci * @tc.desc: Test returns a dictionary object indicating the progress of the encoding
31984d6c458bSopenharmony_ci * @tc.type: FUNC
31994d6c458bSopenharmony_ci */
32004d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeIntoTest010, testing::ext::TestSize.Level0)
32014d6c458bSopenharmony_ci{
32024d6c458bSopenharmony_ci    HILOG_INFO("textEncodeIntoTest010 start");
32034d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
32044d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("utf-8");
32054d6c458bSopenharmony_ci    std::string input = "�a�";
32064d6c458bSopenharmony_ci    napi_value src = nullptr;
32074d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
32084d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
32094d6c458bSopenharmony_ci    void* arrayBufferPtr = nullptr;
32104d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
32114d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
32124d6c458bSopenharmony_ci    napi_value dest = nullptr;
32134d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, arrayBufferSize, arrayBuffer, 0, &dest);
32144d6c458bSopenharmony_ci    napi_value result = textEncoder.EncodeInto(env, src, dest);
32154d6c458bSopenharmony_ci    napi_value read = nullptr;
32164d6c458bSopenharmony_ci    napi_get_named_property(env, result, "read", &read);
32174d6c458bSopenharmony_ci    uint32_t resRead = 0;
32184d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resRead);
32194d6c458bSopenharmony_ci    napi_value written = nullptr;
32204d6c458bSopenharmony_ci    napi_get_named_property(env, result, "written", &written);
32214d6c458bSopenharmony_ci    uint32_t resWritten = 0;
32224d6c458bSopenharmony_ci    napi_get_value_uint32(env, written, &resWritten);
32234d6c458bSopenharmony_ci    ASSERT_EQ(resRead, static_cast<uint32_t>(5));
32244d6c458bSopenharmony_ci    ASSERT_EQ(resWritten, static_cast<uint32_t>(9));
32254d6c458bSopenharmony_ci}
32264d6c458bSopenharmony_ci
32274d6c458bSopenharmony_ci/**
32284d6c458bSopenharmony_ci * @tc.name: textEncodeIntoTest011
32294d6c458bSopenharmony_ci * @tc.desc: Test returns a dictionary object indicating the progress of the encoding
32304d6c458bSopenharmony_ci * @tc.type: FUNC
32314d6c458bSopenharmony_ci */
32324d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeIntoTest011, testing::ext::TestSize.Level0)
32334d6c458bSopenharmony_ci{
32344d6c458bSopenharmony_ci    HILOG_INFO("textEncodeIntoTest011 start");
32354d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
32364d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("utf-8");
32374d6c458bSopenharmony_ci    std::string input = "中a";
32384d6c458bSopenharmony_ci    napi_value src = nullptr;
32394d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
32404d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
32414d6c458bSopenharmony_ci    void* arrayBufferPtr = nullptr;
32424d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
32434d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
32444d6c458bSopenharmony_ci    napi_value dest = nullptr;
32454d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, arrayBufferSize, arrayBuffer, 0, &dest);
32464d6c458bSopenharmony_ci    napi_value result = textEncoder.EncodeInto(env, src, dest);
32474d6c458bSopenharmony_ci    napi_value read = nullptr;
32484d6c458bSopenharmony_ci    napi_get_named_property(env, result, "read", &read);
32494d6c458bSopenharmony_ci    uint32_t resRead = 0;
32504d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resRead);
32514d6c458bSopenharmony_ci    napi_value written = nullptr;
32524d6c458bSopenharmony_ci    napi_get_named_property(env, result, "written", &written);
32534d6c458bSopenharmony_ci    uint32_t resWritten = 0;
32544d6c458bSopenharmony_ci    napi_get_value_uint32(env, written, &resWritten);
32554d6c458bSopenharmony_ci    ASSERT_EQ(resRead, static_cast<uint32_t>(2));
32564d6c458bSopenharmony_ci    ASSERT_EQ(resWritten, static_cast<uint32_t>(4));
32574d6c458bSopenharmony_ci}
32584d6c458bSopenharmony_ci
32594d6c458bSopenharmony_ci/**
32604d6c458bSopenharmony_ci * @tc.name: textEncodeIntoTest012
32614d6c458bSopenharmony_ci * @tc.desc: Test returns a dictionary object indicating the progress of the encoding
32624d6c458bSopenharmony_ci * @tc.type: FUNC
32634d6c458bSopenharmony_ci */
32644d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, textEncodeIntoTest012, testing::ext::TestSize.Level0)
32654d6c458bSopenharmony_ci{
32664d6c458bSopenharmony_ci    HILOG_INFO("textEncodeIntoTest012 start");
32674d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
32684d6c458bSopenharmony_ci    OHOS::Util::TextEncoder textEncoder("utf-8");
32694d6c458bSopenharmony_ci    std::string input = "中aÿ";
32704d6c458bSopenharmony_ci    napi_value src = nullptr;
32714d6c458bSopenharmony_ci    napi_create_string_utf8(env, input.c_str(), input.size(), &src);
32724d6c458bSopenharmony_ci    napi_value arrayBuffer = nullptr;
32734d6c458bSopenharmony_ci    void* arrayBufferPtr = nullptr;
32744d6c458bSopenharmony_ci    size_t arrayBufferSize = 20;
32754d6c458bSopenharmony_ci    napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
32764d6c458bSopenharmony_ci    napi_value dest = nullptr;
32774d6c458bSopenharmony_ci    napi_create_typedarray(env, napi_int8_array, arrayBufferSize, arrayBuffer, 0, &dest);
32784d6c458bSopenharmony_ci    napi_value result = textEncoder.EncodeInto(env, src, dest);
32794d6c458bSopenharmony_ci    napi_value read = nullptr;
32804d6c458bSopenharmony_ci    napi_get_named_property(env, result, "read", &read);
32814d6c458bSopenharmony_ci    uint32_t resRead = 0;
32824d6c458bSopenharmony_ci    napi_get_value_uint32(env, read, &resRead);
32834d6c458bSopenharmony_ci    napi_value written = nullptr;
32844d6c458bSopenharmony_ci    napi_get_named_property(env, result, "written", &written);
32854d6c458bSopenharmony_ci    uint32_t resWritten = 0;
32864d6c458bSopenharmony_ci    napi_get_value_uint32(env, written, &resWritten);
32874d6c458bSopenharmony_ci    ASSERT_EQ(resRead, static_cast<uint32_t>(3));
32884d6c458bSopenharmony_ci    ASSERT_EQ(resWritten, static_cast<uint32_t>(6));
32894d6c458bSopenharmony_ci}