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
184d6c458bSopenharmony_ci#include "napi/native_api.h"
194d6c458bSopenharmony_ci#include "napi/native_node_api.h"
204d6c458bSopenharmony_ci
214d6c458bSopenharmony_ci#include "converter.h"
224d6c458bSopenharmony_ci#include "js_blob.h"
234d6c458bSopenharmony_ci#include "js_buffer.h"
244d6c458bSopenharmony_ci#include "tools/log.h"
254d6c458bSopenharmony_ci
264d6c458bSopenharmony_ci#include <limits>
274d6c458bSopenharmony_ci
284d6c458bSopenharmony_ci#define ASSERT_CHECK_CALL(call)   \
294d6c458bSopenharmony_ci    {                             \
304d6c458bSopenharmony_ci        ASSERT_EQ(call, napi_ok); \
314d6c458bSopenharmony_ci    }
324d6c458bSopenharmony_ci
334d6c458bSopenharmony_ci#define ASSERT_CHECK_VALUE_TYPE(env, value, type)               \
344d6c458bSopenharmony_ci    {                                                           \
354d6c458bSopenharmony_ci        napi_valuetype valueType = napi_undefined;              \
364d6c458bSopenharmony_ci        ASSERT_TRUE(value != nullptr);                          \
374d6c458bSopenharmony_ci        ASSERT_CHECK_CALL(napi_typeof(env, value, &valueType)); \
384d6c458bSopenharmony_ci        ASSERT_EQ(valueType, type);                             \
394d6c458bSopenharmony_ci    }
404d6c458bSopenharmony_civoid FillZero(OHOS::buffer::Buffer *buf, size_t size)
414d6c458bSopenharmony_ci{
424d6c458bSopenharmony_ci    for (size_t i = 0; i < size; i++) {
434d6c458bSopenharmony_ci        buf->Set(i, 0);
444d6c458bSopenharmony_ci    }
454d6c458bSopenharmony_ci}
464d6c458bSopenharmony_ci
474d6c458bSopenharmony_ci/**
484d6c458bSopenharmony_ci * @tc.name: ConstructorTest001
494d6c458bSopenharmony_ci * @tc.desc: Buffer Constructor.
504d6c458bSopenharmony_ci * @tc.type: FUNC
514d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
524d6c458bSopenharmony_ci */
534d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest001, testing::ext::TestSize.Level0)
544d6c458bSopenharmony_ci{
554d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
564d6c458bSopenharmony_ci    buf->Init(10);
574d6c458bSopenharmony_ci    ASSERT_EQ(buf->GetLength(), 10);
584d6c458bSopenharmony_ci}
594d6c458bSopenharmony_ci
604d6c458bSopenharmony_ci/**
614d6c458bSopenharmony_ci * @tc.name: ConstructorTest002
624d6c458bSopenharmony_ci * @tc.desc: Buffer Constructor.
634d6c458bSopenharmony_ci * @tc.type: FUNC
644d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
654d6c458bSopenharmony_ci */
664d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest002, testing::ext::TestSize.Level0)
674d6c458bSopenharmony_ci{
684d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf1 = new OHOS::buffer::Buffer();
694d6c458bSopenharmony_ci    buf1->Init(10);
704d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf2 = new OHOS::buffer::Buffer();
714d6c458bSopenharmony_ci    buf2->Init(buf1);
724d6c458bSopenharmony_ci    ASSERT_EQ(buf2->GetLength(), 10);
734d6c458bSopenharmony_ci}
744d6c458bSopenharmony_ci
754d6c458bSopenharmony_ci
764d6c458bSopenharmony_ci/**
774d6c458bSopenharmony_ci * @tc.name: ConstructorTest003
784d6c458bSopenharmony_ci * @tc.desc: Buffer Constructor.
794d6c458bSopenharmony_ci * @tc.type: FUNC
804d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
814d6c458bSopenharmony_ci */
824d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest003, testing::ext::TestSize.Level0)
834d6c458bSopenharmony_ci{
844d6c458bSopenharmony_ci    OHOS::buffer::Buffer *poolBuffer = new OHOS::buffer::Buffer();
854d6c458bSopenharmony_ci    poolBuffer->Init(1024 * 8);
864d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf2 = new OHOS::buffer::Buffer();
874d6c458bSopenharmony_ci    buf2->Init(poolBuffer, 0, 5);
884d6c458bSopenharmony_ci    ASSERT_EQ(buf2->GetLength(), 5);
894d6c458bSopenharmony_ci    ASSERT_EQ(buf2->GetByteOffset(), 0);
904d6c458bSopenharmony_ci
914d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf3 = new OHOS::buffer::Buffer();
924d6c458bSopenharmony_ci    buf3->Init(poolBuffer, 5, 6);
934d6c458bSopenharmony_ci    ASSERT_EQ(buf3->GetLength(), 6);
944d6c458bSopenharmony_ci    ASSERT_EQ(buf3->GetByteOffset(), 5);
954d6c458bSopenharmony_ci}
964d6c458bSopenharmony_ci
974d6c458bSopenharmony_ci/**
984d6c458bSopenharmony_ci * @tc.name: ConstructorTest004
994d6c458bSopenharmony_ci * @tc.desc: Buffer Constructor.
1004d6c458bSopenharmony_ci * @tc.type: FUNC
1014d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
1024d6c458bSopenharmony_ci */
1034d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest004, testing::ext::TestSize.Level0)
1044d6c458bSopenharmony_ci{
1054d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf2 = new OHOS::buffer::Buffer();
1064d6c458bSopenharmony_ci    uint8_t data[4] = {1, 2, 3, 4};
1074d6c458bSopenharmony_ci    buf2->Init(data, 0, 4);
1084d6c458bSopenharmony_ci    ASSERT_EQ(buf2->GetLength(), 4);
1094d6c458bSopenharmony_ci    ASSERT_EQ(buf2->GetByteOffset(), 0);
1104d6c458bSopenharmony_ci}
1114d6c458bSopenharmony_ci
1124d6c458bSopenharmony_ci/**
1134d6c458bSopenharmony_ci * @tc.name: ConstructorTest005
1144d6c458bSopenharmony_ci * @tc.desc: Buffer Constructor.
1154d6c458bSopenharmony_ci * @tc.type: FUNC
1164d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
1174d6c458bSopenharmony_ci */
1184d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ConstructorTest005, testing::ext::TestSize.Level0)
1194d6c458bSopenharmony_ci{
1204d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
1214d6c458bSopenharmony_ci    buf->Init(1);
1224d6c458bSopenharmony_ci    ASSERT_EQ(buf->GetLength(), 1);
1234d6c458bSopenharmony_ci    uint32_t res = buf->Copy(nullptr, 0, 0, 0);
1244d6c458bSopenharmony_ci    ASSERT_EQ(res, 0);
1254d6c458bSopenharmony_ci    int result = buf->Compare(nullptr, 0, 0, 0);
1264d6c458bSopenharmony_ci    ASSERT_EQ(result, 0);
1274d6c458bSopenharmony_ci    buf->ReadBytes(nullptr, 0, 0);
1284d6c458bSopenharmony_ci    buf->FillString("abc", 1, 0, "utf16le");
1294d6c458bSopenharmony_ci    buf->FillString("abc", 1, 0, "binary");
1304d6c458bSopenharmony_ci    buf->FillString("abc", 1, 0, "sos");
1314d6c458bSopenharmony_ci    buf->FillString("abc", 1, 0, "hex");
1324d6c458bSopenharmony_ci    std::vector<uint8_t> array;
1334d6c458bSopenharmony_ci    buf->FillNumber(array, 0, 0);
1344d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buffer = new OHOS::buffer::Buffer();
1354d6c458bSopenharmony_ci    buf->FillBuffer(buffer, 0, 0);
1364d6c458bSopenharmony_ci    buf->FillBuffer(nullptr, 1, 0);
1374d6c458bSopenharmony_ci    buf->SetArray(array, 0);
1384d6c458bSopenharmony_ci    result = buf->LastIndexOf(nullptr, 0, 0);
1394d6c458bSopenharmony_ci    ASSERT_EQ(result, -1);
1404d6c458bSopenharmony_ci    uint64_t resultIndex = 0;
1414d6c458bSopenharmony_ci    result = buf->IndexOf(nullptr, 0, 0, resultIndex);
1424d6c458bSopenharmony_ci    ASSERT_EQ(result, -1);
1434d6c458bSopenharmony_ci    delete buf;
1444d6c458bSopenharmony_ci    buf = nullptr;
1454d6c458bSopenharmony_ci    delete buffer;
1464d6c458bSopenharmony_ci    buffer = nullptr;
1474d6c458bSopenharmony_ci}
1484d6c458bSopenharmony_ci
1494d6c458bSopenharmony_ci/**
1504d6c458bSopenharmony_ci * @tc.name: DestructorTest001
1514d6c458bSopenharmony_ci * @tc.desc: Buffer Destructor.
1524d6c458bSopenharmony_ci * @tc.type: FUNC
1534d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
1544d6c458bSopenharmony_ci */
1554d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, DestructorTest001, testing::ext::TestSize.Level0)
1564d6c458bSopenharmony_ci{
1574d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
1584d6c458bSopenharmony_ci    uint8_t data[4] = {1, 2, 3, 4};
1594d6c458bSopenharmony_ci    buf->Init(data, 0, 4);
1604d6c458bSopenharmony_ci    ASSERT_EQ(buf->GetLength(), 4);
1614d6c458bSopenharmony_ci    delete buf;
1624d6c458bSopenharmony_ci    buf = nullptr;
1634d6c458bSopenharmony_ci}
1644d6c458bSopenharmony_ci
1654d6c458bSopenharmony_ci/**
1664d6c458bSopenharmony_ci * @tc.name: GetLengthTest001
1674d6c458bSopenharmony_ci * @tc.desc: Get buffer Length.
1684d6c458bSopenharmony_ci * @tc.type: FUNC
1694d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
1704d6c458bSopenharmony_ci */
1714d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetLengthTest001, testing::ext::TestSize.Level0)
1724d6c458bSopenharmony_ci{
1734d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
1744d6c458bSopenharmony_ci    ASSERT_EQ(buf->GetLength(), 0);
1754d6c458bSopenharmony_ci}
1764d6c458bSopenharmony_ci
1774d6c458bSopenharmony_ci/**
1784d6c458bSopenharmony_ci * @tc.name: GetLengthTest002
1794d6c458bSopenharmony_ci * @tc.desc: Get buffer Length.
1804d6c458bSopenharmony_ci * @tc.type: FUNC
1814d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
1824d6c458bSopenharmony_ci */
1834d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetLengthTest002, testing::ext::TestSize.Level0)
1844d6c458bSopenharmony_ci{
1854d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
1864d6c458bSopenharmony_ci    buf->Init(6);
1874d6c458bSopenharmony_ci    ASSERT_EQ(buf->GetLength(), 6);
1884d6c458bSopenharmony_ci}
1894d6c458bSopenharmony_ci
1904d6c458bSopenharmony_ci/**
1914d6c458bSopenharmony_ci * @tc.name: SetLengthTest001
1924d6c458bSopenharmony_ci * @tc.desc: Set buffer Length.
1934d6c458bSopenharmony_ci * @tc.type: FUNC
1944d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
1954d6c458bSopenharmony_ci */
1964d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, SetLengthTest001, testing::ext::TestSize.Level0)
1974d6c458bSopenharmony_ci{
1984d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
1994d6c458bSopenharmony_ci    buf->Init(6);
2004d6c458bSopenharmony_ci    buf->SetLength(7);
2014d6c458bSopenharmony_ci    ASSERT_EQ(buf->GetLength(), 7);
2024d6c458bSopenharmony_ci}
2034d6c458bSopenharmony_ci
2044d6c458bSopenharmony_ci/**
2054d6c458bSopenharmony_ci * @tc.name: GetByteOffsetTest001
2064d6c458bSopenharmony_ci * @tc.desc: Get buffer byteOffset.
2074d6c458bSopenharmony_ci * @tc.type: FUNC
2084d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
2094d6c458bSopenharmony_ci */
2104d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetByteOffsetTest001, testing::ext::TestSize.Level0)
2114d6c458bSopenharmony_ci{
2124d6c458bSopenharmony_ci    OHOS::buffer::Buffer *poolBuffer = new OHOS::buffer::Buffer();
2134d6c458bSopenharmony_ci    poolBuffer->Init(1024 * 8);
2144d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
2154d6c458bSopenharmony_ci    buf->Init(poolBuffer, 2, 5);
2164d6c458bSopenharmony_ci    ASSERT_EQ(buf->GetByteOffset(), 2);
2174d6c458bSopenharmony_ci}
2184d6c458bSopenharmony_ci
2194d6c458bSopenharmony_ci/**
2204d6c458bSopenharmony_ci * @tc.name: GetAndSetTest001
2214d6c458bSopenharmony_ci * @tc.desc: Get And Set method.
2224d6c458bSopenharmony_ci * @tc.type: FUNC
2234d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
2244d6c458bSopenharmony_ci */
2254d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetAndSetTest001, testing::ext::TestSize.Level0)
2264d6c458bSopenharmony_ci{
2274d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
2284d6c458bSopenharmony_ci    buf->Init(3);
2294d6c458bSopenharmony_ci    buf->Set(0, 1);
2304d6c458bSopenharmony_ci    int32_t value = buf->Get(0);
2314d6c458bSopenharmony_ci    ASSERT_EQ(value, 1);
2324d6c458bSopenharmony_ci}
2334d6c458bSopenharmony_ci
2344d6c458bSopenharmony_ci/**
2354d6c458bSopenharmony_ci * @tc.name: GetAndSetTest002
2364d6c458bSopenharmony_ci * @tc.desc: Get And Set method.
2374d6c458bSopenharmony_ci * @tc.type: FUNC
2384d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
2394d6c458bSopenharmony_ci */
2404d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetAndSetTest002, testing::ext::TestSize.Level0)
2414d6c458bSopenharmony_ci{
2424d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
2434d6c458bSopenharmony_ci    buf->Init(3);
2444d6c458bSopenharmony_ci    buf->Set(0, 1);
2454d6c458bSopenharmony_ci    buf->Set(1, 2);
2464d6c458bSopenharmony_ci    buf->Set(2, 3);
2474d6c458bSopenharmony_ci    int32_t value = buf->Get(2);
2484d6c458bSopenharmony_ci    ASSERT_EQ(value, 3);
2494d6c458bSopenharmony_ci}
2504d6c458bSopenharmony_ci
2514d6c458bSopenharmony_ci/**
2524d6c458bSopenharmony_ci * @tc.name: WriteInt32BEAndReadInt32BETest001
2534d6c458bSopenharmony_ci * @tc.desc: Writes value to buf at the specified offset as big-endian. The value must be a valid signed 32-bit integer
2544d6c458bSopenharmony_ci *           Reads a signed, big-endian 32-bit integer from buf at the specified offset.
2554d6c458bSopenharmony_ci * @tc.type: FUNC
2564d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
2574d6c458bSopenharmony_ci */
2584d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteInt32BEAndReadInt32BETest001, testing::ext::TestSize.Level0)
2594d6c458bSopenharmony_ci{
2604d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
2614d6c458bSopenharmony_ci    buf->Init(4);
2624d6c458bSopenharmony_ci    FillZero(buf, 4);
2634d6c458bSopenharmony_ci    buf->WriteInt32BE(0x12345678, 0);
2644d6c458bSopenharmony_ci    int32_t res = buf->ReadInt32BE(0);
2654d6c458bSopenharmony_ci    ASSERT_EQ(res, 0x12345678);
2664d6c458bSopenharmony_ci}
2674d6c458bSopenharmony_ci
2684d6c458bSopenharmony_ci/**
2694d6c458bSopenharmony_ci * @tc.name: WriteInt32BEAndReadInt32BETest002
2704d6c458bSopenharmony_ci * @tc.desc: Writes value to buf at the specified offset as big-endian. The value must be a valid signed 32-bit integer
2714d6c458bSopenharmony_ci *           Reads a signed, big-endian 32-bit integer from buf at the specified offset.
2724d6c458bSopenharmony_ci * @tc.type: FUNC
2734d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
2744d6c458bSopenharmony_ci */
2754d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteInt32BEAndReadInt32BETest002, testing::ext::TestSize.Level0)
2764d6c458bSopenharmony_ci{
2774d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
2784d6c458bSopenharmony_ci    buf->Init(5);
2794d6c458bSopenharmony_ci    FillZero(buf, 5);
2804d6c458bSopenharmony_ci    buf->WriteInt32BE(0x12345678, 1);
2814d6c458bSopenharmony_ci    int32_t res = buf->ReadInt32BE(1);
2824d6c458bSopenharmony_ci    ASSERT_EQ(res, 0x12345678);
2834d6c458bSopenharmony_ci}
2844d6c458bSopenharmony_ci
2854d6c458bSopenharmony_ci/**
2864d6c458bSopenharmony_ci * @tc.name: WriteInt32BEAndReadInt32BETest003
2874d6c458bSopenharmony_ci * @tc.desc: Writes value to buf at the specified offset as big-endian. The value must be a valid signed 32-bit integer
2884d6c458bSopenharmony_ci *           Reads a signed, big-endian 32-bit integer from buf at the specified offset.
2894d6c458bSopenharmony_ci * @tc.type: FUNC
2904d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
2914d6c458bSopenharmony_ci */
2924d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteInt32BEAndReadInt32BETest003, testing::ext::TestSize.Level0)
2934d6c458bSopenharmony_ci{
2944d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
2954d6c458bSopenharmony_ci    buf->Init(5);
2964d6c458bSopenharmony_ci    FillZero(buf, 5);
2974d6c458bSopenharmony_ci    buf->WriteInt32BE(0x12345678, 1);
2984d6c458bSopenharmony_ci    int32_t res = buf->ReadInt32BE(1);
2994d6c458bSopenharmony_ci    ASSERT_EQ(res, 0x12345678);
3004d6c458bSopenharmony_ci}
3014d6c458bSopenharmony_ci
3024d6c458bSopenharmony_ci/**
3034d6c458bSopenharmony_ci * @tc.name: WriteInt32LEAndReadInt32LETest001
3044d6c458bSopenharmony_ci * @tc.desc: Writes value to buf at the specified offset as little-endian.
3054d6c458bSopenharmony_ci *           The value must be a valid signed 32-bit integer.
3064d6c458bSopenharmony_ci *           Reads a signed, little-endian 32-bit integer from buf at the specified offset.
3074d6c458bSopenharmony_ci * @tc.type: FUNC
3084d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
3094d6c458bSopenharmony_ci */
3104d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteInt32LEAndReadInt32LETest001, testing::ext::TestSize.Level0)
3114d6c458bSopenharmony_ci{
3124d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
3134d6c458bSopenharmony_ci    buf->Init(4);
3144d6c458bSopenharmony_ci    FillZero(buf, 4);
3154d6c458bSopenharmony_ci    buf->WriteInt32LE(0x12345678, 0);
3164d6c458bSopenharmony_ci    int32_t res = buf->ReadInt32LE(0);
3174d6c458bSopenharmony_ci    ASSERT_EQ(res, 0x12345678);
3184d6c458bSopenharmony_ci    res = buf->ReadInt32BE(0);
3194d6c458bSopenharmony_ci    ASSERT_EQ(res, 0x78563412);
3204d6c458bSopenharmony_ci}
3214d6c458bSopenharmony_ci
3224d6c458bSopenharmony_ci/**
3234d6c458bSopenharmony_ci * @tc.name: WriteInt32LEAndReadInt32LETest002
3244d6c458bSopenharmony_ci * @tc.desc: Writes value to buf at the specified offset as little-endian.
3254d6c458bSopenharmony_ci *           The value must be a valid signed 32-bit integer.
3264d6c458bSopenharmony_ci *           Reads a signed, little-endian 32-bit integer from buf at the specified offset.
3274d6c458bSopenharmony_ci * @tc.type: FUNC
3284d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
3294d6c458bSopenharmony_ci */
3304d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteInt32LEAndReadInt32LETest002, testing::ext::TestSize.Level0)
3314d6c458bSopenharmony_ci{
3324d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
3334d6c458bSopenharmony_ci    buf->Init(5);
3344d6c458bSopenharmony_ci    FillZero(buf, 5);
3354d6c458bSopenharmony_ci    buf->WriteInt32LE(0x12345678, 1);
3364d6c458bSopenharmony_ci    int32_t res = buf->ReadInt32LE(0);
3374d6c458bSopenharmony_ci    ASSERT_EQ(res, 0x34567800);
3384d6c458bSopenharmony_ci}
3394d6c458bSopenharmony_ci
3404d6c458bSopenharmony_ci/**
3414d6c458bSopenharmony_ci * @tc.name: WriteInt32LEAndReadInt32LETest003
3424d6c458bSopenharmony_ci * @tc.desc: Writes value to buf at the specified offset as little-endian.
3434d6c458bSopenharmony_ci *           The value must be a valid signed 32-bit integer.
3444d6c458bSopenharmony_ci *           Reads a signed, little-endian 32-bit integer from buf at the specified offset.
3454d6c458bSopenharmony_ci * @tc.type: FUNC
3464d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
3474d6c458bSopenharmony_ci */
3484d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteInt32LEAndReadInt32LETest003, testing::ext::TestSize.Level0)
3494d6c458bSopenharmony_ci{
3504d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
3514d6c458bSopenharmony_ci    buf->Init(5);
3524d6c458bSopenharmony_ci    FillZero(buf, 5);
3534d6c458bSopenharmony_ci    buf->WriteInt32LE(0x12345678, 1);
3544d6c458bSopenharmony_ci    int32_t res = buf->ReadInt32LE(1);
3554d6c458bSopenharmony_ci    ASSERT_EQ(res, 0x12345678);
3564d6c458bSopenharmony_ci}
3574d6c458bSopenharmony_ci
3584d6c458bSopenharmony_ci/**
3594d6c458bSopenharmony_ci * @tc.name: WriteUInt32BEAndReadUInt32BETest001
3604d6c458bSopenharmony_ci * @tc.desc: Writes value to buf at the specified offset as big-endian.
3614d6c458bSopenharmony_ci *           The value must be a valid unsigned 32-bit integer.
3624d6c458bSopenharmony_ci *           Reads an unsigned, big-endian 32-bit integer from buf at the specified offset.
3634d6c458bSopenharmony_ci * @tc.type: FUNC
3644d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
3654d6c458bSopenharmony_ci */
3664d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteUInt32BEAndReadUInt32BETest001, testing::ext::TestSize.Level0)
3674d6c458bSopenharmony_ci{
3684d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
3694d6c458bSopenharmony_ci    buf->Init(4);
3704d6c458bSopenharmony_ci    FillZero(buf, 4);
3714d6c458bSopenharmony_ci    buf->WriteUInt32BE(0x12345678, 0);
3724d6c458bSopenharmony_ci    int32_t res = buf->ReadUInt32BE(0);
3734d6c458bSopenharmony_ci    ASSERT_EQ(res, 0x12345678);
3744d6c458bSopenharmony_ci}
3754d6c458bSopenharmony_ci
3764d6c458bSopenharmony_ci/**
3774d6c458bSopenharmony_ci * @tc.name: WriteUInt32BEAndReadUInt32BETest002
3784d6c458bSopenharmony_ci * @tc.desc: Writes value to buf at the specified offset as big-endian.
3794d6c458bSopenharmony_ci *           The value must be a valid unsigned 32-bit integer.
3804d6c458bSopenharmony_ci *           Reads an unsigned, big-endian 32-bit integer from buf at the specified offset.
3814d6c458bSopenharmony_ci * @tc.type: FUNC
3824d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
3834d6c458bSopenharmony_ci */
3844d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteUInt32BEAndReadUInt32BETest002, testing::ext::TestSize.Level0)
3854d6c458bSopenharmony_ci{
3864d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
3874d6c458bSopenharmony_ci    buf->Init(5);
3884d6c458bSopenharmony_ci    FillZero(buf, 5);
3894d6c458bSopenharmony_ci    buf->WriteUInt32BE(0x12345678, 1);
3904d6c458bSopenharmony_ci    int32_t res = buf->ReadUInt32BE(0);
3914d6c458bSopenharmony_ci    ASSERT_EQ(res, 0x123456);
3924d6c458bSopenharmony_ci}
3934d6c458bSopenharmony_ci
3944d6c458bSopenharmony_ci/**
3954d6c458bSopenharmony_ci * @tc.name: WriteUInt32BEAndReadUInt32BETest003
3964d6c458bSopenharmony_ci * @tc.desc: Writes value to buf at the specified offset as big-endian.
3974d6c458bSopenharmony_ci *           The value must be a valid unsigned 32-bit integer.
3984d6c458bSopenharmony_ci *           Reads an unsigned, big-endian 32-bit integer from buf at the specified offset.
3994d6c458bSopenharmony_ci * @tc.type: FUNC
4004d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
4014d6c458bSopenharmony_ci */
4024d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteUInt32BEAndReadUInt32BETest003, testing::ext::TestSize.Level0)
4034d6c458bSopenharmony_ci{
4044d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
4054d6c458bSopenharmony_ci    buf->Init(5);
4064d6c458bSopenharmony_ci    FillZero(buf, 5);
4074d6c458bSopenharmony_ci    buf->WriteUInt32BE(0x12345678, 1);
4084d6c458bSopenharmony_ci    int32_t res = buf->ReadUInt32BE(1);
4094d6c458bSopenharmony_ci    ASSERT_EQ(res, 0x12345678);
4104d6c458bSopenharmony_ci}
4114d6c458bSopenharmony_ci
4124d6c458bSopenharmony_ci/**
4134d6c458bSopenharmony_ci * @tc.name: WriteUInt32LEAndReadUInt32LETest001
4144d6c458bSopenharmony_ci * @tc.desc: Writes value to buf at the specified offset as little-endian.
4154d6c458bSopenharmony_ci *           The value must be a valid unsigned 32-bit integer.
4164d6c458bSopenharmony_ci *           Reads an unsigned, little-endian 32-bit integer from buf at the specified offset.
4174d6c458bSopenharmony_ci * @tc.type: FUNC
4184d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
4194d6c458bSopenharmony_ci */
4204d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteUInt32LEAndReadUInt32LETest001, testing::ext::TestSize.Level0)
4214d6c458bSopenharmony_ci{
4224d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
4234d6c458bSopenharmony_ci    buf->Init(4);
4244d6c458bSopenharmony_ci    FillZero(buf, 4);
4254d6c458bSopenharmony_ci    buf->WriteUInt32LE(0x12345678, 0);
4264d6c458bSopenharmony_ci    int32_t res = buf->ReadUInt32LE(0);
4274d6c458bSopenharmony_ci    ASSERT_EQ(res, 0x12345678);
4284d6c458bSopenharmony_ci}
4294d6c458bSopenharmony_ci
4304d6c458bSopenharmony_ci/**
4314d6c458bSopenharmony_ci * @tc.name: WriteUInt32LEAndReadUInt32LETest002
4324d6c458bSopenharmony_ci * @tc.desc: Writes value to buf at the specified offset as little-endian.
4334d6c458bSopenharmony_ci *           The value must be a valid unsigned 32-bit integer.
4344d6c458bSopenharmony_ci *           Reads an unsigned, little-endian 32-bit integer from buf at the specified offset.
4354d6c458bSopenharmony_ci * @tc.type: FUNC
4364d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
4374d6c458bSopenharmony_ci */
4384d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteUInt32LEAndReadUInt32LETest002, testing::ext::TestSize.Level0)
4394d6c458bSopenharmony_ci{
4404d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
4414d6c458bSopenharmony_ci    buf->Init(5);
4424d6c458bSopenharmony_ci    FillZero(buf, 5);
4434d6c458bSopenharmony_ci    buf->WriteUInt32LE(0x12345678, 1);
4444d6c458bSopenharmony_ci    int32_t res = buf->ReadUInt32LE(0);
4454d6c458bSopenharmony_ci    ASSERT_EQ(res, 0x34567800);
4464d6c458bSopenharmony_ci}
4474d6c458bSopenharmony_ci
4484d6c458bSopenharmony_ci/**
4494d6c458bSopenharmony_ci * @tc.name: WriteUInt32LEAndReadUInt32LETest003
4504d6c458bSopenharmony_ci * @tc.desc: Writes value to buf at the specified offset as little-endian.
4514d6c458bSopenharmony_ci *           The value must be a valid unsigned 32-bit integer.
4524d6c458bSopenharmony_ci *           Reads an unsigned, little-endian 32-bit integer from buf at the specified offset.
4534d6c458bSopenharmony_ci * @tc.type: FUNC
4544d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
4554d6c458bSopenharmony_ci */
4564d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteUInt32LEAndReadUInt32LETest003, testing::ext::TestSize.Level0)
4574d6c458bSopenharmony_ci{
4584d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
4594d6c458bSopenharmony_ci    buf->Init(5);
4604d6c458bSopenharmony_ci    FillZero(buf, 5);
4614d6c458bSopenharmony_ci    buf->WriteUInt32LE(0x12345678, 1);
4624d6c458bSopenharmony_ci    int32_t res = buf->ReadUInt32LE(1);
4634d6c458bSopenharmony_ci    ASSERT_EQ(res, 0x12345678);
4644d6c458bSopenharmony_ci}
4654d6c458bSopenharmony_ci
4664d6c458bSopenharmony_ci/**
4674d6c458bSopenharmony_ci * @tc.name: ReadBytesTest001
4684d6c458bSopenharmony_ci * @tc.desc: Read value from buffer.
4694d6c458bSopenharmony_ci * @tc.type: FUNC
4704d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
4714d6c458bSopenharmony_ci */
4724d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ReadBytesTest001, testing::ext::TestSize.Level0)
4734d6c458bSopenharmony_ci{
4744d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
4754d6c458bSopenharmony_ci    buf->Init(4);
4764d6c458bSopenharmony_ci    FillZero(buf, 4);
4774d6c458bSopenharmony_ci    buf->WriteUInt32BE(0x12345678, 0);
4784d6c458bSopenharmony_ci    uint32_t length = buf->GetLength();
4794d6c458bSopenharmony_ci    uint8_t data[length];
4804d6c458bSopenharmony_ci    buf->ReadBytes(data, 0, length);
4814d6c458bSopenharmony_ci    uint8_t res[4] = {0x12, 0x34, 0x56, 0x78};
4824d6c458bSopenharmony_ci    for (size_t i = 0; i < length; i++) {
4834d6c458bSopenharmony_ci        ASSERT_EQ(data[i], res[i]);
4844d6c458bSopenharmony_ci    }
4854d6c458bSopenharmony_ci}
4864d6c458bSopenharmony_ci
4874d6c458bSopenharmony_ci/**
4884d6c458bSopenharmony_ci * @tc.name: ReadBytesTest002
4894d6c458bSopenharmony_ci * @tc.desc: Read value error when length is zero.
4904d6c458bSopenharmony_ci * @tc.type: FUNC
4914d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
4924d6c458bSopenharmony_ci */
4934d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ReadBytesTest002, testing::ext::TestSize.Level0)
4944d6c458bSopenharmony_ci{
4954d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
4964d6c458bSopenharmony_ci    buf->Init(4);
4974d6c458bSopenharmony_ci    FillZero(buf, 4);
4984d6c458bSopenharmony_ci    buf->WriteUInt32BE(0x12345678, 0);
4994d6c458bSopenharmony_ci    uint32_t length = buf->GetLength();
5004d6c458bSopenharmony_ci    uint8_t data[length];
5014d6c458bSopenharmony_ci    buf->ReadBytes(data, 0, 0);
5024d6c458bSopenharmony_ci    uint8_t res[4] = {0x12, 0x34, 0x56, 0x78};
5034d6c458bSopenharmony_ci    ASSERT_NE(data[0], res[0]);
5044d6c458bSopenharmony_ci}
5054d6c458bSopenharmony_ci
5064d6c458bSopenharmony_ci/**
5074d6c458bSopenharmony_ci * @tc.name: WriteStringTest001
5084d6c458bSopenharmony_ci * @tc.desc: Write string to buffer.
5094d6c458bSopenharmony_ci * @tc.type: FUNC
5104d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
5114d6c458bSopenharmony_ci */
5124d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteStringTest001, testing::ext::TestSize.Level0)
5134d6c458bSopenharmony_ci{
5144d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
5154d6c458bSopenharmony_ci    buf->Init(10);
5164d6c458bSopenharmony_ci    std::string str = "1234567890";
5174d6c458bSopenharmony_ci    unsigned int size = buf->WriteString(str, 10);
5184d6c458bSopenharmony_ci    ASSERT_EQ(size, 10);
5194d6c458bSopenharmony_ci}
5204d6c458bSopenharmony_ci
5214d6c458bSopenharmony_ci/**
5224d6c458bSopenharmony_ci * @tc.name: WriteStringTest002
5234d6c458bSopenharmony_ci * @tc.desc: Write string to buffer.
5244d6c458bSopenharmony_ci * @tc.type: FUNC
5254d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
5264d6c458bSopenharmony_ci */
5274d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteStringTest002, testing::ext::TestSize.Level0)
5284d6c458bSopenharmony_ci{
5294d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
5304d6c458bSopenharmony_ci    buf->Init(9);
5314d6c458bSopenharmony_ci    std::string str = "123456789";
5324d6c458bSopenharmony_ci    unsigned int size = buf->WriteString(str, 9);
5334d6c458bSopenharmony_ci    uint8_t data[size];
5344d6c458bSopenharmony_ci    buf->ReadBytes(data, 0, size);
5354d6c458bSopenharmony_ci    uint8_t value = 49;
5364d6c458bSopenharmony_ci    for (size_t i = 0; i < size; i++) {
5374d6c458bSopenharmony_ci        ASSERT_EQ(data[i], value);
5384d6c458bSopenharmony_ci        value++;
5394d6c458bSopenharmony_ci    }
5404d6c458bSopenharmony_ci}
5414d6c458bSopenharmony_ci
5424d6c458bSopenharmony_ci/**
5434d6c458bSopenharmony_ci * @tc.name: WriteStringTest003
5444d6c458bSopenharmony_ci * @tc.desc: Write string to buffer.
5454d6c458bSopenharmony_ci * @tc.type: FUNC
5464d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
5474d6c458bSopenharmony_ci */
5484d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteStringTest003, testing::ext::TestSize.Level0)
5494d6c458bSopenharmony_ci{
5504d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
5514d6c458bSopenharmony_ci    buf->Init(9);
5524d6c458bSopenharmony_ci    std::string str = "123456789";
5534d6c458bSopenharmony_ci    unsigned int size = buf->WriteString(str, 0, 9);
5544d6c458bSopenharmony_ci    uint8_t data[size];
5554d6c458bSopenharmony_ci    buf->ReadBytes(data, 0, size);
5564d6c458bSopenharmony_ci    uint8_t value = 49;
5574d6c458bSopenharmony_ci    for (size_t i = 0; i < size; i++) {
5584d6c458bSopenharmony_ci        ASSERT_EQ(data[i], value);
5594d6c458bSopenharmony_ci        value++;
5604d6c458bSopenharmony_ci    }
5614d6c458bSopenharmony_ci}
5624d6c458bSopenharmony_ci
5634d6c458bSopenharmony_ci/**
5644d6c458bSopenharmony_ci * @tc.name: WriteStringTest004
5654d6c458bSopenharmony_ci * @tc.desc: Write string to buffer.
5664d6c458bSopenharmony_ci * @tc.type: FUNC
5674d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
5684d6c458bSopenharmony_ci */
5694d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteStringTest004, testing::ext::TestSize.Level0)
5704d6c458bSopenharmony_ci{
5714d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
5724d6c458bSopenharmony_ci    buf->Init(9);
5734d6c458bSopenharmony_ci    std::string str = "123456789";
5744d6c458bSopenharmony_ci    unsigned int size = buf->WriteString(str, 2, 7);
5754d6c458bSopenharmony_ci    uint8_t data[size];
5764d6c458bSopenharmony_ci    buf->ReadBytes(data, 0, size);
5774d6c458bSopenharmony_ci    uint8_t value = 49;
5784d6c458bSopenharmony_ci    for (size_t i = 2; i < size; i++) {
5794d6c458bSopenharmony_ci        ASSERT_EQ(data[i], value);
5804d6c458bSopenharmony_ci        value++;
5814d6c458bSopenharmony_ci    }
5824d6c458bSopenharmony_ci}
5834d6c458bSopenharmony_ci
5844d6c458bSopenharmony_ci/**
5854d6c458bSopenharmony_ci * @tc.name: WriteStringTest005
5864d6c458bSopenharmony_ci * @tc.desc: Write string to buffer.
5874d6c458bSopenharmony_ci * @tc.type: FUNC
5884d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
5894d6c458bSopenharmony_ci */
5904d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteStringTest005, testing::ext::TestSize.Level0)
5914d6c458bSopenharmony_ci{
5924d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
5934d6c458bSopenharmony_ci    buf->Init(9);
5944d6c458bSopenharmony_ci    std::string str = "123456789";
5954d6c458bSopenharmony_ci    unsigned int size = buf->WriteString(str, 0, 9, "utf8");
5964d6c458bSopenharmony_ci    uint8_t data[size];
5974d6c458bSopenharmony_ci    buf->ReadBytes(data, 0, size);
5984d6c458bSopenharmony_ci    uint8_t value = 49;
5994d6c458bSopenharmony_ci    for (size_t i = 0; i < size; i++) {
6004d6c458bSopenharmony_ci        ASSERT_EQ(data[i], value);
6014d6c458bSopenharmony_ci        value++;
6024d6c458bSopenharmony_ci    }
6034d6c458bSopenharmony_ci}
6044d6c458bSopenharmony_ci
6054d6c458bSopenharmony_ci/**
6064d6c458bSopenharmony_ci * @tc.name: WriteStringTest006
6074d6c458bSopenharmony_ci * @tc.desc: Write string to buffer.
6084d6c458bSopenharmony_ci * @tc.type: FUNC
6094d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
6104d6c458bSopenharmony_ci */
6114d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, WriteStringTest006, testing::ext::TestSize.Level0)
6124d6c458bSopenharmony_ci{
6134d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
6144d6c458bSopenharmony_ci    buf->Init(16);
6154d6c458bSopenharmony_ci    FillZero(buf, 16);
6164d6c458bSopenharmony_ci    std::string str = "12345678";
6174d6c458bSopenharmony_ci    unsigned int size = buf->WriteString(str, 0, 16, "utf16le");
6184d6c458bSopenharmony_ci    ASSERT_EQ(size, 16);
6194d6c458bSopenharmony_ci    uint8_t data[size];
6204d6c458bSopenharmony_ci    buf->ReadBytes(data, 0, size);
6214d6c458bSopenharmony_ci    uint8_t value = 49;
6224d6c458bSopenharmony_ci    for (size_t i = 0; i < size; i++) {
6234d6c458bSopenharmony_ci        if (i % 2 == 0) {
6244d6c458bSopenharmony_ci            ASSERT_EQ(data[i], value);
6254d6c458bSopenharmony_ci            value++;
6264d6c458bSopenharmony_ci        } else {
6274d6c458bSopenharmony_ci            ASSERT_EQ(data[i], 0);
6284d6c458bSopenharmony_ci        }
6294d6c458bSopenharmony_ci    }
6304d6c458bSopenharmony_ci}
6314d6c458bSopenharmony_ci
6324d6c458bSopenharmony_ci/**
6334d6c458bSopenharmony_ci * @tc.name: SubBufferTest001
6344d6c458bSopenharmony_ci * @tc.desc: Returns a new Buffer that references the same memory as the original,
6354d6c458bSopenharmony_ci *           but offset and cropped by the start and end indices.
6364d6c458bSopenharmony_ci * @tc.type: FUNC
6374d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
6384d6c458bSopenharmony_ci */
6394d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, SubBufferTest001, testing::ext::TestSize.Level0)
6404d6c458bSopenharmony_ci{
6414d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
6424d6c458bSopenharmony_ci    buf->SubBuffer(nullptr, 0, 10);
6434d6c458bSopenharmony_ci
6444d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf1 = new OHOS::buffer::Buffer();
6454d6c458bSopenharmony_ci    buf1->Init(10);
6464d6c458bSopenharmony_ci    FillZero(buf1, 10);
6474d6c458bSopenharmony_ci    std::string str = "1234567890";
6484d6c458bSopenharmony_ci    buf1->WriteString(str, 0, 10);
6494d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf2 = new OHOS::buffer::Buffer();
6504d6c458bSopenharmony_ci    buf2->SubBuffer(buf1, 0, 10);
6514d6c458bSopenharmony_ci    buf1->ReadBytesForArrayBuffer(NULL, 0);
6524d6c458bSopenharmony_ci
6534d6c458bSopenharmony_ci    ASSERT_EQ(buf2->GetLength(), 10);
6544d6c458bSopenharmony_ci    uint8_t data[11];
6554d6c458bSopenharmony_ci    buf2->ReadBytes(data, 0, 10);
6564d6c458bSopenharmony_ci    data[10] = 0;
6574d6c458bSopenharmony_ci    ASSERT_STREQ(reinterpret_cast<char*>(data), str.c_str());
6584d6c458bSopenharmony_ci}
6594d6c458bSopenharmony_ci
6604d6c458bSopenharmony_ci/**
6614d6c458bSopenharmony_ci * @tc.name: SubBufferTest002
6624d6c458bSopenharmony_ci * @tc.desc: Returns a new Buffer that references the same memory as the original,
6634d6c458bSopenharmony_ci *           but offset and cropped by the start and end indices.
6644d6c458bSopenharmony_ci * @tc.type: FUNC
6654d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
6664d6c458bSopenharmony_ci */
6674d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, SubBufferTest002, testing::ext::TestSize.Level0)
6684d6c458bSopenharmony_ci{
6694d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf1 = new OHOS::buffer::Buffer();
6704d6c458bSopenharmony_ci    buf1->Init(10);
6714d6c458bSopenharmony_ci    FillZero(buf1, 10);
6724d6c458bSopenharmony_ci    std::string str = "1234567890";
6734d6c458bSopenharmony_ci    buf1->WriteString(str, 0, 10);
6744d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf2 = new OHOS::buffer::Buffer();
6754d6c458bSopenharmony_ci    buf2->SubBuffer(buf1, 2, 10);
6764d6c458bSopenharmony_ci    ASSERT_EQ(buf2->GetLength(), 8);
6774d6c458bSopenharmony_ci    uint8_t data[9];
6784d6c458bSopenharmony_ci    buf2->ReadBytes(data, 0, 8);
6794d6c458bSopenharmony_ci    data[8] = 0;
6804d6c458bSopenharmony_ci    ASSERT_STREQ(reinterpret_cast<char*>(data), "34567890");
6814d6c458bSopenharmony_ci}
6824d6c458bSopenharmony_ci
6834d6c458bSopenharmony_ci/**
6844d6c458bSopenharmony_ci * @tc.name: CopyTest001
6854d6c458bSopenharmony_ci * @tc.desc: Copies data from a region of buf to a region in target,
6864d6c458bSopenharmony_ci *           even if the target memory region overlaps with buf.
6874d6c458bSopenharmony_ci * @tc.type: FUNC
6884d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
6894d6c458bSopenharmony_ci */
6904d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, CopyTest001, testing::ext::TestSize.Level0)
6914d6c458bSopenharmony_ci{
6924d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buffer = new OHOS::buffer::Buffer();
6934d6c458bSopenharmony_ci    buffer->Init(20);
6944d6c458bSopenharmony_ci
6954d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
6964d6c458bSopenharmony_ci    buf->Init(20);
6974d6c458bSopenharmony_ci    buf->WriteString("this is a string", 16);
6984d6c458bSopenharmony_ci
6994d6c458bSopenharmony_ci    unsigned int tOffset = 1;
7004d6c458bSopenharmony_ci    unsigned int sOffset = 0;
7014d6c458bSopenharmony_ci    unsigned int tEnd = 16;
7024d6c458bSopenharmony_ci    unsigned int sEnd = 16;
7034d6c458bSopenharmony_ci    buf->Copy(buffer, tOffset, sOffset, sEnd);
7044d6c458bSopenharmony_ci    uint8_t data[20] = {0};
7054d6c458bSopenharmony_ci    buffer->ReadBytes(data, tOffset, tEnd);
7064d6c458bSopenharmony_ci    ASSERT_STREQ(reinterpret_cast<char*>(data), "this is a string");
7074d6c458bSopenharmony_ci}
7084d6c458bSopenharmony_ci
7094d6c458bSopenharmony_ci/**
7104d6c458bSopenharmony_ci * @tc.name: CopyTest002
7114d6c458bSopenharmony_ci * @tc.desc: Copies data with len 0
7124d6c458bSopenharmony_ci * @tc.type: FUNC
7134d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
7144d6c458bSopenharmony_ci */
7154d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, CopyTest002, testing::ext::TestSize.Level0)
7164d6c458bSopenharmony_ci{
7174d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
7184d6c458bSopenharmony_ci    buf->Init(20);
7194d6c458bSopenharmony_ci    std::string value = "YWJjZA";
7204d6c458bSopenharmony_ci    ASSERT_EQ(buf->Copy(buf, 0, 2, 2), 0);
7214d6c458bSopenharmony_ci}
7224d6c458bSopenharmony_ci/**
7234d6c458bSopenharmony_ci * @tc.name: CopyTest003
7244d6c458bSopenharmony_ci * @tc.desc: Buffer Copy.
7254d6c458bSopenharmony_ci * @tc.type: FUNC
7264d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
7274d6c458bSopenharmony_ci */
7284d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, CopyTest003, testing::ext::TestSize.Level0)
7294d6c458bSopenharmony_ci{
7304d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
7314d6c458bSopenharmony_ci    uint8_t data[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
7324d6c458bSopenharmony_ci    buf->Init(data, 0, 10);
7334d6c458bSopenharmony_ci    uint32_t res = buf->Copy(buf, 0, 4, 10);
7344d6c458bSopenharmony_ci    ASSERT_EQ(res, 6);
7354d6c458bSopenharmony_ci    res = buf->Copy(buf, 0, 0, 0);
7364d6c458bSopenharmony_ci    ASSERT_EQ(res, 0);
7374d6c458bSopenharmony_ci    delete buf;
7384d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf1 = new OHOS::buffer::Buffer();
7394d6c458bSopenharmony_ci    res = buf1->Copy(buf1, 0, 4, 10);
7404d6c458bSopenharmony_ci    delete buf1;
7414d6c458bSopenharmony_ci    ASSERT_EQ(res, 0);
7424d6c458bSopenharmony_ci}
7434d6c458bSopenharmony_ci
7444d6c458bSopenharmony_ci/**
7454d6c458bSopenharmony_ci * @tc.name: CompareTest001
7464d6c458bSopenharmony_ci * @tc.desc: Compares buf with target and returns a number indicating whether buf comes before, after,
7474d6c458bSopenharmony_ci *           or is the same as target in sort order. Comparison is based on the actual sequence of bytes in each Buffer
7484d6c458bSopenharmony_ci * @tc.type: FUNC
7494d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
7504d6c458bSopenharmony_ci */
7514d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, CompareTest001, testing::ext::TestSize.Level0)
7524d6c458bSopenharmony_ci{
7534d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buffer = new OHOS::buffer::Buffer();
7544d6c458bSopenharmony_ci    buffer->Init(20);
7554d6c458bSopenharmony_ci    buffer->WriteString("this is a string", 16);
7564d6c458bSopenharmony_ci
7574d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
7584d6c458bSopenharmony_ci    buf->Init(20);
7594d6c458bSopenharmony_ci    buf->WriteString("this is a string", 1, 16);
7604d6c458bSopenharmony_ci
7614d6c458bSopenharmony_ci    int result = buf->Compare(buffer, 0, 1, 16);
7624d6c458bSopenharmony_ci    ASSERT_EQ(result, 0);
7634d6c458bSopenharmony_ci}
7644d6c458bSopenharmony_ci
7654d6c458bSopenharmony_ci/**
7664d6c458bSopenharmony_ci * @tc.name: IndexOfTest001
7674d6c458bSopenharmony_ci * @tc.desc: The index of the first occurrence of value in buf.
7684d6c458bSopenharmony_ci * @tc.type: FUNC
7694d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
7704d6c458bSopenharmony_ci */
7714d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IndexOfTest001, testing::ext::TestSize.Level0)
7724d6c458bSopenharmony_ci{
7734d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
7744d6c458bSopenharmony_ci    buf->Init(20);
7754d6c458bSopenharmony_ci    buf->WriteString("this is a string", 16);
7764d6c458bSopenharmony_ci    uint64_t resultIndex = 0;
7774d6c458bSopenharmony_ci    int index = buf->IndexOf("is", 0, 2, resultIndex);
7784d6c458bSopenharmony_ci    ASSERT_EQ(index, -2);
7794d6c458bSopenharmony_ci    ASSERT_EQ(resultIndex, 2);
7804d6c458bSopenharmony_ci}
7814d6c458bSopenharmony_ci
7824d6c458bSopenharmony_ci/**
7834d6c458bSopenharmony_ci * @tc.name: IndexOfTest002
7844d6c458bSopenharmony_ci * @tc.desc: The index of the first occurrence of value in buf.
7854d6c458bSopenharmony_ci * @tc.type: FUNC
7864d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
7874d6c458bSopenharmony_ci */
7884d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IndexOfTest002, testing::ext::TestSize.Level0)
7894d6c458bSopenharmony_ci{
7904d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
7914d6c458bSopenharmony_ci    buf->Init(7);
7924d6c458bSopenharmony_ci    buf->WriteString("3363333", 7);
7934d6c458bSopenharmony_ci    uint64_t resultIndex = 0;
7944d6c458bSopenharmony_ci    int index = buf->IndexOf("36", 0, 2, resultIndex);
7954d6c458bSopenharmony_ci    ASSERT_EQ(index, -2);
7964d6c458bSopenharmony_ci    ASSERT_EQ(resultIndex, 1);
7974d6c458bSopenharmony_ci}
7984d6c458bSopenharmony_ci
7994d6c458bSopenharmony_ci/**
8004d6c458bSopenharmony_ci * @tc.name: IndexOfTest003
8014d6c458bSopenharmony_ci * @tc.desc: The index of the first occurrence of value in buf.
8024d6c458bSopenharmony_ci * @tc.type: FUNC
8034d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
8044d6c458bSopenharmony_ci */
8054d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IndexOfTest003, testing::ext::TestSize.Level0)
8064d6c458bSopenharmony_ci{
8074d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
8084d6c458bSopenharmony_ci    buf->Init(12);
8094d6c458bSopenharmony_ci    buf->WriteString("322362326233", 12);
8104d6c458bSopenharmony_ci    uint64_t resultIndex = 0;
8114d6c458bSopenharmony_ci    int index = buf->IndexOf("2623", 0, 4, resultIndex);
8124d6c458bSopenharmony_ci    ASSERT_EQ(index, -2);
8134d6c458bSopenharmony_ci    ASSERT_EQ(resultIndex, 7);
8144d6c458bSopenharmony_ci}
8154d6c458bSopenharmony_ci
8164d6c458bSopenharmony_ci/**
8174d6c458bSopenharmony_ci * @tc.name: IndexOfTest004
8184d6c458bSopenharmony_ci * @tc.desc: Data is not in buf.
8194d6c458bSopenharmony_ci * @tc.type: FUNC
8204d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
8214d6c458bSopenharmony_ci */
8224d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, IndexOfTest004, testing::ext::TestSize.Level0)
8234d6c458bSopenharmony_ci{
8244d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
8254d6c458bSopenharmony_ci    buf->Init(12);
8264d6c458bSopenharmony_ci    buf->WriteString("322362326233", 12);
8274d6c458bSopenharmony_ci    uint64_t resultIndex = 0;
8284d6c458bSopenharmony_ci    int index = buf->IndexOf("99", 0, 2, resultIndex);
8294d6c458bSopenharmony_ci    ASSERT_EQ(index, -1);
8304d6c458bSopenharmony_ci}
8314d6c458bSopenharmony_ci
8324d6c458bSopenharmony_ci/**
8334d6c458bSopenharmony_ci * @tc.name: LastIndexOfTest001
8344d6c458bSopenharmony_ci * @tc.desc: The index of the last occurrence of value in buf.
8354d6c458bSopenharmony_ci * @tc.type: FUNC
8364d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
8374d6c458bSopenharmony_ci */
8384d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, LastIndexOfTest001, testing::ext::TestSize.Level0)
8394d6c458bSopenharmony_ci{
8404d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
8414d6c458bSopenharmony_ci    buf->Init(20);
8424d6c458bSopenharmony_ci    buf->WriteString("this is a string", 16);
8434d6c458bSopenharmony_ci    int index = buf->LastIndexOf("is", 0, 2);
8444d6c458bSopenharmony_ci    ASSERT_EQ(index, 5);
8454d6c458bSopenharmony_ci}
8464d6c458bSopenharmony_ci
8474d6c458bSopenharmony_ci/**
8484d6c458bSopenharmony_ci * @tc.name: LastIndexOfTest002
8494d6c458bSopenharmony_ci * @tc.desc: The index of the last occurrence of value in buf.
8504d6c458bSopenharmony_ci * @tc.type: FUNC
8514d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
8524d6c458bSopenharmony_ci */
8534d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, LastIndexOfTest002, testing::ext::TestSize.Level0)
8544d6c458bSopenharmony_ci{
8554d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
8564d6c458bSopenharmony_ci    buf->Init(7);
8574d6c458bSopenharmony_ci    buf->WriteString("3363333", 7);
8584d6c458bSopenharmony_ci    int index = buf->LastIndexOf("36", 0, 2);
8594d6c458bSopenharmony_ci    ASSERT_EQ(index, 1);
8604d6c458bSopenharmony_ci}
8614d6c458bSopenharmony_ci
8624d6c458bSopenharmony_ci/**
8634d6c458bSopenharmony_ci * @tc.name: LastIndexOfTest003
8644d6c458bSopenharmony_ci * @tc.desc: The index of the last occurrence of value in buf.
8654d6c458bSopenharmony_ci * @tc.type: FUNC
8664d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
8674d6c458bSopenharmony_ci */
8684d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, LastIndexOfTest003, testing::ext::TestSize.Level0)
8694d6c458bSopenharmony_ci{
8704d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
8714d6c458bSopenharmony_ci    buf->Init(11);
8724d6c458bSopenharmony_ci    buf->WriteString("32236326233", 11);
8734d6c458bSopenharmony_ci    int index = buf->LastIndexOf("236", 0, 3);
8744d6c458bSopenharmony_ci    ASSERT_EQ(index, 2);
8754d6c458bSopenharmony_ci}
8764d6c458bSopenharmony_ci
8774d6c458bSopenharmony_ci/**
8784d6c458bSopenharmony_ci * @tc.name: LastIndexOfTest004
8794d6c458bSopenharmony_ci * @tc.desc: The index of the last occurrence of value in buf.
8804d6c458bSopenharmony_ci * @tc.type: FUNC
8814d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
8824d6c458bSopenharmony_ci */
8834d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, LastIndexOfTest004, testing::ext::TestSize.Level0)
8844d6c458bSopenharmony_ci{
8854d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
8864d6c458bSopenharmony_ci    buf->Init(12);
8874d6c458bSopenharmony_ci    buf->WriteString("322362326233", 12);
8884d6c458bSopenharmony_ci    int index = buf->LastIndexOf("2236", 0, 4);
8894d6c458bSopenharmony_ci    ASSERT_EQ(index, 1);
8904d6c458bSopenharmony_ci}
8914d6c458bSopenharmony_ci
8924d6c458bSopenharmony_ci/**
8934d6c458bSopenharmony_ci * @tc.name: LastIndexOfTest005
8944d6c458bSopenharmony_ci * @tc.desc: The index of the last occurrence of value in buf.
8954d6c458bSopenharmony_ci * @tc.type: FUNC
8964d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
8974d6c458bSopenharmony_ci */
8984d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, LastIndexOfTest005, testing::ext::TestSize.Level0)
8994d6c458bSopenharmony_ci{
9004d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
9014d6c458bSopenharmony_ci    buf->Init(12);
9024d6c458bSopenharmony_ci    buf->WriteString("322362326233", 12);
9034d6c458bSopenharmony_ci    int index = buf->LastIndexOf("136", 0, 3);
9044d6c458bSopenharmony_ci    ASSERT_EQ(index, -1);
9054d6c458bSopenharmony_ci}
9064d6c458bSopenharmony_ci
9074d6c458bSopenharmony_ci
9084d6c458bSopenharmony_ci/**
9094d6c458bSopenharmony_ci * @tc.name: ToBase64Test001
9104d6c458bSopenharmony_ci * @tc.desc: Convert the contents of the buffer into a string in Base64 format.
9114d6c458bSopenharmony_ci * @tc.type: FUNC
9124d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
9134d6c458bSopenharmony_ci */
9144d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ToBase64Test001, testing::ext::TestSize.Level0)
9154d6c458bSopenharmony_ci{
9164d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
9174d6c458bSopenharmony_ci    buf->Init(20);
9184d6c458bSopenharmony_ci    buf->WriteString("this is a string", 16);
9194d6c458bSopenharmony_ci    std::string base64Str = buf->ToBase64(0, 16);
9204d6c458bSopenharmony_ci    ASSERT_STREQ(base64Str.c_str(), "dGhpcyBpcyBhIHN0cmluZw==");
9214d6c458bSopenharmony_ci}
9224d6c458bSopenharmony_ci
9234d6c458bSopenharmony_ci/**
9244d6c458bSopenharmony_ci * @tc.name: ToBase64Test002
9254d6c458bSopenharmony_ci * @tc.desc: Convert the contents of the buffer into a string in Base64 format.
9264d6c458bSopenharmony_ci * @tc.type: FUNC
9274d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
9284d6c458bSopenharmony_ci */
9294d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ToBase64Test002, testing::ext::TestSize.Level0)
9304d6c458bSopenharmony_ci{
9314d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
9324d6c458bSopenharmony_ci    buf->Init(30);
9334d6c458bSopenharmony_ci    buf->WriteString("this is a big string", 20);
9344d6c458bSopenharmony_ci    std::string base64Str = buf->ToBase64(0, 20);
9354d6c458bSopenharmony_ci    ASSERT_STREQ(base64Str.c_str(), "dGhpcyBpcyBhIGJpZyBzdHJpbmc=");
9364d6c458bSopenharmony_ci}
9374d6c458bSopenharmony_ci
9384d6c458bSopenharmony_ci/**
9394d6c458bSopenharmony_ci * @tc.name: ToBase64Test003
9404d6c458bSopenharmony_ci * @tc.desc: Convert to base64 with length 0.
9414d6c458bSopenharmony_ci * @tc.type: FUNC
9424d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
9434d6c458bSopenharmony_ci */
9444d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ToBase64Test003, testing::ext::TestSize.Level0)
9454d6c458bSopenharmony_ci{
9464d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
9474d6c458bSopenharmony_ci    buf->Init(30);
9484d6c458bSopenharmony_ci    buf->WriteString("this is a big string", 20);
9494d6c458bSopenharmony_ci    std::string base64Str = buf->ToBase64(0, 0);
9504d6c458bSopenharmony_ci    ASSERT_STREQ(base64Str.c_str(), "");
9514d6c458bSopenharmony_ci}
9524d6c458bSopenharmony_ci
9534d6c458bSopenharmony_ci/**
9544d6c458bSopenharmony_ci * @tc.name: ToBase64UrlTest001
9554d6c458bSopenharmony_ci * @tc.desc: Convert the contents of the buffer into a string in Base64 format.
9564d6c458bSopenharmony_ci * @tc.type: FUNC
9574d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
9584d6c458bSopenharmony_ci */
9594d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ToBase64UrlTest001, testing::ext::TestSize.Level0)
9604d6c458bSopenharmony_ci{
9614d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
9624d6c458bSopenharmony_ci    buf->Init(20);
9634d6c458bSopenharmony_ci    buf->WriteString("this is a string", 16);
9644d6c458bSopenharmony_ci    std::string base64Str = buf->ToBase64Url(0, 16);
9654d6c458bSopenharmony_ci    std::string  stra = OHOS::buffer::Base64Encode(nullptr, 10, OHOS::buffer::BASE64URL);
9664d6c458bSopenharmony_ci    ASSERT_STREQ(base64Str.c_str(), "dGhpcyBpcyBhIHN0cmluZw");
9674d6c458bSopenharmony_ci}
9684d6c458bSopenharmony_ci
9694d6c458bSopenharmony_ci/**
9704d6c458bSopenharmony_ci * @tc.name: GetEncodingTypeTest001
9714d6c458bSopenharmony_ci * @tc.desc: Get encoding type.
9724d6c458bSopenharmony_ci * @tc.type: FUNC
9734d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
9744d6c458bSopenharmony_ci */
9754d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetEncodingTypeTest001, testing::ext::TestSize.Level0)
9764d6c458bSopenharmony_ci{
9774d6c458bSopenharmony_ci    std::map <std::string, int> _typeMap =
9784d6c458bSopenharmony_ci    {
9794d6c458bSopenharmony_ci        {"hex", OHOS::buffer::HEX},
9804d6c458bSopenharmony_ci        {"base64url", OHOS::buffer::BASE64URL},
9814d6c458bSopenharmony_ci        {"ascii", OHOS::buffer::ASCII},
9824d6c458bSopenharmony_ci        {"base64", OHOS::buffer::BASE64},
9834d6c458bSopenharmony_ci        {"latin1", OHOS::buffer::LATIN1},
9844d6c458bSopenharmony_ci        {"binary", OHOS::buffer::BINARY},
9854d6c458bSopenharmony_ci        {"utf16le", OHOS::buffer::UTF16LE},
9864d6c458bSopenharmony_ci        {"utf8", OHOS::buffer::UTF8},
9874d6c458bSopenharmony_ci    };
9884d6c458bSopenharmony_ci
9894d6c458bSopenharmony_ci    for (auto item =_typeMap.begin(); item != _typeMap.end(); item++)
9904d6c458bSopenharmony_ci    {
9914d6c458bSopenharmony_ci        std::string type = item->first;
9924d6c458bSopenharmony_ci        OHOS::buffer::EncodingType et = OHOS::buffer::Buffer::GetEncodingType(type);
9934d6c458bSopenharmony_ci        ASSERT_EQ(et, item->second);
9944d6c458bSopenharmony_ci    }
9954d6c458bSopenharmony_ci}
9964d6c458bSopenharmony_ci
9974d6c458bSopenharmony_ci/**
9984d6c458bSopenharmony_ci * @tc.name: SetArrayTest001
9994d6c458bSopenharmony_ci * @tc.desc: Put the contents of the array into the buffer.
10004d6c458bSopenharmony_ci * @tc.type: FUNC
10014d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
10024d6c458bSopenharmony_ci */
10034d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, SetArrayTest001, testing::ext::TestSize.Level0)
10044d6c458bSopenharmony_ci{
10054d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buffer = new OHOS::buffer::Buffer();
10064d6c458bSopenharmony_ci    buffer->Init(20);
10074d6c458bSopenharmony_ci    std::vector<uint8_t> numbers;
10084d6c458bSopenharmony_ci    for (int i = 0; i < 10; i++) {
10094d6c458bSopenharmony_ci        numbers.push_back(i);
10104d6c458bSopenharmony_ci    }
10114d6c458bSopenharmony_ci    buffer->SetArray(numbers);
10124d6c458bSopenharmony_ci    unsigned int offset = 0;
10134d6c458bSopenharmony_ci    unsigned int end = 10;
10144d6c458bSopenharmony_ci    uint8_t data[20] = {0};
10154d6c458bSopenharmony_ci    buffer->ReadBytes(data, offset, end);
10164d6c458bSopenharmony_ci    for (int j = 0; j < 10; j++) {
10174d6c458bSopenharmony_ci        ASSERT_EQ(data[j], j);
10184d6c458bSopenharmony_ci    }
10194d6c458bSopenharmony_ci}
10204d6c458bSopenharmony_ci
10214d6c458bSopenharmony_ci/**
10224d6c458bSopenharmony_ci * @tc.name: FillBufferTest001
10234d6c458bSopenharmony_ci * @tc.desc: Fill the buffer with the buffer object
10244d6c458bSopenharmony_ci * @tc.type: FUNC
10254d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
10264d6c458bSopenharmony_ci */
10274d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, FillBufferTest001, testing::ext::TestSize.Level0)
10284d6c458bSopenharmony_ci{
10294d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buffer = new OHOS::buffer::Buffer();
10304d6c458bSopenharmony_ci    buffer->Init(10);
10314d6c458bSopenharmony_ci    std::vector<uint8_t> numbers;
10324d6c458bSopenharmony_ci    for (int i = 0; i < 10; i++) {
10334d6c458bSopenharmony_ci        numbers.push_back(i);
10344d6c458bSopenharmony_ci    }
10354d6c458bSopenharmony_ci    buffer->SetArray(numbers);
10364d6c458bSopenharmony_ci    unsigned int offset = 0;
10374d6c458bSopenharmony_ci    unsigned int end = 10;
10384d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
10394d6c458bSopenharmony_ci    buf->Init(20);
10404d6c458bSopenharmony_ci    buf->FillBuffer(buffer, offset, end);
10414d6c458bSopenharmony_ci    uint8_t data[20] = {0};
10424d6c458bSopenharmony_ci    buf->ReadBytes(data, offset, end);
10434d6c458bSopenharmony_ci    for (int j = 0; j < 10; j++) {
10444d6c458bSopenharmony_ci        ASSERT_EQ(data[j], j);
10454d6c458bSopenharmony_ci    }
10464d6c458bSopenharmony_ci}
10474d6c458bSopenharmony_ci
10484d6c458bSopenharmony_ci/**
10494d6c458bSopenharmony_ci * @tc.name: FillNumberTest001
10504d6c458bSopenharmony_ci * @tc.desc: Fill the buffer with the number
10514d6c458bSopenharmony_ci * @tc.type: FUNC
10524d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
10534d6c458bSopenharmony_ci */
10544d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, FillNumberTest001, testing::ext::TestSize.Level0)
10554d6c458bSopenharmony_ci{
10564d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
10574d6c458bSopenharmony_ci    buf->Init(20);
10584d6c458bSopenharmony_ci    std::vector<uint8_t> numbers;
10594d6c458bSopenharmony_ci    for (int i = 0; i < 10; i++) {
10604d6c458bSopenharmony_ci        numbers.push_back(i);
10614d6c458bSopenharmony_ci    }
10624d6c458bSopenharmony_ci    unsigned int offset = 0;
10634d6c458bSopenharmony_ci    unsigned int end = 10;
10644d6c458bSopenharmony_ci    buf->FillNumber(numbers, offset, end);
10654d6c458bSopenharmony_ci    uint8_t data[20] = {0};
10664d6c458bSopenharmony_ci    buf->ReadBytes(data, offset, end);
10674d6c458bSopenharmony_ci    for (int j = 0; j < 10; j++) {
10684d6c458bSopenharmony_ci        ASSERT_EQ(data[j], j);
10694d6c458bSopenharmony_ci    }
10704d6c458bSopenharmony_ci}
10714d6c458bSopenharmony_ci
10724d6c458bSopenharmony_ci/**
10734d6c458bSopenharmony_ci * @tc.name: FillStringTest001
10744d6c458bSopenharmony_ci * @tc.desc: Fill the buffer with the string
10754d6c458bSopenharmony_ci * @tc.type: FUNC
10764d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
10774d6c458bSopenharmony_ci */
10784d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, FillStringTest001, testing::ext::TestSize.Level0)
10794d6c458bSopenharmony_ci{
10804d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
10814d6c458bSopenharmony_ci    buf->Init(20);
10824d6c458bSopenharmony_ci    std::string value = "abcd";
10834d6c458bSopenharmony_ci    std::string encoding = "ascii";
10844d6c458bSopenharmony_ci    buf->FillString(value, 1, 1, encoding);
10854d6c458bSopenharmony_ci
10864d6c458bSopenharmony_ci    unsigned int offset = 0;
10874d6c458bSopenharmony_ci    unsigned int end = 10;
10884d6c458bSopenharmony_ci    buf->FillString(value, offset, end, encoding);
10894d6c458bSopenharmony_ci    uint8_t data[20] = {0};
10904d6c458bSopenharmony_ci    buf->ReadBytes(data, offset, end);
10914d6c458bSopenharmony_ci    ASSERT_STREQ(reinterpret_cast<char*>(data), "abcdabcdab");
10924d6c458bSopenharmony_ci}
10934d6c458bSopenharmony_ci
10944d6c458bSopenharmony_ci/**
10954d6c458bSopenharmony_ci * @tc.name: FillStringTest002
10964d6c458bSopenharmony_ci * @tc.desc: Fill the buffer with the string
10974d6c458bSopenharmony_ci * @tc.type: FUNC
10984d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
10994d6c458bSopenharmony_ci */
11004d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, FillStringTest002, testing::ext::TestSize.Level0)
11014d6c458bSopenharmony_ci{
11024d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
11034d6c458bSopenharmony_ci    buf->Init(20);
11044d6c458bSopenharmony_ci    std::string value = "扡摣";
11054d6c458bSopenharmony_ci    unsigned int offset = 0;
11064d6c458bSopenharmony_ci    unsigned int end = 10;
11074d6c458bSopenharmony_ci    std::string encoding = "utf16le";
11084d6c458bSopenharmony_ci    buf->FillString(value, offset, end, encoding);
11094d6c458bSopenharmony_ci    uint8_t data[20] = {0};
11104d6c458bSopenharmony_ci    buf->ReadBytes(data, offset, end);
11114d6c458bSopenharmony_ci    ASSERT_STREQ(reinterpret_cast<char*>(data), "abcdabcdab");
11124d6c458bSopenharmony_ci}
11134d6c458bSopenharmony_ci
11144d6c458bSopenharmony_ci/**
11154d6c458bSopenharmony_ci * @tc.name: FillStringTest003
11164d6c458bSopenharmony_ci * @tc.desc: Fill the buffer with the string
11174d6c458bSopenharmony_ci * @tc.type: FUNC
11184d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
11194d6c458bSopenharmony_ci */
11204d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, FillStringTest003, testing::ext::TestSize.Level0)
11214d6c458bSopenharmony_ci{
11224d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
11234d6c458bSopenharmony_ci    buf->Init(20);
11244d6c458bSopenharmony_ci    std::string value = "YWJjZA";
11254d6c458bSopenharmony_ci    unsigned int offset = 0;
11264d6c458bSopenharmony_ci    unsigned int end = 10;
11274d6c458bSopenharmony_ci    std::string encoding = "base64";
11284d6c458bSopenharmony_ci    buf->FillString(value, offset, end, encoding);
11294d6c458bSopenharmony_ci    uint8_t data[20] = {0};
11304d6c458bSopenharmony_ci    buf->ReadBytes(data, offset, end);
11314d6c458bSopenharmony_ci    ASSERT_STREQ(reinterpret_cast<char*>(data), "abcdabcdab");
11324d6c458bSopenharmony_ci}
11334d6c458bSopenharmony_ci
11344d6c458bSopenharmony_ci/**
11354d6c458bSopenharmony_ci * @tc.name: BlobConstructorTest001
11364d6c458bSopenharmony_ci * @tc.desc: Blob Constructor
11374d6c458bSopenharmony_ci * @tc.type: FUNC
11384d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
11394d6c458bSopenharmony_ci */
11404d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, BlobConstructorTest001, testing::ext::TestSize.Level0)
11414d6c458bSopenharmony_ci{
11424d6c458bSopenharmony_ci    OHOS::buffer::Blob *blob = new OHOS::buffer::Blob();
11434d6c458bSopenharmony_ci    uint8_t data[4] = {1, 2, 3, 4};
11444d6c458bSopenharmony_ci    blob->Init(data, 4);
11454d6c458bSopenharmony_ci    ASSERT_EQ(blob->GetLength(), 4);
11464d6c458bSopenharmony_ci}
11474d6c458bSopenharmony_ci
11484d6c458bSopenharmony_ci/**
11494d6c458bSopenharmony_ci * @tc.name: BlobConstructorTest002
11504d6c458bSopenharmony_ci * @tc.desc: Blob Constructor
11514d6c458bSopenharmony_ci * @tc.type: FUNC
11524d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
11534d6c458bSopenharmony_ci */
11544d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, BlobConstructorTest002, testing::ext::TestSize.Level0)
11554d6c458bSopenharmony_ci{
11564d6c458bSopenharmony_ci    OHOS::buffer::Blob *blob = new OHOS::buffer::Blob();
11574d6c458bSopenharmony_ci    uint8_t data[4] = {1, 2, 3, 4};
11584d6c458bSopenharmony_ci    blob->Init(data, 4);
11594d6c458bSopenharmony_ci
11604d6c458bSopenharmony_ci    OHOS::buffer::Blob *blob2 = new OHOS::buffer::Blob();
11614d6c458bSopenharmony_ci    blob2->Init(blob, 0);
11624d6c458bSopenharmony_ci
11634d6c458bSopenharmony_ci    ASSERT_EQ(blob2->GetLength(), 4);
11644d6c458bSopenharmony_ci}
11654d6c458bSopenharmony_ci
11664d6c458bSopenharmony_ci/**
11674d6c458bSopenharmony_ci * @tc.name: BlobConstructorTest003
11684d6c458bSopenharmony_ci * @tc.desc: Blob Constructor
11694d6c458bSopenharmony_ci * @tc.type: FUNC
11704d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
11714d6c458bSopenharmony_ci */
11724d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, BlobConstructorTest003, testing::ext::TestSize.Level0)
11734d6c458bSopenharmony_ci{
11744d6c458bSopenharmony_ci    OHOS::buffer::Blob *blob = new OHOS::buffer::Blob();
11754d6c458bSopenharmony_ci    uint8_t data[4] = {1, 2, 3, 4};
11764d6c458bSopenharmony_ci    blob->Init(data, 4);
11774d6c458bSopenharmony_ci
11784d6c458bSopenharmony_ci    OHOS::buffer::Blob *blob2 = new OHOS::buffer::Blob();
11794d6c458bSopenharmony_ci    blob2->Init(blob, 1, 4);
11804d6c458bSopenharmony_ci
11814d6c458bSopenharmony_ci    ASSERT_EQ(blob2->GetLength(), 3);
11824d6c458bSopenharmony_ci}
11834d6c458bSopenharmony_ci
11844d6c458bSopenharmony_ci/**
11854d6c458bSopenharmony_ci * @tc.name: BlobConstructorTest004
11864d6c458bSopenharmony_ci * @tc.desc: Blob Constructor
11874d6c458bSopenharmony_ci * @tc.type: FUNC
11884d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
11894d6c458bSopenharmony_ci */
11904d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, BlobConstructorTest004, testing::ext::TestSize.Level0)
11914d6c458bSopenharmony_ci{
11924d6c458bSopenharmony_ci    OHOS::buffer::Blob *blob = new OHOS::buffer::Blob();
11934d6c458bSopenharmony_ci    uint8_t data[1] = {1};
11944d6c458bSopenharmony_ci    OHOS::buffer::Blob *blob1 = new OHOS::buffer::Blob();
11954d6c458bSopenharmony_ci    blob->Init(blob1, 1, 0);
11964d6c458bSopenharmony_ci    blob->Init(blob1, 1, -1);
11974d6c458bSopenharmony_ci    blob->Init(blob1, -1, 1);
11984d6c458bSopenharmony_ci    blob->Init(nullptr, 0, 1);
11994d6c458bSopenharmony_ci    blob->Init(data, 1);
12004d6c458bSopenharmony_ci    ASSERT_EQ(blob->GetLength(), 1);
12014d6c458bSopenharmony_ci    delete blob;
12024d6c458bSopenharmony_ci    blob = nullptr;
12034d6c458bSopenharmony_ci    delete blob1;
12044d6c458bSopenharmony_ci    blob1 = nullptr;
12054d6c458bSopenharmony_ci}
12064d6c458bSopenharmony_ci
12074d6c458bSopenharmony_ci/**
12084d6c458bSopenharmony_ci * @tc.name: BlobDestructorTest001
12094d6c458bSopenharmony_ci * @tc.desc: Blob Destructor.
12104d6c458bSopenharmony_ci * @tc.type: FUNC
12114d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
12124d6c458bSopenharmony_ci */
12134d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, BlobDestructorTest001, testing::ext::TestSize.Level0)
12144d6c458bSopenharmony_ci{
12154d6c458bSopenharmony_ci    OHOS::buffer::Blob *blob = new OHOS::buffer::Blob();
12164d6c458bSopenharmony_ci    uint8_t data[4] = {1, 2, 3, 4};
12174d6c458bSopenharmony_ci    blob->Init(data, 4);
12184d6c458bSopenharmony_ci    unsigned int len = blob->GetLength();
12194d6c458bSopenharmony_ci    ASSERT_EQ(len, 4);
12204d6c458bSopenharmony_ci    delete blob;
12214d6c458bSopenharmony_ci    blob = nullptr;
12224d6c458bSopenharmony_ci}
12234d6c458bSopenharmony_ci
12244d6c458bSopenharmony_ci/**
12254d6c458bSopenharmony_ci * @tc.name: BlobGetByteTest001
12264d6c458bSopenharmony_ci * @tc.desc: Get a byte in blob
12274d6c458bSopenharmony_ci * @tc.type: FUNC
12284d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
12294d6c458bSopenharmony_ci */
12304d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, BlobGetByteTest001, testing::ext::TestSize.Level0)
12314d6c458bSopenharmony_ci{
12324d6c458bSopenharmony_ci    OHOS::buffer::Blob *blob = new OHOS::buffer::Blob();
12334d6c458bSopenharmony_ci    uint8_t data[4] = {1, 2, 3, 4};
12344d6c458bSopenharmony_ci    blob->Init(data, 4);
12354d6c458bSopenharmony_ci
12364d6c458bSopenharmony_ci    uint8_t byte = blob->GetByte(2);
12374d6c458bSopenharmony_ci
12384d6c458bSopenharmony_ci    ASSERT_EQ(byte, 3);
12394d6c458bSopenharmony_ci}
12404d6c458bSopenharmony_ci
12414d6c458bSopenharmony_ci/**
12424d6c458bSopenharmony_ci * @tc.name: BlobGetRawTest001
12434d6c458bSopenharmony_ci * @tc.desc: Get the raw in blob
12444d6c458bSopenharmony_ci * @tc.type: FUNC
12454d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
12464d6c458bSopenharmony_ci */
12474d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, BlobGetRawTest001, testing::ext::TestSize.Level0)
12484d6c458bSopenharmony_ci{
12494d6c458bSopenharmony_ci    OHOS::buffer::Blob *blob = new OHOS::buffer::Blob();
12504d6c458bSopenharmony_ci    uint8_t data[4] = {1, 2, 3, 4};
12514d6c458bSopenharmony_ci    blob->Init(data, 4);
12524d6c458bSopenharmony_ci
12534d6c458bSopenharmony_ci    uint8_t *raw = blob->GetRaw();
12544d6c458bSopenharmony_ci
12554d6c458bSopenharmony_ci    ASSERT_TRUE(raw != nullptr);
12564d6c458bSopenharmony_ci}
12574d6c458bSopenharmony_ci
12584d6c458bSopenharmony_ci/**
12594d6c458bSopenharmony_ci * @tc.name: BlobGetLengthTest001
12604d6c458bSopenharmony_ci * @tc.desc: Get the length in blob
12614d6c458bSopenharmony_ci * @tc.type: FUNC
12624d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
12634d6c458bSopenharmony_ci */
12644d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, BlobGetLengthTest001, testing::ext::TestSize.Level0)
12654d6c458bSopenharmony_ci{
12664d6c458bSopenharmony_ci    OHOS::buffer::Blob *blob = new OHOS::buffer::Blob();
12674d6c458bSopenharmony_ci    uint8_t data[4] = {1, 2, 3, 4};
12684d6c458bSopenharmony_ci    blob->Init(data, 4);
12694d6c458bSopenharmony_ci
12704d6c458bSopenharmony_ci    unsigned int len = blob->GetLength();
12714d6c458bSopenharmony_ci
12724d6c458bSopenharmony_ci    ASSERT_EQ(len, 4);
12734d6c458bSopenharmony_ci}
12744d6c458bSopenharmony_ci
12754d6c458bSopenharmony_ci/**
12764d6c458bSopenharmony_ci * @tc.name: BlobGetLengthTest001
12774d6c458bSopenharmony_ci * @tc.desc: Read blob object bytes
12784d6c458bSopenharmony_ci * @tc.type: FUNC
12794d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
12804d6c458bSopenharmony_ci */
12814d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, BlobReadBytesTest001, testing::ext::TestSize.Level0)
12824d6c458bSopenharmony_ci{
12834d6c458bSopenharmony_ci    OHOS::buffer::Blob *blob = new OHOS::buffer::Blob();
12844d6c458bSopenharmony_ci    uint8_t data[10] = {0};
12854d6c458bSopenharmony_ci    for (int i = 0; i < 10; i++) {
12864d6c458bSopenharmony_ci        data[i] = i;
12874d6c458bSopenharmony_ci    }
12884d6c458bSopenharmony_ci    blob->Init(data, 10);
12894d6c458bSopenharmony_ci
12904d6c458bSopenharmony_ci    uint8_t dat[10] = {0};
12914d6c458bSopenharmony_ci    blob->ReadBytes(dat, 10);
12924d6c458bSopenharmony_ci
12934d6c458bSopenharmony_ci    for (int i = 0; i < 10; i++) {
12944d6c458bSopenharmony_ci        ASSERT_EQ(dat[i], i);
12954d6c458bSopenharmony_ci    }
12964d6c458bSopenharmony_ci}
12974d6c458bSopenharmony_ci
12984d6c458bSopenharmony_ci/**
12994d6c458bSopenharmony_ci * @tc.name: Utf8ToUtf16BETest001
13004d6c458bSopenharmony_ci * @tc.desc: convert utf8 bytes to utf16 bytes
13014d6c458bSopenharmony_ci * @tc.type: FUNC
13024d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
13034d6c458bSopenharmony_ci */
13044d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, Utf8ToUtf16BETest001, testing::ext::TestSize.Level0)
13054d6c458bSopenharmony_ci{
13064d6c458bSopenharmony_ci    std::string str8 = "";
13074d6c458bSopenharmony_ci    // one byte
13084d6c458bSopenharmony_ci    str8.append(1, 0x41);
13094d6c458bSopenharmony_ci    // two bytes
13104d6c458bSopenharmony_ci    str8.append(1, 0xC3);
13114d6c458bSopenharmony_ci    str8.append(1, 0x84);
13124d6c458bSopenharmony_ci    // three bytes
13134d6c458bSopenharmony_ci    str8.append(1, 0xE5);
13144d6c458bSopenharmony_ci    str8.append(1, 0x88);
13154d6c458bSopenharmony_ci    str8.append(1, 0x98);
13164d6c458bSopenharmony_ci    // four bytes
13174d6c458bSopenharmony_ci    str8.append(1, 0xf0);
13184d6c458bSopenharmony_ci    str8.append(1, 0x9f);
13194d6c458bSopenharmony_ci    str8.append(1, 0x90);
13204d6c458bSopenharmony_ci    str8.append(1, 0x85);
13214d6c458bSopenharmony_ci
13224d6c458bSopenharmony_ci    // another four bytes
13234d6c458bSopenharmony_ci    str8.append(1, 0xf0);
13244d6c458bSopenharmony_ci    str8.append(1, 0x8f);
13254d6c458bSopenharmony_ci    str8.append(1, 0x90);
13264d6c458bSopenharmony_ci    str8.append(1, 0x85);
13274d6c458bSopenharmony_ci
13284d6c458bSopenharmony_ci    bool isOk = false;
13294d6c458bSopenharmony_ci    std::u16string str16 = OHOS::buffer::Utf8ToUtf16BE(str8, &isOk);
13304d6c458bSopenharmony_ci
13314d6c458bSopenharmony_ci    char16_t results[] = {0x41, 0xc4, 0x5218, 0xd83d, 0xdc05, 0xf405};
13324d6c458bSopenharmony_ci    for (int i = 0; i < 6; i++) {
13334d6c458bSopenharmony_ci        ASSERT_EQ(results[i], str16[i]);
13344d6c458bSopenharmony_ci    }
13354d6c458bSopenharmony_ci}
13364d6c458bSopenharmony_ci
13374d6c458bSopenharmony_ci/**
13384d6c458bSopenharmony_ci * @tc.name: HexDecodeTest001
13394d6c458bSopenharmony_ci * @tc.desc: decode a hex string
13404d6c458bSopenharmony_ci * @tc.type: FUNC
13414d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
13424d6c458bSopenharmony_ci */
13434d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, HexDecodeTest001, testing::ext::TestSize.Level0)
13444d6c458bSopenharmony_ci{
13454d6c458bSopenharmony_ci    std::string ret = OHOS::buffer::HexDecode("313g");
13464d6c458bSopenharmony_ci    ASSERT_EQ(ret, "1");
13474d6c458bSopenharmony_ci}
13484d6c458bSopenharmony_ci
13494d6c458bSopenharmony_ci/**
13504d6c458bSopenharmony_ci * @tc.name: Utf16BEToLETest001
13514d6c458bSopenharmony_ci * @tc.desc: Utf16BEToLE
13524d6c458bSopenharmony_ci * @tc.type: FUNC
13534d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
13544d6c458bSopenharmony_ci */
13554d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, Utf16BEToLETest001, testing::ext::TestSize.Level0)
13564d6c458bSopenharmony_ci{
13574d6c458bSopenharmony_ci    std::u16string wstrBE = u"\x0041\x0042\x0043";
13584d6c458bSopenharmony_ci    std::u16string re = OHOS::buffer::Utf16BEToLE(wstrBE);
13594d6c458bSopenharmony_ci    char16_t results[] = {0x4100, 0x4200, 0x4300};
13604d6c458bSopenharmony_ci    for (int i = 0; i < 3; i++) {
13614d6c458bSopenharmony_ci        ASSERT_EQ(results[i], re[i]);
13624d6c458bSopenharmony_ci    }
13634d6c458bSopenharmony_ci}
13644d6c458bSopenharmony_ci
13654d6c458bSopenharmony_ci/**
13664d6c458bSopenharmony_ci * @tc.name: Base64EncodeTest001
13674d6c458bSopenharmony_ci * @tc.desc: Base64 encode with max size_t
13684d6c458bSopenharmony_ci * @tc.type: FUNC
13694d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
13704d6c458bSopenharmony_ci */
13714d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, Base64EncodeTest001, testing::ext::TestSize.Level0)
13724d6c458bSopenharmony_ci{
13734d6c458bSopenharmony_ci    unsigned char data[] = {0x1A, 0x2B, 0x3C, 0x4D};
13744d6c458bSopenharmony_ci    size_t len = std::numeric_limits<size_t>::max();
13754d6c458bSopenharmony_ci    std::string stra = OHOS::buffer::Base64Encode(data, len, OHOS::buffer::BASE64URL);
13764d6c458bSopenharmony_ci    ASSERT_EQ(stra, "");
13774d6c458bSopenharmony_ci}
13784d6c458bSopenharmony_ci
13794d6c458bSopenharmony_ci/**
13804d6c458bSopenharmony_ci * @tc.name: Base64EncodeTest002
13814d6c458bSopenharmony_ci * @tc.desc: Base64 encode
13824d6c458bSopenharmony_ci * @tc.type: FUNC
13834d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
13844d6c458bSopenharmony_ci */
13854d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, Base64EncodeTest002, testing::ext::TestSize.Level0)
13864d6c458bSopenharmony_ci{
13874d6c458bSopenharmony_ci    std::string value = "abc";
13884d6c458bSopenharmony_ci    std::string strb = OHOS::buffer::Base64Decode(value, OHOS::buffer::BASE64URL);
13894d6c458bSopenharmony_ci
13904d6c458bSopenharmony_ci    unsigned char data[] = {0x1A, 0x2B, 0x3C, 0x4D};
13914d6c458bSopenharmony_ci    std::string stra = OHOS::buffer::Base64Encode(data, 4, OHOS::buffer::BASE64URL);
13924d6c458bSopenharmony_ci    ASSERT_EQ(stra, "Gis8TQ");
13934d6c458bSopenharmony_ci}
13944d6c458bSopenharmony_ci
13954d6c458bSopenharmony_ci/**
13964d6c458bSopenharmony_ci * @tc.name: GetGoodSuffixLengthByLastCharTest001
13974d6c458bSopenharmony_ci * @tc.desc: Get good suffix length by last char
13984d6c458bSopenharmony_ci * @tc.type: FUNC
13994d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
14004d6c458bSopenharmony_ci */
14014d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, GetGoodSuffixLengthByLastCharTest001, testing::ext::TestSize.Level0)
14024d6c458bSopenharmony_ci{
14034d6c458bSopenharmony_ci    uint8_t pat[] = "ababcab";
14044d6c458bSopenharmony_ci    int patLen = sizeof(pat) - 1;
14054d6c458bSopenharmony_ci    int patIndex = 4;
14064d6c458bSopenharmony_ci
14074d6c458bSopenharmony_ci    int length = OHOS::buffer::GetGoodSuffixLengthByLastChar(pat, patIndex, patLen);
14084d6c458bSopenharmony_ci    ASSERT_EQ(length, 3);
14094d6c458bSopenharmony_ci}
14104d6c458bSopenharmony_ci
14114d6c458bSopenharmony_ci/**
14124d6c458bSopenharmony_ci * @tc.name: FindLastIndexTest001
14134d6c458bSopenharmony_ci * @tc.desc: Find last index with error
14144d6c458bSopenharmony_ci * @tc.type: FUNC
14154d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
14164d6c458bSopenharmony_ci */
14174d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, FindLastIndexTest001, testing::ext::TestSize.Level0)
14184d6c458bSopenharmony_ci{
14194d6c458bSopenharmony_ci    int rel1 = OHOS::buffer::FindLastIndex(nullptr, nullptr, 2, 1);
14204d6c458bSopenharmony_ci    ASSERT_EQ(rel1, -1);
14214d6c458bSopenharmony_ci
14224d6c458bSopenharmony_ci    uint8_t data[] = "abc";
14234d6c458bSopenharmony_ci    int rel2 = OHOS::buffer::FindLastIndex(data, data, 2, 0);
14244d6c458bSopenharmony_ci    ASSERT_EQ(rel2, -1);
14254d6c458bSopenharmony_ci}
14264d6c458bSopenharmony_ci
14274d6c458bSopenharmony_ci/**
14284d6c458bSopenharmony_ci * @tc.name: FindIndex005
14294d6c458bSopenharmony_ci * @tc.desc: Find index with error.
14304d6c458bSopenharmony_ci * @tc.type: FUNC
14314d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
14324d6c458bSopenharmony_ci */
14334d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, FindIndex005, testing::ext::TestSize.Level0)
14344d6c458bSopenharmony_ci{
14354d6c458bSopenharmony_ci    int rel1 = OHOS::buffer::FindIndex(nullptr, nullptr, 2, 1);
14364d6c458bSopenharmony_ci    ASSERT_EQ(rel1, -1);
14374d6c458bSopenharmony_ci
14384d6c458bSopenharmony_ci    uint8_t data[] = "abc";
14394d6c458bSopenharmony_ci    int rel2 = OHOS::buffer::FindIndex(data, data, 2, 0);
14404d6c458bSopenharmony_ci    ASSERT_EQ(rel2, -1);
14414d6c458bSopenharmony_ci}
14424d6c458bSopenharmony_ci
14434d6c458bSopenharmony_ci/**
14444d6c458bSopenharmony_ci * @tc.name: FindIndex001
14454d6c458bSopenharmony_ci * @tc.desc: Buffer FindIndex.
14464d6c458bSopenharmony_ci * @tc.type: FUNC
14474d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
14484d6c458bSopenharmony_ci */
14494d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, FindIndex001, testing::ext::TestSize.Level0)
14504d6c458bSopenharmony_ci{
14514d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
14524d6c458bSopenharmony_ci    buf->Init(15);
14534d6c458bSopenharmony_ci    buf->WriteString("This is a buffer", 15);
14544d6c458bSopenharmony_ci    uint64_t resultIndex = 0;
14554d6c458bSopenharmony_ci    int index = buf->IndexOf("2623", 0, 4, resultIndex);
14564d6c458bSopenharmony_ci    ASSERT_EQ(index, -1);
14574d6c458bSopenharmony_ci}
14584d6c458bSopenharmony_ci
14594d6c458bSopenharmony_ci/**
14604d6c458bSopenharmony_ci * @tc.name: FindIndex002
14614d6c458bSopenharmony_ci * @tc.desc: Buffer FindIndex.
14624d6c458bSopenharmony_ci * @tc.type: FUNC
14634d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
14644d6c458bSopenharmony_ci */
14654d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, FindIndex002, testing::ext::TestSize.Level0)
14664d6c458bSopenharmony_ci{
14674d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
14684d6c458bSopenharmony_ci    buf->Init(15);
14694d6c458bSopenharmony_ci    buf->WriteString("This is a buffer", 15);
14704d6c458bSopenharmony_ci    uint64_t resultIndex = 0;
14714d6c458bSopenharmony_ci    int index = buf->IndexOf("f", 0, 1, resultIndex);
14724d6c458bSopenharmony_ci    ASSERT_EQ(index, -2);
14734d6c458bSopenharmony_ci    ASSERT_EQ(resultIndex, 12);
14744d6c458bSopenharmony_ci}
14754d6c458bSopenharmony_ci
14764d6c458bSopenharmony_ci/**
14774d6c458bSopenharmony_ci * @tc.name: FindIndex003
14784d6c458bSopenharmony_ci * @tc.desc: Buffer FindIndex.
14794d6c458bSopenharmony_ci * @tc.type: FUNC
14804d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
14814d6c458bSopenharmony_ci */
14824d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, FindIndex003, testing::ext::TestSize.Level0)
14834d6c458bSopenharmony_ci{
14844d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
14854d6c458bSopenharmony_ci    buf->Init(15);
14864d6c458bSopenharmony_ci    buf->WriteString("23456789abcdefg", 15);
14874d6c458bSopenharmony_ci    uint64_t resultIndex = 0;
14884d6c458bSopenharmony_ci    int index = buf->IndexOf("3", 0, 1, resultIndex);
14894d6c458bSopenharmony_ci    ASSERT_EQ(index, -2);
14904d6c458bSopenharmony_ci    ASSERT_EQ(resultIndex, 1);
14914d6c458bSopenharmony_ci}
14924d6c458bSopenharmony_ci
14934d6c458bSopenharmony_ci/**
14944d6c458bSopenharmony_ci * @tc.name: FindIndex004
14954d6c458bSopenharmony_ci * @tc.desc: Buffer FindIndex.
14964d6c458bSopenharmony_ci * @tc.type: FUNC
14974d6c458bSopenharmony_ci * @tc.require:issueI5J5Z3
14984d6c458bSopenharmony_ci */
14994d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, FindIndex004, testing::ext::TestSize.Level0)
15004d6c458bSopenharmony_ci{
15014d6c458bSopenharmony_ci    OHOS::buffer::Buffer *buf = new OHOS::buffer::Buffer();
15024d6c458bSopenharmony_ci    buf->Init(15);
15034d6c458bSopenharmony_ci    buf->WriteString("23456789abcdefg", 15);
15044d6c458bSopenharmony_ci    uint64_t resultIndex = 0;
15054d6c458bSopenharmony_ci    int index = buf->IndexOf("3", 10, 1, resultIndex);
15064d6c458bSopenharmony_ci    ASSERT_EQ(index, -1);
15074d6c458bSopenharmony_ci}
1508