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}