1/*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15#define NAPI_VERSION 8
16#ifndef NAPI_EXPERIMENTAL
17#define NAPI_EXPERIMENTAL
18#endif
19#include <ctime>
20#include <securec.h>
21#ifdef FOR_JERRYSCRIPT_TEST
22#include "jerryscript-core.h"
23#endif
24#include "js_native_api_types.h"
25#define private public
26#include "napi/native_api.h"
27#include "napi/native_common.h"
28#include "napi/native_node_api.h"
29#include "native_value.h"
30#include "test.h"
31#include "utils/log.h"
32#undef private
33
34struct CallJsCbData {
35    int32_t id = 0;
36};
37using CallJsCbData_t = struct CallJsCbData;
38
39struct Final_Cb_Data {
40    int32_t id = 0;
41};
42using FinalCbData_t = struct Final_Cb_Data;
43
44struct ThreadData {
45    napi_threadsafe_function tsfn = nullptr;
46    napi_threadsafe_function_call_mode isMode = napi_tsfn_nonblocking;
47};
48using ThreadData_t = struct ThreadData;
49
50struct Final_CbData {
51    int32_t id;
52};
53using FinalCbData = struct Final_CbData;
54
55struct Call_JsCbData_str {
56    int32_t id;
57    char strdata[12];
58};
59using CallJsCbData_str = struct Call_JsCbData_str;
60
61static constexpr int32_t SEND_DATA = 10;
62static constexpr int32_t CALL_JSCB_DATA = 20;
63static constexpr int32_t FINAL_CB_DATA = 30;
64static constexpr size_t MAX_COUNT = 128;
65static constexpr size_t OVER_MAX_COUNT = 129;
66static uv_thread_t g_uvThread;
67static FinalCbData finalData;
68static CallJsCbData jsData;
69static CallJsCbData_str jsData_str;
70static int g_callJSCallBackCount = 0;
71static int g_callCount = 0;
72static bool g_bFailFlag = false;
73static bool g_bIsFinish = false;
74static napi_env g_stEnv;
75static int iBlockCallTimes = 20;
76static int iNoneBlockCallTimes = 30;
77static CallJsCbData_t g_jsData;
78static FinalCbData_t g_finalData;
79static int g_threadDataContent = 608;
80static int g_threadDataContent2 = 708;
81static int g_threadDataContent3 = 808;
82static int g_threadDataContent4 = 908;
83static bool g_callFinalizeEnd = false;
84
85static int HOOK_ARG_ONE = 1;
86static int HOOK_ARG_TWO = 2;
87static int HOOK_ARG_THREE = 3;
88static int HOOK_TAG = 0;
89static int HOOK_TAGCP = 0;
90
91static constexpr int32_t CALL_JS_CB_DATA_TEST_ID = 101;
92static constexpr int32_t FINAL_CB_DATA_TEST_ID = 201;
93
94#if  (defined(FOR_JERRYSCRIPT_TEST)) &&  (JERRY_API_MINOR_VERSION <= 3)
95    // jerryscript 2.3 do nothing
96#else
97    // jerryscript 2.4 or quickjs or V8
98    static constexpr int UINT64_VALUE = 100;
99    static constexpr int INT64_VALUE = 100;
100#endif
101
102static constexpr int INT_ZERO = 0;
103static constexpr int INT_ONE = 1;
104static constexpr int INT_TWO = 2;
105static constexpr int INT_THREE = 3;
106static constexpr int INT_FIVE = 5;
107#if  (defined(FOR_JERRYSCRIPT_TEST)) &&  (JERRY_API_MINOR_VERSION <= 3)
108    // jerryscript 2.3 do nothing
109#else
110    static constexpr int INT_FOUR = 4;
111#endif
112
113
114static constexpr size_t ARRAYBUFFER_SIZE_NULL = 0;
115static constexpr size_t ARRAYBUFFER_SIZE = 1024;
116static constexpr int64_t CHANGE_IN_BYTES = 1024;
117static constexpr int64_t ADJUSTED_VALUE = 0;
118static constexpr double CREATE_DATE_TIME = 11.11;
119static constexpr double DATE_TIME_VALUE = 0;
120static constexpr double GET_DATE_TIME = 11;
121
122static constexpr size_t BUFFER_OVERMAX_SIZE = 2147483648;
123static char Text[] = "hello world";
124
125static void GetFinalizeStatus()
126{
127    while (!g_callFinalizeEnd) {
128        sleep(1);
129    }
130}
131static void NewChildThreadMuti(void* data)
132{
133    GTEST_LOG_(INFO) << "NewChildThreadMuti called start";
134    ThreadData_t* threadData = static_cast<ThreadData_t*>(data);
135    int testCount = 20;
136    for (int i = 0; i < testCount; i++) {
137        auto status = napi_call_threadsafe_function(threadData->tsfn, (void*)&g_threadDataContent2, threadData->isMode);
138        EXPECT_EQ(status, napi_ok);
139    }
140    GTEST_LOG_(INFO) << "NewChildThreadMuti called end";
141}
142static void NonBlockAndBlockNewChildThreadMuti(void* data)
143{
144    GTEST_LOG_(INFO) << "NonBlockAndBlockNewChildThreadMuti called start";
145    ThreadData_t* threadData = static_cast<ThreadData_t*>(data);
146    int testCount = 10;
147    for (int i = 0; i < testCount; i++) {
148        auto status = napi_call_threadsafe_function(threadData->tsfn, (void*)&g_threadDataContent3, napi_tsfn_blocking);
149        EXPECT_EQ(status, napi_ok);
150    }
151
152    for (int i = 0; i < testCount; i++) {
153        auto status =
154            napi_call_threadsafe_function(threadData->tsfn, (void*)&g_threadDataContent3, napi_tsfn_nonblocking);
155        EXPECT_EQ(status, napi_ok);
156    }
157    GTEST_LOG_(INFO) << "NonBlockAndBlockNewChildThreadMuti called end";
158}
159
160struct OneModeCallData {
161    napi_threadsafe_function tsfn = nullptr;
162    napi_threadsafe_function_call_mode mode = napi_tsfn_nonblocking;
163    int callCount = 0;
164};
165using OneModeCallData_t = struct OneModeCallData;
166
167static void OneModeCall(void* data)
168{
169    OneModeCallData_t* callData = static_cast<OneModeCallData_t*>(data);
170    if (callData == nullptr) {
171        return;
172    }
173    for (int i = 0; i < callData->callCount; i++) {
174        auto status = napi_call_threadsafe_function(callData->tsfn, (void*)&g_threadDataContent4, callData->mode);
175        EXPECT_EQ(status, napi_ok);
176    }
177}
178
179static void MutiModeCallOne(void* data)
180{
181    GTEST_LOG_(INFO) << "MutiModeCallOne called start";
182    OneModeCallData_t* callData = static_cast<OneModeCallData_t*>(data);
183    callData->mode = napi_tsfn_nonblocking;
184    int testCount = 10;
185    callData->callCount = testCount;
186    OneModeCall(data);
187
188    callData->mode = napi_tsfn_blocking;
189    OneModeCall(data);
190
191    callData->mode = napi_tsfn_nonblocking;
192    OneModeCall(data);
193
194    GTEST_LOG_(INFO) << "MutiModeCallOne called end";
195}
196static void MutiModeCallTwo(void* data)
197{
198    GTEST_LOG_(INFO) << "MutiModeCallTwo called start";
199    OneModeCallData_t* callData = static_cast<OneModeCallData_t*>(data);
200    callData->mode = napi_tsfn_blocking;
201    int testCount = 10;
202    callData->callCount = testCount;
203    OneModeCall(data);
204
205    callData->mode = napi_tsfn_nonblocking;
206    OneModeCall(data);
207
208    callData->mode = napi_tsfn_blocking;
209    OneModeCall(data);
210
211    GTEST_LOG_(INFO) << "MutiModeCallTwo called end";
212}
213static void MutiModeCallThree(void* data)
214{
215    GTEST_LOG_(INFO) << "MutiModeCallThree called start";
216    OneModeCallData_t* callData = static_cast<OneModeCallData_t*>(data);
217    callData->mode = napi_tsfn_nonblocking;
218    int testCount = 30;
219    callData->callCount = testCount;
220    OneModeCall(data);
221
222    GTEST_LOG_(INFO) << "MutiModeCallThree called end";
223}
224static void MutiModeCallFour(void* data)
225{
226    GTEST_LOG_(INFO) << "MutiModeCallFour called start";
227    OneModeCallData_t* callData = static_cast<OneModeCallData_t*>(data);
228    callData->mode = napi_tsfn_blocking;
229    int testCount = 30;
230    callData->callCount = testCount;
231    OneModeCall(data);
232
233    GTEST_LOG_(INFO) << "MutiModeCallFour called end";
234}
235static void NonBlockFinalizeThreadCallBack(napi_env env, void* finalizeData, void* hint)
236{
237    GTEST_LOG_(INFO) << "NonBlockFinalizeThreadCallBack called";
238
239    int CallJSCallCount = 40;
240    EXPECT_EQ(g_callJSCallBackCount, CallJSCallCount);
241
242    g_callFinalizeEnd = true;
243}
244
245static void CallJSCallBack(napi_env env, napi_value tsfn_cb, void* context, void* data)
246{
247    GTEST_LOG_(INFO) << "CallJSCallBack called";
248    g_callJSCallBackCount++;
249
250    EXPECT_EQ(((CallJsCbData_t*)context)->id, CALL_JS_CB_DATA_TEST_ID);
251    GTEST_LOG_(INFO) << "CallJSCallBack param:data =" << *((int*)data);
252
253    GTEST_LOG_(INFO) << "CallJSCallBack Count=" << g_callJSCallBackCount;
254}
255
256static void FinalizeThreadCallBack(napi_env env, void* finalizeData, void* hint)
257{
258    GTEST_LOG_(INFO) << "FinalizeThreadCallBack called start";
259
260    EXPECT_EQ(((FinalCbData_t*)finalizeData)->id, FINAL_CB_DATA_TEST_ID);
261
262    int CallJSCallCount = 40;
263    EXPECT_EQ(g_callJSCallBackCount, CallJSCallCount);
264
265    g_callFinalizeEnd = true;
266}
267
268static void MutiModeFinalizeThreadCallBack(napi_env env, void* finalizeData, void* hint)
269{
270    GTEST_LOG_(INFO) << "MutiModeFinalizeThreadCallBack called start";
271
272    EXPECT_EQ(((FinalCbData_t*)finalizeData)->id, FINAL_CB_DATA_TEST_ID);
273
274    int CallJSCallCount = 120;
275    EXPECT_EQ(g_callJSCallBackCount, CallJSCallCount);
276
277    g_callFinalizeEnd = true;
278}
279static void AllFinalizeThreadCallBack(napi_env env, void* finalizeData, void* hint)
280{
281    GTEST_LOG_(INFO) << "AllFinalizeThreadCallBack called start";
282
283    EXPECT_EQ(((FinalCbData_t*)finalizeData)->id, FINAL_CB_DATA_TEST_ID);
284
285    int CallJSCallCount = 40;
286    EXPECT_EQ(g_callJSCallBackCount, CallJSCallCount);
287
288    g_callFinalizeEnd = true;
289}
290static void OtherFinalizeThreadCallBack(napi_env env, void* finalizeData, void* hint)
291{
292    GTEST_LOG_(INFO) << "OtherFinalizeThreadCallBack called start";
293
294    EXPECT_EQ(((FinalCbData_t*)finalizeData)->id, FINAL_CB_DATA_TEST_ID);
295
296    int CallJSCallCount = 46;
297    EXPECT_EQ(g_callJSCallBackCount, CallJSCallCount);
298
299    g_callFinalizeEnd = true;
300}
301static void BufferFinalizer(napi_env env, void* data, void* hint)
302{}
303
304static void ExpectCheckCall(napi_status call)
305{
306    EXPECT_EQ(call, napi_ok);
307}
308
309static void AssertCheckValueType(napi_env env, napi_value value, napi_valuetype type)
310{
311    napi_valuetype valueType = napi_undefined;
312    EXPECT_TRUE(value != nullptr);
313    ExpectCheckCall(napi_typeof(env, value, &valueType));
314    EXPECT_EQ(valueType, type);
315}
316
317static void NewChildRef(void* data)
318{
319    GTEST_LOG_(INFO) << "NewChildRef called ";
320    napi_threadsafe_function tsFunc = (napi_threadsafe_function)data;
321    auto status = napi_ref_threadsafe_function(g_stEnv, tsFunc);
322    EXPECT_NE(status, napi_ok);
323}
324static void NewChildUnRef(void* data)
325{
326    GTEST_LOG_(INFO) << "NewChildUnRef called ";
327    napi_threadsafe_function tsFunc = (napi_threadsafe_function)data;
328    auto status = napi_unref_threadsafe_function(g_stEnv, tsFunc);
329    EXPECT_NE(status, napi_ok);
330}
331static void NewChildThreadMutiCallBlocking(void* data)
332{
333    GTEST_LOG_(INFO) << "NewChildThreadMutiCallBlocking called start";
334    napi_threadsafe_function tsFunc = (napi_threadsafe_function)data;
335
336    for (int i = 0; i < iBlockCallTimes; i++) {
337        auto status = napi_call_threadsafe_function(tsFunc, nullptr, napi_tsfn_blocking);
338        EXPECT_EQ(status, napi_ok);
339        g_callCount++;
340    }
341    GTEST_LOG_(INFO) << "NewChildThreadMutiCallBlocking called end";
342}
343
344static void NewChildThreadMutiCallNoneBlocking(void* data)
345{
346    GTEST_LOG_(INFO) << "NewChildThreadMutiCallNoneBlocking called start";
347    napi_threadsafe_function tsFunc = (napi_threadsafe_function)data;
348    int iFailTimes = 0;
349
350    for (int i = 0; i < iNoneBlockCallTimes; i++) {
351        auto status = napi_call_threadsafe_function(tsFunc, nullptr, napi_tsfn_nonblocking);
352        if (napi_ok != status) {
353            iFailTimes++;
354        }
355    }
356    if (iFailTimes > 0) {
357        g_bFailFlag = true;
358    }
359    GTEST_LOG_(INFO) << "none block call fail times" << iFailTimes;
360    GTEST_LOG_(INFO) << "NewChildThreadMutiCallNoneBlocking called end";
361}
362
363static void CallJSSlowCallBack(napi_env env, napi_value tsfn_cb, void* context, void* data)
364{
365    GTEST_LOG_(INFO) << "CallJSSlowCallBack called";
366    sleep(1);
367    g_callJSCallBackCount++;
368    GTEST_LOG_(INFO) << "CallJSSlowCallBack Count=" << g_callJSCallBackCount;
369}
370
371static void FinalCallBack(napi_env env, void* finalizeData, void* hint)
372{
373    GTEST_LOG_(INFO) << "FinalCallBack called";
374    g_bIsFinish = true;
375}
376
377static void WaitForFinish()
378{
379    while (!g_bIsFinish) {
380        sleep(1);
381    }
382}
383
384static void ThreadSafeCallJs(napi_env env, napi_value tsfn_cb, void* context, void* data)
385{
386    GTEST_LOG_(INFO) << "ThreadSafeCallJs start";
387
388    CallJsCbData* jsData = nullptr;
389    jsData = (CallJsCbData*)context;
390    GTEST_LOG_(INFO) << "jsData->id is" << jsData->id;
391    EXPECT_EQ(jsData->id, CALL_JSCB_DATA);
392    int32_t* pData = nullptr;
393    pData = (int32_t*)data;
394    EXPECT_EQ((*pData), SEND_DATA);
395
396    GTEST_LOG_(INFO) << "ThreadSafeCallJs end";
397}
398
399static void Threadfinalcb(napi_env env, void* finalizeData, void* context)
400{
401    GTEST_LOG_(INFO) << "Threadfinalcb called";
402
403    uv_thread_join(&g_uvThread);
404    GTEST_LOG_(INFO) << "context->id" << ((FinalCbData*)context)->id;
405    CallJsCbData* jsData = nullptr;
406    jsData = (CallJsCbData*)context;
407    GTEST_LOG_(INFO) << "jsData->id" << jsData->id;
408    EXPECT_EQ(jsData->id, CALL_JSCB_DATA);
409    int32_t* pData = nullptr;
410    pData = (int32_t*)finalizeData;
411    EXPECT_EQ((*pData), FINAL_CB_DATA);
412    g_callFinalizeEnd = true;
413    GTEST_LOG_(INFO) << "Threadfinalcb end";
414}
415
416static void TsFuncDataSourceThread0200(void* data)
417{
418    GTEST_LOG_(INFO) << "TsFuncDataSourceThread0200 called!";
419
420    napi_threadsafe_function func = (napi_threadsafe_function)data;
421    napi_threadsafe_function_call_mode is_blocking = napi_tsfn_nonblocking;
422    int32_t sendData = SEND_DATA;
423    napi_status callresult = napi_call_threadsafe_function(func, &sendData, is_blocking);
424    GTEST_LOG_(INFO) << "napi_call_threadsafe_function finish!";
425    EXPECT_EQ(callresult, napi_status::napi_ok);
426    for (size_t i = 0; i < MAX_COUNT; i++) {
427        napi_release_threadsafe_function(func, napi_tsfn_release);
428    }
429    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
430
431    GTEST_LOG_(INFO) << "TsFuncDataSourceThread0200 end!";
432}
433
434static void TsFuncreleaseThread(void* data)
435{
436    GTEST_LOG_(INFO) << "TsFuncreleaseThread called!";
437
438    napi_threadsafe_function func = (napi_threadsafe_function)data;
439    napi_status releaseresultone = napi_release_threadsafe_function(func, napi_tsfn_release);
440    EXPECT_EQ(releaseresultone, napi_status::napi_ok);
441    napi_status releaseresulttwo = napi_release_threadsafe_function(func, napi_tsfn_release);
442    EXPECT_EQ(releaseresulttwo, napi_status::napi_generic_failure);
443    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
444
445    GTEST_LOG_(INFO) << "TsFuncreleaseThread end!";
446}
447
448static void TsFuncabortThread(void* data)
449{
450    GTEST_LOG_(INFO) << "TsFuncabortThread called!";
451
452    napi_threadsafe_function func = (napi_threadsafe_function)data;
453    napi_threadsafe_function_call_mode is_blocking = napi_tsfn_nonblocking;
454    int32_t sendData = SEND_DATA;
455    napi_status callresultone = napi_call_threadsafe_function(func, &sendData, is_blocking);
456    EXPECT_EQ(callresultone, napi_status::napi_ok);
457    sleep(1);
458    napi_status releaseresult = napi_release_threadsafe_function(func, napi_tsfn_abort);
459    EXPECT_EQ(releaseresult, napi_status::napi_ok);
460    napi_status callresulttwo = napi_call_threadsafe_function(func, &sendData, is_blocking);
461    EXPECT_EQ(callresulttwo, napi_status::napi_closing);
462    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
463
464    GTEST_LOG_(INFO) << "TsFuncabortThread end!";
465}
466
467static void TsFuncreleasefiveThread(void* data)
468{
469    GTEST_LOG_(INFO) << "TsFuncreleasefiveThread called!";
470
471    napi_threadsafe_function func = (napi_threadsafe_function)data;
472    napi_status releaseresult;
473    size_t loopCount = 5;
474    for (size_t i = 0; i < loopCount; i++) {
475        releaseresult = napi_release_threadsafe_function(func, napi_tsfn_release);
476        EXPECT_EQ(releaseresult, napi_status::napi_ok);
477    }
478    releaseresult = napi_release_threadsafe_function(func, napi_tsfn_release);
479    EXPECT_EQ(releaseresult, napi_status::napi_generic_failure);
480    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
481
482    GTEST_LOG_(INFO) << "TsFuncreleasefiveThread end!";
483}
484
485static void TsFuncErrReleaseThread(void* data)
486{
487    GTEST_LOG_(INFO) << "TsFuncErrReleaseThread called!";
488
489    napi_status releaseresult = napi_release_threadsafe_function(nullptr, napi_tsfn_release);
490    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
491    EXPECT_EQ(releaseresult, napi_status::napi_invalid_arg);
492
493    GTEST_LOG_(INFO) << "TsFuncErrReleaseThread end!";
494}
495
496/*
497 * @tc.number    : ACE_Napi_Create_String_Utf16_0100
498 * @tc.name      : Test the normal value of NAPi_CREATE_string_UTf16
499 * @tc.desc      : 1.The environment engine is created
500 *                 2.Set test variables
501 *                 3.The function of napi_create_string_utf16 is called
502 *                 4.Return value of function is napi_ok
503 *                 5.The function of napi_get_value_string_utf16 is called
504 *                 6.Check whether the obtained parameters meet requirements
505 */
506HWTEST_F(NativeEngineTest, ACE_Napi_Create_String_Utf16_0100, testing::ext::TestSize.Level1)
507{
508    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0100 start";
509
510    napi_env env = (napi_env)engine_;
511
512    char16_t testStr[] = u"system.test.content.!@#%中^&*()6666";
513    size_t testStrLength = static_cast<size_t>(std::char_traits<char16_t>::length(testStr));
514    char16_t buffer[testStrLength + 1];
515    size_t copied = INT_ZERO;
516    napi_value result = nullptr;
517
518    ExpectCheckCall(napi_create_string_utf16(env, testStr, testStrLength, &result));
519    ExpectCheckCall(napi_get_value_string_utf16(env, result, buffer, testStrLength + 1, &copied));
520
521    EXPECT_EQ(testStrLength, copied);
522    for (size_t i = INT_ZERO; i < copied + 1; i++) {
523        EXPECT_EQ(testStr[i], buffer[i]);
524    }
525
526    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0100 end";
527}
528
529/*
530 * @tc.number    : ACE_Napi_Create_String_Utf16_0200
531 * @tc.name      : Tests whether napi_CREATE_string_UTf16 returns an exception if STR is empty
532 * @tc.desc      : 1.The environment engine is created
533 *                 2.Set test variables
534 *                 3.The function of napi_create_string_utf16 is called
535 *                 4.Return value of function is napi_invalid_arg
536 */
537HWTEST_F(NativeEngineTest, ACE_Napi_Create_String_Utf16_0200, testing::ext::TestSize.Level2)
538{
539    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0200 start";
540    napi_env env = (napi_env)engine_;
541
542    size_t buffer_size = INT_ONE;
543    napi_value result = nullptr;
544    napi_status ret = napi_ok;
545
546    ret = napi_create_string_utf16(env, nullptr, buffer_size, &result);
547
548    EXPECT_EQ(ret, napi_invalid_arg);
549    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0200 end";
550}
551
552/*
553 * @tc.number    : ACE_Napi_Create_String_Utf16_0300
554 * @tc.name      : Test napi_CREATE_string_UTf16 when length is empty
555 * @tc.desc      : 1.The environment engine is created
556 *                 2.Set test variables
557 *                 3.The function of napi_create_string_utf16 is called
558 *                 4.Return value of function is napi_ok
559 *                 5.The function of napi_get_value_string_utf16 is called
560 *                 6.Check whether the obtained parameters meet requirements
561 */
562HWTEST_F(NativeEngineTest, ACE_Napi_Create_String_Utf16_0300, testing::ext::TestSize.Level2)
563{
564    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0300 start";
565    napi_env env = (napi_env)engine_;
566
567    char16_t testStr[] = u"system.test.content.abnormal.dd@#!#@$%999900";
568    napi_value result = nullptr;
569    napi_status status = napi_ok;
570    status = napi_create_string_utf16(env, testStr, 0, &result);
571    EXPECT_NE(status, napi_ok);
572    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0300 end";
573}
574
575/*
576 * @tc.number    : ACE_Napi_Create_String_Utf16_0400
577 * @tc.name      : Test Napi_create_string_utf16 The string length is invalid
578 * @tc.desc      : 1.The environment engine is created
579 *                 2.Set test variables
580 *                 3.The function of napi_create_string_utf16 is called
581 *                 4.Return value of function is napi_invalid_arg
582 */
583HWTEST_F(NativeEngineTest, ACE_Napi_Create_String_Utf16_0400, testing::ext::TestSize.Level2)
584{
585    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0400 start";
586    napi_env env = (napi_env)engine_;
587
588    char16_t testStr[] = u"system.test.content.size_max.abnormal";
589    napi_status ret = napi_ok;
590    napi_value result = nullptr;
591
592    ret = napi_create_string_utf16(env, testStr, (size_t)INT_MAX + 1, &result);
593
594    EXPECT_EQ(ret, napi_invalid_arg);
595    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0400 end";
596}
597
598/*
599 * @tc.number    : ACE_Napi_Create_String_Utf16_0500
600 * @tc.name      : The napi_create_string_UTf16 returned object parameter is invalid
601 * @tc.desc      : 1.The environment engine is created
602 *                 2.Set test variables
603 *                 3.The function of napi_create_string_utf16 is called
604 *                 4.Return value of function is napi_invalid_arg
605 */
606HWTEST_F(NativeEngineTest, ACE_Napi_Create_String_Utf16_0500, testing::ext::TestSize.Level2)
607{
608    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0500 start";
609    napi_env env = (napi_env)engine_;
610
611    char16_t testStr[] = u"system.test.content.result.abnormal";
612    int testStrLength = static_cast<int>(std::char_traits<char16_t>::length(testStr));
613    napi_status ret = napi_ok;
614
615    ret = napi_create_string_utf16(env, testStr, testStrLength, nullptr);
616    EXPECT_EQ(ret, napi_invalid_arg);
617    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0500 end";
618}
619
620/*
621 * @tc.number    : ACE_Napi_Create_String_Utf16_0600
622 * @tc.name      : The napi_CREATE_string_UTf16 environment parameter is invalid
623 * @tc.desc      : 1.The environment engine is created
624 *                 2.Set test variables
625 *                 3.The function of napi_create_string_utf16 is called
626 *                 4.Return value of function is napi_invalid_arg
627 */
628HWTEST_F(NativeEngineTest, ACE_Napi_Create_String_Utf16_0600, testing::ext::TestSize.Level2)
629{
630    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0600 start";
631    char16_t testStr[] = u"system.test.content.env.abnormal";
632    int testStrLength = static_cast<int>(std::char_traits<char16_t>::length(testStr));
633    napi_status ret = napi_ok;
634    napi_value result = nullptr;
635
636    ret = napi_create_string_utf16(nullptr, testStr, testStrLength, &result);
637    EXPECT_EQ(ret, napi_invalid_arg);
638    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0600 end";
639}
640
641/*
642 * @tc.number    : ACE_Napi_Create_String_Utf16_0700
643 * @tc.name      : Test the special characters of NAPi_CREATE_string_UTf16
644 * @tc.desc      : 1.The environment engine is created
645 *                 2.Set test variables
646 *                 3.The function of napi_create_string_utf16 is called
647 *                 4.Return value of function is napi_ok
648 *                 5.The function of napi_get_value_string_utf16 is called
649 *                 6.Check whether the obtained parameters meet requirements
650 */
651HWTEST_F(NativeEngineTest, ACE_Napi_Create_String_Utf16_0700, testing::ext::TestSize.Level1)
652{
653    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0700 start";
654
655    napi_env env = (napi_env)engine_;
656
657    char16_t testStr[] = u"system.test.content.&*!@#¥%";
658    size_t testStrLength = static_cast<size_t>(std::char_traits<char16_t>::length(testStr));
659    char16_t buffer[testStrLength + 1];
660    size_t copied = INT_ZERO;
661    napi_value result = nullptr;
662
663    ExpectCheckCall(napi_create_string_utf16(env, testStr, testStrLength, &result));
664    ExpectCheckCall(napi_get_value_string_utf16(env, result, buffer, testStrLength + 1, &copied));
665
666    EXPECT_EQ(testStrLength, copied);
667    for (size_t i = INT_ZERO; i < copied + 1; i++) {
668        EXPECT_EQ(testStr[i], buffer[i]);
669    }
670
671    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0700 end";
672}
673
674/*
675 * @tc.number    : ACE_Napi_Create_String_Utf16_0800
676 * @tc.name      : Test NAPi_CREATE_string_UTf16 space
677 * @tc.desc      : 1.The environment engine is created
678 *                 2.Set test variables
679 *                 3.The function of napi_create_string_utf16 is called
680 *                 4.Return value of function is napi_ok
681 *                 5.The function of napi_get_value_string_utf16 is called
682 *                 6.Check whether the obtained parameters meet requirements
683 */
684HWTEST_F(NativeEngineTest, ACE_Napi_Create_String_Utf16_0800, testing::ext::TestSize.Level1)
685{
686    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0800 start";
687
688    napi_env env = (napi_env)engine_;
689
690    char16_t testStr[] = u"system.test.content.     ";
691    size_t testStrLength = static_cast<size_t>(std::char_traits<char16_t>::length(testStr));
692    char16_t buffer[testStrLength + 1];
693    size_t copied = INT_ZERO;
694    napi_value result = nullptr;
695
696    ExpectCheckCall(napi_create_string_utf16(env, testStr, testStrLength, &result));
697    ExpectCheckCall(napi_get_value_string_utf16(env, result, buffer, testStrLength + 1, &copied));
698
699    EXPECT_EQ(testStrLength, copied);
700    for (size_t i = INT_ZERO; i < copied + 1; i++) {
701        EXPECT_EQ(testStr[i], buffer[i]);
702    }
703
704    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0800 end";
705}
706/*
707 * @tc.number    : ACE_Napi_Create_String_Utf16_0900
708 * @tc.name      : Test NAPi_CREATE_string_UTf16 incoming Chinese characters
709 * @tc.desc      : 1.The environment engine is created
710 *                 2.Set test variables
711 *                 3.The function of napi_create_string_utf16 is called
712 *                 4.Return value of function is napi_ok
713 *                 5.The function of napi_get_value_string_utf16 is called
714 *                 6.Check whether the obtained parameters meet requirements
715 */
716HWTEST_F(NativeEngineTest, ACE_Napi_Create_String_Utf16_0900, testing::ext::TestSize.Level1)
717{
718    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0900 start";
719
720    napi_env env = (napi_env)engine_;
721
722    char16_t testStr[] = u"system.test.content.汉字输入";
723    size_t testStrLength = static_cast<size_t>(std::char_traits<char16_t>::length(testStr));
724    char16_t buffer[testStrLength + 1];
725    size_t copied = INT_ZERO;
726    napi_value result = nullptr;
727
728    ExpectCheckCall(napi_create_string_utf16(env, testStr, testStrLength, &result));
729    ExpectCheckCall(napi_get_value_string_utf16(env, result, buffer, testStrLength + 1, &copied));
730
731    EXPECT_EQ(testStrLength, copied);
732    for (size_t i = INT_ZERO; i < copied + 1; i++) {
733        EXPECT_EQ(testStr[i], buffer[i]);
734    }
735
736    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_String_Utf16_0900 end";
737}
738
739/*
740 * @tc.number    : ACE_Napi_Get_Value_String_Utf16_0100
741 * @tc.name      : Test the normal value of napi_get_value_string_utf16
742 * @tc.desc      : 1.The environment engine is created
743 *                 2.Set test variables
744 *                 3.The function of napi_create_string_utf16 is called
745 *                 4.Return value of function is napi_ok
746 *                 5.The function of napi_get_value_string_utf16 is called
747 *                 6.Check whether the obtained parameters meet requirements
748 */
749HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_String_Utf16_0100, testing::ext::TestSize.Level1)
750{
751    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0100 start";
752    napi_env env = (napi_env)engine_;
753
754    char16_t testStr[] = u"system.test.content.&&&^^^^.中文9988";
755    size_t testStrLength = static_cast<size_t>(std::char_traits<char16_t>::length(testStr));
756    char16_t buffer[testStrLength];
757    size_t copied = INT_ZERO;
758    napi_value result = nullptr;
759
760    ExpectCheckCall(napi_create_string_utf16(env, testStr, testStrLength, &result));
761    ExpectCheckCall(napi_get_value_string_utf16(env, result, buffer, testStrLength + 1, &copied));
762
763    EXPECT_EQ(testStrLength, copied);
764    for (size_t i = INT_ZERO; i < copied; i++) {
765        EXPECT_EQ(testStr[i], buffer[i]);
766    }
767    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0100 end";
768}
769
770/*
771 * @tc.number    : ACE_Napi_Get_Value_String_Utf16_0200
772 * @tc.name      : Test napi_get_value_string_UTf16 truncation
773 * @tc.desc      : 1.The environment engine is created
774 *                 2.Set test variables
775 *                 3.The function of napi_create_string_utf16 is called
776 *                 4.Return value of function is napi_ok
777 *                 5.The function of napi_get_value_string_utf16 is called
778 *                 6.Check whether the obtained parameters meet requirements
779 */
780HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_String_Utf16_0200, testing::ext::TestSize.Level1)
781{
782    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0200 start";
783    napi_env env = (napi_env)engine_;
784
785    char16_t testStr[] = u"system.test.content.abnormal";
786    size_t testStrLength = static_cast<size_t>(std::char_traits<char16_t>::length(testStr));
787    char16_t buffer[testStrLength];
788    size_t copied;
789    napi_value result = nullptr;
790
791    ExpectCheckCall(napi_create_string_utf16(env, testStr, testStrLength, &result));
792    ExpectCheckCall(napi_get_value_string_utf16(env, result, buffer, INT_FIVE + 1, &copied));
793
794    for (int i = INT_ZERO; i < INT_FIVE; i++) {
795        EXPECT_EQ(testStr[i], buffer[i]);
796    }
797    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0200 end";
798}
799
800/*
801 * @tc.number    : ACE_Napi_Get_Value_String_Utf16_0300
802 * @tc.name      : Test napi_get_value_string_UTf16 The input buffer size is invalid
803 * @tc.desc      : 1.The environment engine is created
804 *                 2.Set test variables
805 *                 3.The function of napi_create_string_utf16 is called
806 *                 4.Return value of function is napi_ok
807 *                 5.The function of napi_get_value_string_utf16 is called
808 *                 6.Check whether the obtained parameters meet requirements
809 */
810HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_String_Utf16_0300, testing::ext::TestSize.Level2)
811{
812    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0300 start";
813    napi_env env = (napi_env)engine_;
814
815    char16_t testStr[] = u"system.test.content.abnormal.!@#$%^&*123";
816    size_t testStrLength = static_cast<size_t>(std::char_traits<char16_t>::length(testStr));
817    char16_t buffer[] = u"12345";
818    size_t buffer_size = INT_ZERO;
819    size_t copied = INT_ZERO;
820    napi_value result = nullptr;
821
822    ExpectCheckCall(napi_create_string_utf16(env, testStr, testStrLength, &result));
823    ExpectCheckCall(napi_get_value_string_utf16(env, result, buffer, buffer_size, &copied));
824
825    EXPECT_EQ(copied, testStrLength);
826    for (size_t i = INT_ZERO; i < INT_TWO; i++) {
827        EXPECT_NE(buffer[i], testStr[i]);
828    }
829    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0300 end";
830}
831
832/*
833 * @tc.number    : ACE_Napi_Get_Value_String_Utf16_0400
834 * @tc.name      : Test Napi_get_value_string_utf16 Invalid string passed
835 * @tc.desc      : 1.The environment engine is created
836 *                 2.Set test variables
837 *                 3.The function of napi_create_bigint_int64 is called
838 *                 4.Return value of function is napi_ok
839 *                 5.The function of napi_get_value_string_utf16 is called
840 *                 6.Return value of function is napi_string_expected
841 */
842HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_String_Utf16_0400, testing::ext::TestSize.Level2)
843{
844    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0400 start";
845    napi_env env = (napi_env)engine_;
846
847    char16_t buffer[INT_FIVE];
848    int testStrLength = static_cast<int>(std::char_traits<char16_t>::length(buffer));
849    size_t copied;
850    int64_t testValue = INT64_MAX;
851    napi_value result = nullptr;
852    napi_status ret = napi_ok;
853    ExpectCheckCall(napi_create_bigint_int64(env, testValue, &result));
854    AssertCheckValueType(env, result, napi_bigint);
855
856    ret = napi_get_value_string_utf16(env, result, buffer, testStrLength, &copied);
857
858    EXPECT_EQ(ret, napi_string_expected);
859    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0400 end";
860}
861
862/*
863 * @tc.number    : ACE_Napi_Get_Value_String_Utf16_0500
864 * @tc.name      : Test for invalid buffer for napi_get_value_string_UTf16 string
865 * @tc.desc      : 1.The environment engine is created
866 *                 2.Set test variables
867 *                 3.The function of napi_create_string_utf16 is called
868 *                 4.Return value of function is napi_ok
869 *                 5.The function of napi_get_value_string_utf16 is called
870 *                 6.Check whether the obtained parameters meet requirements
871 */
872HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_String_Utf16_0500, testing::ext::TestSize.Level1)
873{
874    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0500 start";
875    napi_env env = (napi_env)engine_;
876
877    char16_t testStr[] = u"system.test.content.copied.$#@666";
878    size_t testStrLength = static_cast<size_t>(std::char_traits<char16_t>::length(testStr));
879    size_t copied = INT_ZERO;
880    napi_value result = nullptr;
881
882    ExpectCheckCall(napi_create_string_utf16(env, testStr, testStrLength, &result));
883    ExpectCheckCall(napi_get_value_string_utf16(env, result, nullptr, testStrLength, &copied));
884
885    EXPECT_EQ(testStrLength, copied);
886    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0500 end";
887}
888
889/*
890 * @tc.number    : ACE_Napi_Get_Value_String_Utf16_0600
891 * @tc.name      : The napi_get_value_string_UTf16 output length is invalid
892 * @tc.desc      : 1.The environment engine is created
893 *                 2.Set test variables
894 *                 3.The function of napi_create_string_utf16 is called
895 *                 4.Return value of function is napi_ok
896 *                 5.The function of napi_get_value_string_utf16 is called
897 *                 6.Return value of function is napi_invalid_arg
898 */
899HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_String_Utf16_0600, testing::ext::TestSize.Level2)
900{
901    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0600 start";
902    napi_env env = (napi_env)engine_;
903
904    char16_t testStr[] = u"system.test.content.abnormal";
905    int testStrLength = static_cast<int>(std::char_traits<char16_t>::length(testStr));
906    char16_t buffer[testStrLength];
907    napi_value result = nullptr;
908    napi_status ret = napi_ok;
909
910    ExpectCheckCall(napi_create_string_utf16(env, testStr, testStrLength, &result));
911    ret = napi_get_value_string_utf16(env, result, buffer, testStrLength, nullptr);
912
913    EXPECT_EQ(ret, napi_invalid_arg);
914    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0600 end";
915}
916
917/*
918 * @tc.number    : ACE_Napi_Get_Value_String_Utf16_0700
919 * @tc.name      : The napi_get_value_string_UTf16 environment parameter is invalid
920 * @tc.desc      : 1.The environment engine is created
921 *                 2.Set test variables
922 *                 3.The function of napi_create_string_utf16 is called
923 *                 4.Return value of function is napi_ok
924 *                 5.The function of napi_get_value_string_utf16 is called
925 *                 6.Return value of function is napi_invalid_arg
926 */
927HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_String_Utf16_0700, testing::ext::TestSize.Level2)
928{
929    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0700 start";
930    napi_env env = (napi_env)engine_;
931
932    char16_t testStr[] = u"system.test.content.env.abnormal";
933    int testStrLength = static_cast<int>(std::char_traits<char16_t>::length(testStr));
934    char16_t buffer[testStrLength];
935    size_t copied;
936    napi_value result = nullptr;
937    napi_status ret = napi_ok;
938    ExpectCheckCall(napi_create_string_utf16(env, testStr, testStrLength, &result));
939
940    ret = napi_get_value_string_utf16(nullptr, result, buffer, testStrLength, &copied);
941
942    EXPECT_EQ(ret, napi_invalid_arg);
943    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0700 end";
944}
945
946/*
947 * @tc.number    : ACE_Napi_Get_Value_String_Utf16_0800
948 * @tc.name      : The napi_get_value_string_UTf16 value parameter is invalid
949 * @tc.desc      : 1.The environment engine is created
950 *                 2.Set test variables
951 *                 3.The function of napi_get_value_string_utf16 is called
952 *                 4.Return value of function is napi_invalid_arg
953 */
954HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_String_Utf16_0800, testing::ext::TestSize.Level2)
955{
956    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0800 start";
957    napi_env env = (napi_env)engine_;
958
959    char16_t testStr[] = u"system.test.content.result.abnormal";
960    int testStrLength = static_cast<int>(std::char_traits<char16_t>::length(testStr));
961    char16_t buffer[testStrLength];
962    size_t copied;
963    napi_value result = nullptr;
964    napi_status ret = napi_ok;
965
966    ret = napi_get_value_string_utf16(env, result, buffer, testStrLength, &copied);
967
968    EXPECT_EQ(ret, napi_invalid_arg);
969    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_String_Utf16_0800 end";
970}
971
972#if  (defined(FOR_JERRYSCRIPT_TEST)) &&  (JERRY_API_MINOR_VERSION <= 3)
973    // jerryscript 2.3 do nothing
974#else
975// jerryscript 2.4 or quickjs or V8
976/*
977 * @tc.number    : ACE_Napi_Create_Bigint_Int64_0100
978 * @tc.name      : Test the maximum value of napi_create_bigint_int64
979 * @tc.desc      : 1.The environment engine is created
980 *                 2.Set test variables
981 *                 3.The function of napi_create_bigint_int64 is called
982 *                 4.Return value of function is napi_ok
983 *                 5.The function of napi_get_value_bigint_int64 is called
984 *                 6.Check whether the obtained parameters meet requirements
985 */
986HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Int64_0100, testing::ext::TestSize.Level1)
987{
988    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Int64_0100 start";
989    napi_env env = (napi_env)engine_;
990
991    int64_t testValue = INT64_MAX;
992    napi_value result = nullptr;
993
994    ExpectCheckCall(napi_create_bigint_int64(env, testValue, &result));
995    AssertCheckValueType(env, result, napi_bigint);
996
997    bool lossless = true;
998    int64_t resultValue = INT_ZERO;
999    ExpectCheckCall(napi_get_value_bigint_int64(env, result, &resultValue, &lossless));
1000
1001    EXPECT_EQ(resultValue, INT64_MAX);
1002    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Int64_0100 end";
1003}
1004
1005/*
1006 * @tc.number    : ACE_Napi_Create_Bigint_Int64_0200
1007 * @tc.name      : Test the minimum value of napi_create_bigint_int64
1008 * @tc.desc      : 1.The environment engine is created
1009 *                 2.Set test variables
1010 *                 3.The function of napi_create_bigint_int64 is called
1011 *                 4.Return value of function is napi_ok
1012 *                 5.The function of napi_get_value_bigint_int64 is called
1013 *                 6.Check whether the obtained parameters meet requirements
1014 */
1015HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Int64_0200, testing::ext::TestSize.Level1)
1016{
1017    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Int64_0200 start";
1018    napi_env env = (napi_env)engine_;
1019
1020    int64_t testValue = INT64_MIN;
1021    napi_value result = nullptr;
1022
1023    ExpectCheckCall(napi_create_bigint_int64(env, testValue, &result));
1024    AssertCheckValueType(env, result, napi_bigint);
1025
1026    bool lossless = true;
1027    int64_t resultValue = INT_ZERO;
1028    ExpectCheckCall(napi_get_value_bigint_int64(env, result, &resultValue, &lossless));
1029
1030    EXPECT_EQ(true, lossless);
1031    EXPECT_EQ(resultValue, INT64_MIN);
1032    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Int64_0200 end";
1033}
1034
1035/*
1036 * @tc.number    : ACE_Napi_Create_Bigint_Int64_0300
1037 * @tc.name      : Test invalid environment for NAPi_CREATE_BIGINT_INT64
1038 * @tc.desc      : 1.Set test variables
1039 *                 2.The function of napi_create_bigint_int64 is called
1040 *                 3.Return value of function is napi_invalid_arg
1041 */
1042HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Int64_0300, testing::ext::TestSize.Level0)
1043{
1044    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Int64_0300 start";
1045    int64_t testValue = INT64_MAX;
1046    napi_value result = nullptr;
1047    napi_status ret = napi_ok;
1048
1049    ret = napi_create_bigint_int64(nullptr, testValue, &result);
1050
1051    EXPECT_EQ(ret, napi_invalid_arg);
1052    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Int64_0300 end";
1053}
1054
1055/*
1056 * @tc.number    : ACE_Napi_Create_Bigint_Int64_0400
1057 * @tc.name      : Test the normal value of napi_create_bigint_int64
1058 * @tc.desc      : 1.The environment engine is created
1059 *                 2.Set test variables
1060 *                 3.The function of napi_create_bigint_int64 is called
1061 *                 4.Return value of function is napi_ok
1062 *                 5.The function of napi_get_value_bigint_int64 is called
1063 *                 6.Check whether the obtained parameters meet requirements
1064 */
1065HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Int64_0400, testing::ext::TestSize.Level1)
1066{
1067    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Int64_0400 start";
1068    napi_env env = (napi_env)engine_;
1069
1070    int64_t testValue = INT64_VALUE;
1071    napi_value result = nullptr;
1072
1073    ExpectCheckCall(napi_create_bigint_int64(env, testValue, &result));
1074    AssertCheckValueType(env, result, napi_bigint);
1075
1076    bool lossless = true;
1077    int64_t resultValue = INT_ZERO;
1078    ExpectCheckCall(napi_get_value_bigint_int64(env, result, &resultValue, &lossless));
1079
1080    EXPECT_EQ(resultValue, testValue);
1081    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Int64_0400 end";
1082}
1083
1084/*
1085 * @tc.number    : ACE_Napi_Create_Bigint_Int64_0500
1086 * @tc.name      : Test the napi_create_bigint_int64 function return value nullptr
1087 * @tc.desc      : 1.The environment engine is created
1088 *                 2.Set test variables
1089 *                 3.The function of napi_create_bigint_int64 is called
1090 *                 4.Return value of function is napi_invalid_arg
1091 */
1092HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Int64_0500, testing::ext::TestSize.Level2)
1093{
1094    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Int64_0500 start";
1095    napi_env env = (napi_env)engine_;
1096
1097    int64_t testValue = INT64_VALUE;
1098    napi_status ret = napi_ok;
1099
1100    ret = napi_create_bigint_int64(env, testValue, nullptr);
1101
1102    EXPECT_EQ(ret, napi_invalid_arg);
1103
1104    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Int64_0500 end";
1105}
1106
1107/*
1108 * @tc.number    : ACE_Napi_Get_Value_Bigint_Int64_0100
1109 * @tc.name      : Test the maximum value of napi_get_value_bigint_int64
1110 * @tc.desc      : 1.The environment engine is created
1111 *                 2.Set test variables
1112 *                 3.The function of napi_create_bigint_int64 is called
1113 *                 4.Return value of function is napi_ok
1114 *                 5.The function of napi_get_value_bigint_int64 is called
1115 *                 6.Check whether the obtained parameters meet requirements
1116 */
1117HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Int64_0100, testing::ext::TestSize.Level1)
1118{
1119    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0100 start";
1120    napi_env env = (napi_env)engine_;
1121
1122    int64_t testValue = INT64_MAX;
1123    napi_value result = nullptr;
1124
1125    ExpectCheckCall(napi_create_bigint_int64(env, testValue, &result));
1126    AssertCheckValueType(env, result, napi_bigint);
1127
1128    bool lossless = true;
1129    int64_t resultValue = INT_ZERO;
1130    ExpectCheckCall(napi_get_value_bigint_int64(env, result, &resultValue, &lossless));
1131
1132    EXPECT_EQ(resultValue, INT64_MAX);
1133    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0100 end";
1134}
1135
1136/*
1137 * @tc.number    : ACE_Napi_Get_Value_Bigint_Int64_0200
1138 * @tc.name      : Test the minimum value of napi_get_value_bigint_int64
1139 * @tc.desc      : 1.The environment engine is created
1140 *                 2.Set test variables
1141 *                 3.The function of napi_create_bigint_int64 is called
1142 *                 4.Return value of function is napi_ok
1143 *                 5.The function of napi_get_value_bigint_int64 is called
1144 *                 6.Check whether the obtained parameters meet requirements
1145 */
1146HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Int64_0200, testing::ext::TestSize.Level1)
1147{
1148    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0200 start";
1149    napi_env env = (napi_env)engine_;
1150
1151    int64_t testValue = INT64_MIN;
1152    napi_value result = nullptr;
1153
1154    ExpectCheckCall(napi_create_bigint_int64(env, testValue, &result));
1155    AssertCheckValueType(env, result, napi_bigint);
1156
1157    bool lossless = true;
1158    int64_t resultValue = INT_ZERO;
1159    ExpectCheckCall(napi_get_value_bigint_int64(env, result, &resultValue, &lossless));
1160
1161    EXPECT_EQ(resultValue, INT64_MIN);
1162    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0200 end";
1163}
1164
1165/*
1166 * @tc.number    : ACE_Napi_Get_Value_Bigint_Int64_0300
1167 * @tc.name      : Test passing in an object that is not Napi_bigint
1168 * @tc.desc      : 1.The environment engine is created
1169 *                 2.Set test variables
1170 *                 3.The function of napi_create_string_utf16 is called
1171 *                 4.Return value of function is napi_ok
1172 *                 5.The function of napi_get_value_bigint_int64 is called
1173 *                 6.Return value of function is napi_bigint_expected
1174 */
1175HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Int64_0300, testing::ext::TestSize.Level2)
1176{
1177    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0300 start";
1178    napi_env env = (napi_env)engine_;
1179
1180    napi_status ret = napi_ok;
1181    char16_t testStr[] = u"system.test.content.bigint.abnormal";
1182    int testStrLength = static_cast<int>(std::char_traits<char16_t>::length(testStr));
1183    napi_value result = nullptr;
1184
1185    ExpectCheckCall(napi_create_string_utf16(env, testStr, testStrLength, &result));
1186
1187    bool lossless = true;
1188    int64_t resultValue = INT_ZERO;
1189    ret = napi_get_value_bigint_int64(env, result, &resultValue, &lossless);
1190
1191    EXPECT_EQ(ret, napi_bigint_expected);
1192    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0300 end";
1193}
1194
1195/*
1196 * @tc.number    : ACE_Napi_Get_Value_Bigint_Int64_0400
1197 * @tc.name      : Passed an invalid environment variable
1198 * @tc.desc      : 1.Set test variables
1199 *                 2.The function of napi_create_bigint_int64 is called
1200 *                 4.Return value of function is napi_ok
1201 *                 5.The function of napi_get_value_bigint_int64 is called
1202 *                 6.Return value of function is napi_invalid_arg
1203 */
1204HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Int64_0400, testing::ext::TestSize.Level2)
1205{
1206    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0400 start";
1207    napi_env env = (napi_env)engine_;
1208
1209    int64_t testValue = INT_ZERO;
1210    napi_value result = nullptr;
1211    napi_status ret = napi_ok;
1212
1213    ExpectCheckCall(napi_create_bigint_int64(env, testValue, &result));
1214    AssertCheckValueType(env, result, napi_bigint);
1215    bool lossless = true;
1216    int64_t resultValue = INT_ZERO;
1217
1218    ret = napi_get_value_bigint_int64(nullptr, result, &resultValue, &lossless);
1219
1220    EXPECT_EQ(ret, napi_invalid_arg);
1221    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0400 end";
1222}
1223
1224/*
1225 * @tc.number    : ACE_Napi_Get_Value_Bigint_Int64_0500
1226 * @tc.name      : Test the normal value of napi_get_value_bigint_int64
1227 * @tc.desc      : 1.The environment engine is created
1228 *                 2.Set test variables
1229 *                 3.The function of napi_create_bigint_int64 is called
1230 *                 4.Return value of function is napi_ok
1231 *                 5.The function of napi_get_value_bigint_int64 is called
1232 *                 6.Check whether the obtained parameters meet requirements
1233 */
1234HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Int64_0500, testing::ext::TestSize.Level1)
1235{
1236    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0500 start";
1237    napi_env env = (napi_env)engine_;
1238
1239    int64_t testValue = INT64_VALUE;
1240    napi_value result = nullptr;
1241
1242    ExpectCheckCall(napi_create_bigint_int64(env, testValue, &result));
1243    AssertCheckValueType(env, result, napi_bigint);
1244
1245    bool lossless = true;
1246    int64_t resultValue = INT_ZERO;
1247    ExpectCheckCall(napi_get_value_bigint_int64(env, result, &resultValue, &lossless));
1248
1249    EXPECT_EQ(resultValue, INT64_VALUE);
1250    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0500 end";
1251}
1252
1253/*
1254 * @tc.number    : ACE_Napi_Get_Value_Bigint_Int64_0600
1255 * @tc.name      : The result value returned by test napi_get_value_bigint_int64 is invalid
1256 * @tc.desc      : 1.The environment engine is created
1257 *                 2.Set test variables
1258 *                 3.The function of napi_create_bigint_int64 is called
1259 *                 4.Return value of function is napi_ok
1260 *                 5.The function of napi_get_value_bigint_int64 is called
1261 *                 6.Return value of function is napi_invalid_arg
1262 */
1263HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Int64_0600, testing::ext::TestSize.Level2)
1264{
1265    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0600 start";
1266    napi_env env = (napi_env)engine_;
1267
1268    int64_t testValue = INT64_VALUE;
1269    napi_value result = nullptr;
1270    napi_status ret = napi_ok;
1271
1272    ExpectCheckCall(napi_create_bigint_int64(env, testValue, &result));
1273    AssertCheckValueType(env, result, napi_bigint);
1274
1275    bool lossless = true;
1276    ret = napi_get_value_bigint_int64(env, result, nullptr, &lossless);
1277
1278    EXPECT_EQ(ret, napi_invalid_arg);
1279    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0600 end";
1280}
1281
1282/*
1283 * @tc.number    : ACE_Napi_Get_Value_Bigint_Int64_0700
1284 * @tc.name      : Test napi_get_value_bigint_int64 returns JS big integer is invalid
1285 * @tc.desc      : 1.The environment engine is created
1286 *                 2.Set test variables
1287 *                 3.The function of napi_create_bigint_int64 is called
1288 *                 4.Return value of function is napi_ok
1289 *                 5.The function of napi_get_value_bigint_int64 is called
1290 *                 6.Return value of function is napi_invalid_arg
1291 */
1292HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Int64_0700, testing::ext::TestSize.Level2)
1293{
1294    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0700 start";
1295    napi_env env = (napi_env)engine_;
1296
1297    int64_t testValue = INT64_VALUE;
1298    napi_value result = nullptr;
1299    napi_status ret = napi_ok;
1300
1301    ExpectCheckCall(napi_create_bigint_int64(env, testValue, &result));
1302    AssertCheckValueType(env, result, napi_bigint);
1303
1304    int64_t resultValue = INT_ZERO;
1305    ret = napi_get_value_bigint_int64(env, result, &resultValue, nullptr);
1306
1307    EXPECT_EQ(ret, napi_invalid_arg);
1308    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Int64_0700 end";
1309}
1310
1311/*
1312 * @tc.number    : ACE_Napi_Create_Bigint_Uint64_0100
1313 * @tc.name      : Test the maximum value of napi_create_bigint_uint64
1314 * @tc.desc      : 1.The environment engine is created
1315 *                 2.Set test variables
1316 *                 3.The function of napi_create_bigint_uint64 is called
1317 *                 4.Return value of function is napi_ok
1318 *                 5.The function of napi_get_value_bigint_uint64 is called
1319 *                 6.Check whether the obtained parameters meet requirements
1320 */
1321HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Uint64_0100, testing::ext::TestSize.Level1)
1322{
1323    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Uint64_0100 start";
1324    napi_env env = (napi_env)engine_;
1325
1326    uint64_t testValue = UINT64_MAX;
1327    napi_value result = nullptr;
1328
1329    ExpectCheckCall(napi_create_bigint_uint64(env, testValue, &result));
1330    AssertCheckValueType(env, result, napi_bigint);
1331
1332    bool lossless = false;
1333    uint64_t resultValue = INT_ZERO;
1334    ExpectCheckCall(napi_get_value_bigint_uint64(env, result, &resultValue, &lossless));
1335
1336    EXPECT_EQ(true, lossless);
1337    EXPECT_EQ(resultValue, testValue);
1338    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Uint64_0100 end";
1339}
1340
1341/*
1342 * @tc.number    : ACE_Napi_Create_Bigint_Uint64_0200
1343 * @tc.name      : Test the minimum value of napi_create_bigint_uint64
1344 * @tc.desc      : 1.The environment engine is created
1345 *                 2.Set test variables
1346 *                 3.The function of napi_create_bigint_uint64 is called
1347 *                 4.Return value of function is napi_ok
1348 *                 5.The function of napi_get_value_bigint_uint64 is called
1349 *                 6.Check whether the obtained parameters meet requirements
1350 */
1351HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Uint64_0200, testing::ext::TestSize.Level1)
1352{
1353    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Uint64_0200 start";
1354    napi_env env = (napi_env)engine_;
1355
1356    uint64_t testValue = INT_ZERO;
1357    napi_value result = nullptr;
1358
1359    ExpectCheckCall(napi_create_bigint_uint64(env, testValue, &result));
1360    AssertCheckValueType(env, result, napi_bigint);
1361
1362    bool lossless = true;
1363    uint64_t resultValue = INT_ONE;
1364    ExpectCheckCall(napi_get_value_bigint_uint64(env, result, &resultValue, &lossless));
1365
1366    EXPECT_EQ(resultValue, testValue);
1367    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Uint64_0200 end";
1368}
1369
1370/*
1371 * @tc.number    : ACE_Napi_Create_Bigint_Uint64_0300
1372 * @tc.name      : Passed an invalid environment variable
1373 * @tc.desc      : 1.Set test variables
1374 *                 2.The function of napi_create_bigint_uint64 is called
1375 *                 6.Return value of function is napi_invalid_arg
1376 */
1377HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Uint64_0300, testing::ext::TestSize.Level2)
1378{
1379    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Uint64_0300 start";
1380    uint64_t testValue = INT_ZERO;
1381    napi_value result = nullptr;
1382    napi_status ret = napi_ok;
1383
1384    ret = napi_create_bigint_uint64(nullptr, testValue, &result);
1385    EXPECT_EQ(ret, napi_invalid_arg);
1386    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Uint64_0300 end";
1387}
1388
1389/*
1390 * @tc.number    : ACE_Napi_Create_Bigint_Uint64_0400
1391 * @tc.name      : Test napi_create_bigint_uint64 Normal value
1392 * @tc.desc      : 1.The environment engine is created
1393 *                 2.Set test variables
1394 *                 3.The function of napi_create_bigint_uint64 is called
1395 *                 4.Return value of function is napi_ok
1396 *                 5.The function of napi_get_value_bigint_uint64 is called
1397 *                 6.Check whether the obtained parameters meet requirements
1398 */
1399HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Uint64_0400, testing::ext::TestSize.Level1)
1400{
1401    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Uint64_0400 start";
1402    napi_env env = (napi_env)engine_;
1403
1404    uint64_t testValue = UINT64_VALUE;
1405    napi_value result = nullptr;
1406
1407    ExpectCheckCall(napi_create_bigint_uint64(env, testValue, &result));
1408    AssertCheckValueType(env, result, napi_bigint);
1409
1410    bool lossless = true;
1411    uint64_t resultValue = INT_ONE;
1412    ExpectCheckCall(napi_get_value_bigint_uint64(env, result, &resultValue, &lossless));
1413
1414    EXPECT_EQ(resultValue, testValue);
1415    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Uint64_0400 end";
1416}
1417
1418/*
1419 * @tc.number    : ACE_Napi_Create_Bigint_Uint64_0500
1420 * @tc.name      : Test the napi_create_bigint_uint64 function return value nullptr
1421 * @tc.desc      : 1.The environment engine is created
1422 *                 2.Set test variables
1423 *                 3.The function of napi_create_bigint_uint64 is called
1424 *                 4.Return value of function is napi_invalid_arg
1425 */
1426HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Uint64_0500, testing::ext::TestSize.Level2)
1427{
1428    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Uint64_0500 start";
1429    napi_env env = (napi_env)engine_;
1430
1431    uint64_t testValue = UINT64_VALUE;
1432    napi_status ret = napi_ok;
1433
1434    ret = napi_create_bigint_uint64(env, testValue, nullptr);
1435
1436    EXPECT_EQ(ret, napi_invalid_arg);
1437    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Uint64_0500 end";
1438}
1439
1440/*
1441 * @tc.number    : ACE_Napi_Get_Value_Bigint_Uint64_0100
1442 * @tc.name      : Test the maximum value of napi_get_value_bigint_uint64
1443 * @tc.desc      : 1.The environment engine is created
1444 *                 2.Set test variables
1445 *                 3.The function of napi_create_bigint_uint64 is called
1446 *                 4.Return value of function is napi_ok
1447 *                 5.The function of napi_get_value_bigint_uint64 is called
1448 *                 6.Check whether the obtained parameters meet requirements
1449 */
1450HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Uint64_0100, testing::ext::TestSize.Level1)
1451{
1452    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0100 start";
1453    napi_env env = (napi_env)engine_;
1454
1455    uint64_t testValue = UINT64_MAX;
1456    napi_value result = nullptr;
1457
1458    ExpectCheckCall(napi_create_bigint_uint64(env, testValue, &result));
1459    AssertCheckValueType(env, result, napi_bigint);
1460
1461    bool lossless = true;
1462    uint64_t resultValue = INT_ZERO;
1463    ExpectCheckCall(napi_get_value_bigint_uint64(env, result, &resultValue, &lossless));
1464
1465    EXPECT_EQ(resultValue, UINT64_MAX);
1466    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0100 end";
1467}
1468
1469/*
1470 * @tc.number    : ACE_Napi_Get_Value_Bigint_Uint64_0200
1471 * @tc.name      : Test the maximum value of napi_get_value_bigint_uint64
1472 * @tc.desc      : 1.The environment engine is created
1473 *                 2.Set test variables
1474 *                 3.The function of napi_create_bigint_uint64 is called
1475 *                 4.Return value of function is napi_ok
1476 *                 5.The function of napi_get_value_bigint_uint64 is called
1477 *                 6.Check whether the obtained parameters meet requirements
1478 */
1479HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Uint64_0200, testing::ext::TestSize.Level1)
1480{
1481    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0200 start";
1482    napi_env env = (napi_env)engine_;
1483
1484    uint64_t testValue = INT_ZERO;
1485    napi_value result = nullptr;
1486
1487    ExpectCheckCall(napi_create_bigint_uint64(env, testValue, &result));
1488    AssertCheckValueType(env, result, napi_bigint);
1489
1490    bool lossless = true;
1491    uint64_t resultValue = INT_ZERO;
1492    ExpectCheckCall(napi_get_value_bigint_uint64(env, result, &resultValue, &lossless));
1493
1494    EXPECT_EQ(resultValue, testValue);
1495    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0200 end";
1496}
1497
1498/*
1499 * @tc.number    : ACE_Napi_Get_Value_Bigint_Uint64_0300
1500 * @tc.name      : Pass in an object that is not BigInt
1501 * @tc.desc      : 1.The environment engine is created
1502 *                 2.Set test variables
1503 *                 3.The function of napi_create_string_utf16 is called
1504 *                 4.Return value of function is napi_ok
1505 *                 5.The function of napi_get_value_bigint_uint64 is called
1506 *                 6.Return value of function is napi_bigint_expected
1507 */
1508HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Uint64_0300, testing::ext::TestSize.Level2)
1509{
1510    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0300 start";
1511    napi_env env = (napi_env)engine_;
1512
1513    napi_status ret = napi_ok;
1514    char16_t testStr[] = u"system.test.content.bigint.abnormal";
1515    int testStrLength = static_cast<int>(std::char_traits<char16_t>::length(testStr));
1516    napi_value result = nullptr;
1517
1518    ExpectCheckCall(napi_create_string_utf16(env, testStr, testStrLength, &result));
1519
1520    bool lossless = true;
1521    uint64_t resultValue = INT_ZERO;
1522    ret = napi_get_value_bigint_uint64(env, result, &resultValue, &lossless);
1523
1524    EXPECT_EQ(ret, napi_bigint_expected);
1525    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0300 end";
1526}
1527
1528/*
1529 * @tc.number    : ACE_Napi_Get_Value_Bigint_Uint64_0400
1530 * @tc.name      : Passed an invalid environment variable
1531 * @tc.desc      : 1.Set test variables
1532 *                 2.The function of napi_create_bigint_uint64 is called
1533 *                 4.Return value of function is napi_ok
1534 *                 5.The function of napi_get_value_bigint_uint64 is called
1535 *                 6.Return value of function is napi_invalid_arg
1536 */
1537HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Uint64_0400, testing::ext::TestSize.Level2)
1538{
1539    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0400 start";
1540    napi_env env = (napi_env)engine_;
1541
1542    uint64_t testValue = INT_ZERO;
1543    napi_value result = nullptr;
1544    napi_status ret = napi_ok;
1545    ExpectCheckCall(napi_create_bigint_uint64(env, testValue, &result));
1546    AssertCheckValueType(env, result, napi_bigint);
1547
1548    bool lossless = true;
1549    uint64_t resultValue = INT_ZERO;
1550    ret = napi_get_value_bigint_uint64(nullptr, result, &resultValue, &lossless);
1551
1552    EXPECT_EQ(ret, napi_invalid_arg);
1553    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0400 end";
1554}
1555
1556/*
1557 * @tc.number    : ACE_Napi_Get_Value_Bigint_Uint64_0500
1558 * @tc.name      : Test napi_get_value_bigint_uint64 Normal value
1559 * @tc.desc      : 1.The environment engine is created
1560 *                 2.Set test variables
1561 *                 3.The function of napi_create_bigint_uint64 is called
1562 *                 4.Return value of function is napi_ok
1563 *                 5.The function of napi_get_value_bigint_uint64 is called
1564 *                 6.Check whether the obtained parameters meet requirements
1565 */
1566HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Uint64_0500, testing::ext::TestSize.Level1)
1567{
1568    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0500 start";
1569    napi_env env = (napi_env)engine_;
1570
1571    uint64_t testValue = UINT64_VALUE;
1572    napi_value result = nullptr;
1573
1574    ExpectCheckCall(napi_create_bigint_uint64(env, testValue, &result));
1575    AssertCheckValueType(env, result, napi_bigint);
1576
1577    bool lossless = true;
1578    uint64_t resultValue = INT_ONE;
1579    ExpectCheckCall(napi_get_value_bigint_uint64(env, result, &resultValue, &lossless));
1580
1581    EXPECT_EQ(resultValue, (uint64_t)UINT64_VALUE);
1582    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0500 end";
1583}
1584
1585/*
1586 * @tc.number    : ACE_Napi_Get_Value_Bigint_Uint64_0600
1587 * @tc.name      : The result value returned by test napi_get_value_bigint_uint64 is invalid
1588 * @tc.desc      : 1.The environment engine is created
1589 *                 2.Set test variables
1590 *                 3.The function of napi_create_bigint_uint64 is called
1591 *                 4.Return value of function is napi_ok
1592 *                 5.The function of napi_get_value_bigint_uint64 is called
1593 *                 6.Return value of function is napi_invalid_arg
1594 */
1595HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Uint64_0600, testing::ext::TestSize.Level2)
1596{
1597    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0600 start";
1598    napi_env env = (napi_env)engine_;
1599
1600    uint64_t testValue = UINT64_VALUE;
1601    napi_value result = nullptr;
1602    napi_status ret = napi_ok;
1603
1604    ExpectCheckCall(napi_create_bigint_uint64(env, testValue, &result));
1605    AssertCheckValueType(env, result, napi_bigint);
1606
1607    bool lossless = true;
1608    ret = napi_get_value_bigint_uint64(env, result, nullptr, &lossless);
1609
1610    EXPECT_EQ(ret, napi_invalid_arg);
1611    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0600 end";
1612}
1613
1614/*
1615 * @tc.number    : ACE_Napi_Get_Value_Bigint_Uint64_0700
1616 * @tc.name      : Test napi_get_value_bigint_uint64 returns JS big integer is invalid
1617 * @tc.desc      : 1.The environment engine is created
1618 *                 2.Set test variables
1619 *                 3.The function of napi_create_bigint_uint64 is called
1620 *                 4.Return value of function is napi_ok
1621 *                 5.The function of napi_get_value_bigint_uint64 is called
1622 *                 6.Return value of function is napi_invalid_arg
1623 */
1624HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Uint64_0700, testing::ext::TestSize.Level2)
1625{
1626    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0700 start";
1627    napi_env env = (napi_env)engine_;
1628    napi_status ret = napi_ok;
1629    uint64_t testValue = UINT64_VALUE;
1630    napi_value result = nullptr;
1631
1632    ExpectCheckCall(napi_create_bigint_uint64(env, testValue, &result));
1633    AssertCheckValueType(env, result, napi_bigint);
1634
1635    uint64_t resultValue = INT_ONE;
1636    ret = napi_get_value_bigint_uint64(env, result, &resultValue, nullptr);
1637
1638    EXPECT_EQ(ret, napi_invalid_arg);
1639    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Uint64_0700 end";
1640}
1641
1642/*
1643 * @tc.number    : ACE_Napi_Create_Bigint_Words_0100
1644 * @tc.name      : Test the normal value of NAPi_CREATE_BIGINT_WORDS and the character bit is 0
1645 * @tc.desc      : 1.The environment engine is created
1646 *                 2.Set test variables
1647 *                 3.The function of napi_create_bigint_words is called
1648 *                 4.Return value of function is napi_ok
1649 *                 5.The function of napi_get_value_bigint_words is called
1650 *                 6.Check whether the obtained parameters meet requirements
1651 */
1652HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Words_0100, testing::ext::TestSize.Level1)
1653{
1654    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0100 start";
1655    napi_env env = (napi_env)engine_;
1656
1657    uint64_t words[] = { (uint64_t)16, (uint64_t)128, (uint64_t)56, (uint64_t)226 };
1658    int sign_bit = INT_ZERO;
1659    size_t word_count = INT_FOUR;
1660    napi_value result = nullptr;
1661
1662    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
1663
1664    int sign = INT_ZERO;
1665    uint64_t wordsOut[word_count];
1666    ExpectCheckCall(napi_get_value_bigint_words(env, result, &sign, &word_count, wordsOut));
1667
1668    EXPECT_EQ(sign_bit, sign);
1669    EXPECT_EQ(word_count, (size_t)INT_FOUR);
1670    for (size_t i = INT_ZERO; i < word_count; i++) {
1671        EXPECT_EQ(wordsOut[i], words[i]);
1672    }
1673    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0100 end";
1674}
1675
1676/*
1677 * @tc.number    : ACE_Napi_Create_Bigint_Words_0200
1678 * @tc.name      : Test the normal value of NAPi_CREATE_BIGINT_WORDS and the character bit is 1
1679 * @tc.desc      : 1.The environment engine is created
1680 *                 2.Set test variables
1681 *                 3.The function of napi_create_bigint_words is called
1682 *                 4.Return value of function is napi_ok
1683 *                 5.The function of napi_get_value_bigint_words is called
1684 *                 6.Check whether the obtained parameters meet requirements
1685 */
1686HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Words_0200, testing::ext::TestSize.Level1)
1687{
1688    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0200 start";
1689    napi_env env = (napi_env)engine_;
1690
1691    uint64_t words[] = { (uint64_t)16, (uint64_t)64, (uint64_t)28, (uint64_t)8 };
1692    int sign_bit = INT_ONE;
1693    size_t word_count = INT_FOUR;
1694    napi_value result = nullptr;
1695
1696    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
1697
1698    int sign = INT_ZERO;
1699    uint64_t wordsOut[word_count];
1700    ExpectCheckCall(napi_get_value_bigint_words(env, result, &sign, &word_count, wordsOut));
1701
1702    EXPECT_EQ(sign_bit, sign);
1703    EXPECT_EQ(word_count, INT_FOUR);
1704    for (size_t i = INT_ZERO; i < word_count; i++) {
1705        EXPECT_EQ(wordsOut[i], words[i]);
1706    }
1707    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0200 end";
1708}
1709
1710/*
1711 * @tc.number    : ACE_Napi_Create_Bigint_Words_0300
1712 * @tc.name      : Tests word_count for an invalid value of 0
1713 * @tc.desc      : 1.The environment engine is created
1714 *                 2.Set test variables
1715 *                 3.The function of napi_create_bigint_words is called
1716 *                 4.Return value of function is napi_invalid_arg
1717 */
1718HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Words_0300, testing::ext::TestSize.Level2)
1719{
1720    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0300 start";
1721    napi_env env = (napi_env)engine_;
1722
1723    int sign_bit = INT_ZERO;
1724    size_t word_count = INT_ZERO;
1725    napi_value result = nullptr;
1726    napi_status ret = napi_ok;
1727
1728    ret = napi_create_bigint_words(env, sign_bit, word_count, nullptr, &result);
1729
1730    EXPECT_EQ(ret, napi_invalid_arg);
1731    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0300 end";
1732}
1733
1734/*
1735 * @tc.number    : ACE_Napi_Create_Bigint_Words_0400
1736 * @tc.name      : Tests word_count for an invalid value of 0
1737 * @tc.desc      : 1.Set test variables
1738 *                 2.The function of napi_create_bigint_words is called
1739 *                 3.Return value of function is napi_invalid_arg
1740 */
1741HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Words_0400, testing::ext::TestSize.Level2)
1742{
1743    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0400 start";
1744    uint64_t words[] = { (uint64_t)128, (uint64_t)64, (uint64_t)66, (uint64_t)111 };
1745    int sign_bit = INT_ONE;
1746    size_t word_count = INT_FOUR;
1747    napi_value result = nullptr;
1748    napi_status ret = napi_ok;
1749
1750    ret = napi_create_bigint_words(nullptr, sign_bit, word_count, words, &result);
1751
1752    EXPECT_EQ(ret, napi_invalid_arg);
1753    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0400 end";
1754}
1755
1756/*
1757 * @tc.number    : ACE_Napi_Create_Bigint_Words_0500
1758 * @tc.name      : Test napi_create_bigint_words Enter 0 and the character bit is 1
1759 * @tc.desc      : 1.The environment engine is created
1760 *                 2.Set test variables
1761 *                 3.The function of napi_create_bigint_words is called
1762 *                 4.Return value of function is napi_ok
1763 *                 5.The function of napi_get_value_bigint_words is called
1764 *                 6.Check whether the obtained parameters meet requirements
1765 */
1766HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Words_0500, testing::ext::TestSize.Level2)
1767{
1768    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0500 start";
1769
1770    napi_env env = (napi_env)engine_;
1771
1772#ifdef FOR_JERRYSCRIPT_TEST
1773    uint64_t words[] = { (uint64_t)5, (uint64_t)10, (uint64_t)25, (uint64_t)25 };
1774#else
1775    uint64_t words[] = { (uint64_t)0, (uint64_t)0, (uint64_t)0, (uint64_t)0 };
1776#endif
1777    int sign_bit = INT_ZERO;
1778    size_t word_count = INT_FOUR;
1779    napi_value result = nullptr;
1780
1781    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
1782
1783    int sign;
1784    uint64_t wordsOut[word_count];
1785    ExpectCheckCall(napi_get_value_bigint_words(env, result, &sign, &word_count, wordsOut));
1786
1787    EXPECT_EQ(sign_bit, sign);
1788
1789#ifdef FOR_JERRYSCRIPT_TEST
1790    EXPECT_EQ(word_count, INT_FOUR);
1791#else
1792    EXPECT_EQ(word_count, INT_ONE);
1793#endif
1794    for (size_t i = INT_ZERO; i < word_count; i++) {
1795        EXPECT_EQ(wordsOut[i], words[i]);
1796    }
1797    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0500 end";
1798}
1799
1800/*
1801 * @tc.number    : ACE_Napi_Create_Bigint_Words_0600
1802 * @tc.name      : Test napi_create_bigint_words Combined data. The value is 1 character
1803 * @tc.desc      : 1.The environment engine is created
1804 *                 2.Set test variables
1805 *                 3.The function of napi_create_bigint_words is called
1806 *                 4.Return value of function is napi_ok
1807 *                 5.The function of napi_get_value_bigint_words is called
1808 *                 6.Check whether the obtained parameters meet requirements
1809 */
1810HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Words_0600, testing::ext::TestSize.Level2)
1811{
1812    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0600 start";
1813    napi_env env = (napi_env)engine_;
1814
1815    uint64_t words[] = { (uint64_t)1, (uint64_t)0, (uint64_t)0, (uint64_t)0 };
1816    int sign_bit = INT_ONE;
1817    size_t word_count = INT_FOUR;
1818    napi_value result = nullptr;
1819
1820    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
1821
1822    int sign;
1823    uint64_t wordsOut[word_count];
1824    ExpectCheckCall(napi_get_value_bigint_words(env, result, &sign, &word_count, wordsOut));
1825
1826    EXPECT_EQ(sign_bit, sign);
1827    EXPECT_EQ(word_count, INT_ONE);
1828    for (size_t i = INT_ZERO; i < word_count; i++) {
1829        EXPECT_EQ(wordsOut[i], words[i]);
1830    }
1831    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0600 end";
1832}
1833
1834/*
1835 * @tc.number    : ACE_Napi_Create_Bigint_Words_0700
1836 * @tc.name      : Test napi_create_bigint_words Combined data. The value is 1 character
1837 * @tc.desc      : 1.The environment engine is created
1838 *                 2.Set test variables
1839 *                 3.The function of napi_create_bigint_words is called
1840 *                 4.Return value of function is napi_ok
1841 *                 5.The function of napi_get_value_bigint_words is called
1842 *                 6.Check whether the obtained parameters meet requirements
1843 */
1844HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Words_0700, testing::ext::TestSize.Level2)
1845{
1846    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0700 start";
1847    napi_env env = (napi_env)engine_;
1848
1849    uint64_t words[] = { (uint64_t)0, (uint64_t)0, (uint64_t)0, (uint64_t)1 };
1850    int sign_bit = INT_ONE;
1851    size_t word_count = INT_FOUR;
1852    napi_value result = nullptr;
1853
1854    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
1855
1856    int sign;
1857    uint64_t wordsOut[word_count];
1858    ExpectCheckCall(napi_get_value_bigint_words(env, result, &sign, &word_count, wordsOut));
1859
1860    EXPECT_EQ(sign_bit, sign);
1861    EXPECT_EQ(word_count, INT_FOUR);
1862    for (size_t i = INT_ZERO; i < word_count; i++) {
1863        EXPECT_EQ(wordsOut[i], words[i]);
1864    }
1865    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0700 end";
1866}
1867
1868/*
1869 * @tc.number    : ACE_Napi_Create_Bigint_Words_0800
1870 * @tc.name      : Tests the maximum number of words entered in napi_create_BIGINt_words and the sign bit is 1
1871 * @tc.desc      : 1.The environment engine is created
1872 *                 2.Set test variables
1873 *                 3.The function of napi_create_bigint_words is called
1874 *                 4.Return value of function is napi_ok
1875 *                 5.The function of napi_get_value_bigint_words is called
1876 *                 6.Check whether the obtained parameters meet requirements
1877 */
1878HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Words_0800, testing::ext::TestSize.Level1)
1879{
1880    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0800 start";
1881    napi_env env = (napi_env)engine_;
1882
1883    uint64_t words[] = { 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF };
1884    int sign_bit = INT_ONE;
1885    size_t word_count = INT_FOUR;
1886    napi_value result = nullptr;
1887
1888    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
1889
1890    int sign = INT_ZERO;
1891    uint64_t wordsOut[word_count];
1892    ExpectCheckCall(napi_get_value_bigint_words(env, result, &sign, &word_count, wordsOut));
1893
1894    EXPECT_EQ(sign_bit, sign);
1895    EXPECT_EQ(word_count, INT_FOUR);
1896    for (size_t i = INT_ZERO; i < word_count; i++) {
1897        EXPECT_EQ(wordsOut[i], words[i]);
1898    }
1899    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0800 end";
1900}
1901
1902/*
1903 * @tc.number    : ACE_Napi_Create_Bigint_Words_0900
1904 * @tc.name      : Test the normal value of NAPi_CREATE_BIGINT_WORDS,
1905 *                  the character bit is 0, and the return value is empty.
1906 * @tc.desc      : 1.The environment engine is created.
1907 *                 2.Set test variables.
1908 *                 3.The function of napi_create_bigint_words is called.
1909 *                 4.Return value of function is napi_invalid_arg.
1910 */
1911HWTEST_F(NativeEngineTest, ACE_Napi_Create_Bigint_Words_0900, testing::ext::TestSize.Level2)
1912{
1913    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0900 start";
1914    napi_env env = (napi_env)engine_;
1915
1916    uint64_t words[] = { (uint64_t)16, (uint64_t)64, (uint64_t)28, (uint64_t)8 };
1917    int sign_bit = INT_ONE;
1918    size_t word_count = INT_FOUR;
1919    napi_status ret = napi_ok;
1920
1921    ret = napi_create_bigint_words(env, sign_bit, word_count, words, nullptr);
1922
1923    EXPECT_EQ(ret, napi_invalid_arg);
1924    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0900 end";
1925}
1926
1927/*
1928 * @tc.number    : ACE_Napi_Get_Value_Bigint_Words_0100
1929 * @tc.name      : Test the normal value of napi_get_value_bigint_words and the character bit is 0
1930 * @tc.desc      : 1.The environment engine is created
1931 *                 2.Set test variables
1932 *                 3.The function of napi_create_bigint_words is called
1933 *                 4.Return value of function is napi_ok
1934 *                 5.The function of napi_get_value_bigint_words is called
1935 *                 6.Check whether the obtained parameters meet requirements
1936 */
1937HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Words_0100, testing::ext::TestSize.Level1)
1938{
1939    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0100 start";
1940    napi_env env = (napi_env)engine_;
1941
1942    uint64_t words[] = { 8, 16, 34, 45, 66 };
1943    int sign_bit = INT_ZERO;
1944    size_t word_count = INT_FIVE;
1945    napi_value result = nullptr;
1946
1947    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
1948
1949    int sign;
1950    uint64_t wordsOut[word_count];
1951    ExpectCheckCall(napi_get_value_bigint_words(env, result, &sign, &word_count, wordsOut));
1952
1953    EXPECT_EQ(sign_bit, sign);
1954    EXPECT_EQ(word_count, INT_FIVE);
1955    for (size_t i = INT_ZERO; i < word_count; i++) {
1956        EXPECT_EQ(wordsOut[i], words[i]);
1957    }
1958    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0100 end";
1959}
1960
1961/*
1962 * @tc.number    : ACE_Napi_Get_Value_Bigint_Words_0200
1963 * @tc.name      : Test the normal value of napi_get_value_bigint_words and the character bit is 1
1964 * @tc.desc      : 1.The environment engine is created
1965 *                 2.Set test variables
1966 *                 3.The function of napi_create_bigint_words is called
1967 *                 4.Return value of function is napi_ok
1968 *                 5.The function of napi_get_value_bigint_words is called
1969 *                 6.Check whether the obtained parameters meet requirements
1970 */
1971HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Words_0200, testing::ext::TestSize.Level1)
1972{
1973    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0200 start";
1974    napi_env env = (napi_env)engine_;
1975
1976    uint64_t words[] = { (uint64_t)12, (uint64_t)34, (uint64_t)56, 0x000000FF98765432 };
1977    int sign_bit = INT_ONE;
1978    size_t word_count = INT_FOUR;
1979    napi_value result = nullptr;
1980
1981    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
1982
1983    int sign;
1984    uint64_t wordsOut[word_count];
1985    ExpectCheckCall(napi_get_value_bigint_words(env, result, &sign, &word_count, wordsOut));
1986
1987    EXPECT_EQ(sign_bit, sign);
1988    EXPECT_EQ(word_count, INT_FOUR);
1989    for (size_t i = INT_ZERO; i < word_count; i++) {
1990        EXPECT_EQ(wordsOut[i], words[i]);
1991    }
1992    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0200 end";
1993}
1994
1995/*
1996 * @tc.number    : ACE_Napi_Get_Value_Bigint_Words_0300
1997 * @tc.name      : Tests word_count for an invalid value of 1
1998 * @tc.desc      : 1.The environment engine is created
1999 *                 2.Set test variables
2000 *                 3.The function of napi_create_bigint_int64 is called
2001 *                 4.Return value of function is napi_ok
2002 *                 5.The function of napi_get_value_bigint_words is called
2003 *                 6.Return value of function is napi_object_expected
2004 */
2005HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Words_0300, testing::ext::TestSize.Level2)
2006{
2007    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0300 start";
2008    napi_env env = (napi_env)engine_;
2009    size_t word_count = INT_FOUR;
2010    napi_value result = nullptr;
2011    napi_status ret = napi_ok;
2012    char16_t testStr[] = u"system.test.content.bigint.abnormal";
2013    int testStrLength = static_cast<int>(std::char_traits<char16_t>::length(testStr));
2014
2015    ExpectCheckCall(napi_create_string_utf16(env, testStr, testStrLength, &result));
2016    int sign;
2017    uint64_t wordsOut[word_count];
2018
2019    ret = napi_get_value_bigint_words(env, result, &sign, &word_count, wordsOut);
2020
2021    EXPECT_EQ(ret, napi_object_expected);
2022    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0300 end";
2023}
2024
2025/*
2026 * @tc.number    : ACE_Napi_Get_Value_Bigint_Words_0400
2027 * @tc.name      : Passed an invalid environment variable
2028 * @tc.desc      : 1.Set test variables
2029 *                 2.The function of napi_create_bigint_words is called
2030 *                 3.Return value of function is napi_ok
2031 *                 4.The function of napi_get_value_bigint_words is called
2032 *                 5.Return value of function is napi_invalid_arg
2033 */
2034HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Words_0400, testing::ext::TestSize.Level2)
2035{
2036    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0400 start";
2037    napi_env env = (napi_env)engine_;
2038
2039    uint64_t words[] = { (uint64_t)13, (uint64_t)84, 0x00FF98765432, (uint64_t)254 };
2040    int sign_bit = INT_ONE;
2041    size_t word_count = INT_FOUR;
2042    napi_value result = nullptr;
2043    napi_status ret = napi_ok;
2044
2045    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
2046
2047    int sign;
2048    uint64_t wordsOut[word_count];
2049
2050    ret = napi_get_value_bigint_words(nullptr, result, &sign, &word_count, wordsOut);
2051
2052    EXPECT_EQ(ret, napi_invalid_arg);
2053    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0400 end";
2054}
2055
2056/*
2057 * @tc.number    : ACE_Napi_Get_Value_Bigint_Words_0500
2058 * @tc.name      : Test napi_get_value_bigint_words Enter 0 and the character bit is 1
2059 * @tc.desc      : 1.The environment engine is created
2060 *                 2.Set test variables
2061 *                 3.The function of napi_create_bigint_words is called
2062 *                 4.Return value of function is napi_ok
2063 *                 5.The function of napi_get_value_bigint_words is called
2064 *                 6.Check whether the obtained parameters meet requirements
2065 */
2066HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Words_0500, testing::ext::TestSize.Level2)
2067{
2068    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0500 start";
2069    napi_env env = (napi_env)engine_;
2070#ifdef FOR_JERRYSCRIPT_TEST
2071    uint64_t words[] = { (uint64_t)5, (uint64_t)10, (uint64_t)15, (uint64_t)20 };
2072#else
2073    uint64_t words[] = { (uint64_t)0, (uint64_t)0, (uint64_t)0, (uint64_t)0 };
2074#endif
2075
2076    int sign_bit = INT_ZERO;
2077    size_t word_count = INT_FOUR;
2078    napi_value result = nullptr;
2079
2080    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
2081
2082    int sign;
2083    uint64_t wordsOut[word_count];
2084    ExpectCheckCall(napi_get_value_bigint_words(env, result, &sign, &word_count, wordsOut));
2085
2086    EXPECT_EQ(INT_ZERO, sign);
2087#ifdef FOR_JERRYSCRIPT_TEST
2088    EXPECT_EQ(word_count, INT_FOUR);
2089#else
2090    EXPECT_EQ(word_count, INT_ONE);
2091#endif
2092
2093    for (size_t i = INT_ZERO; i < word_count; i++) {
2094        EXPECT_EQ(wordsOut[i], words[i]);
2095    }
2096    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0500 end";
2097}
2098
2099/*
2100 * @tc.number    : ACE_Napi_Get_Value_Bigint_Words_0600
2101 * @tc.name      : Test napi_get_value_bigint_words Combined data. The value is 0 character
2102 * @tc.desc      : 1.The environment engine is created
2103 *                 2.Set test variables
2104 *                 3.The function of napi_create_bigint_words is called
2105 *                 4.Return value of function is napi_ok
2106 *                 5.The function of napi_get_value_bigint_words is called
2107 *                 6.Check whether the obtained parameters meet requirements
2108 */
2109HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Words_0600, testing::ext::TestSize.Level2)
2110{
2111    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0600 start";
2112    napi_env env = (napi_env)engine_;
2113
2114    uint64_t words[] = { (uint64_t)1, (uint64_t)0, (uint64_t)0, (uint64_t)0 };
2115    int sign_bit = INT_ZERO;
2116    size_t word_count = INT_FOUR;
2117    napi_value result = nullptr;
2118
2119    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
2120
2121    int sign;
2122    uint64_t wordsOut[word_count];
2123    ExpectCheckCall(napi_get_value_bigint_words(env, result, &sign, &word_count, wordsOut));
2124
2125    EXPECT_EQ(sign_bit, sign);
2126    EXPECT_EQ(word_count, INT_ONE);
2127    for (size_t i = INT_ZERO; i < word_count; i++) {
2128        EXPECT_EQ(wordsOut[i], words[i]);
2129    }
2130    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0600 end";
2131}
2132
2133/*
2134 * @tc.number    : ACE_Napi_Get_Value_Bigint_Words_0700
2135 * @tc.name      : Test napi_get_value_bigint_words Combined data. The value is 0 character
2136 * @tc.desc      : 1.The environment engine is created
2137 *                 2.Set test variables
2138 *                 3.The function of napi_create_bigint_words is called
2139 *                 4.Return value of function is napi_ok
2140 *                 5.The function of napi_get_value_bigint_words is called
2141 *                 6.Check whether the obtained parameters meet requirements
2142 */
2143HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Words_0700, testing::ext::TestSize.Level2)
2144{
2145    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0700 start";
2146    napi_env env = (napi_env)engine_;
2147
2148    uint64_t words[] = { (uint64_t)0, (uint64_t)0, (uint64_t)0, (uint64_t)1 };
2149    int sign_bit = INT_ZERO;
2150    size_t word_count = INT_FOUR;
2151    napi_value result = nullptr;
2152
2153    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
2154
2155    int sign;
2156    uint64_t wordsOut[word_count];
2157    ExpectCheckCall(napi_get_value_bigint_words(env, result, &sign, &word_count, wordsOut));
2158
2159    EXPECT_EQ(sign_bit, sign);
2160    EXPECT_EQ(word_count, INT_FOUR);
2161    for (size_t i = INT_ZERO; i < word_count; i++) {
2162        EXPECT_EQ(wordsOut[i], words[i]);
2163    }
2164    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0700 end";
2165}
2166
2167/*
2168 * @tc.number    : ACE_Napi_Get_Value_Bigint_Words_0800
2169 * @tc.name      : Tests the maximum number of words entered in napi_create_BIGINt_words and the sign bit is 0
2170 * @tc.desc      : 1.The environment engine is created
2171 *                 2.Set test variables
2172 *                 3.The function of napi_create_bigint_words is called
2173 *                 4.Return value of function is napi_ok
2174 *                 5.The function of napi_get_value_bigint_words is called
2175 *                 6.Check whether the obtained parameters meet requirements
2176 */
2177HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Words_0800, testing::ext::TestSize.Level1)
2178{
2179    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Bigint_Words_0800 start";
2180    napi_env env = (napi_env)engine_;
2181
2182    uint64_t words[] = { 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF };
2183    int sign_bit = INT_ZERO;
2184    size_t word_count = INT_FOUR;
2185    napi_value result = nullptr;
2186
2187    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
2188
2189    int sign = INT_ONE;
2190    uint64_t wordsOut[word_count];
2191    ExpectCheckCall(napi_get_value_bigint_words(env, result, &sign, &word_count, wordsOut));
2192
2193    EXPECT_EQ(sign_bit, sign);
2194    EXPECT_EQ(word_count, INT_FOUR);
2195    for (size_t i = INT_ZERO; i < word_count; i++) {
2196        EXPECT_EQ(wordsOut[i], words[i]);
2197    }
2198    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0800 end";
2199}
2200
2201/*
2202 * @tc.number    : ACE_Napi_Get_Value_Bigint_Words_0900
2203 * @tc.name      : Test napi_get_value_bigint_words parameter value input is invalid
2204 * @tc.desc      : 1.The environment engine is created
2205 *                 2.Set test variables
2206 *                 3.The function of napi_create_bigint_words is called
2207 *                 4.Return value of function is napi_ok
2208 *                 5.The function of napi_get_value_bigint_words is called
2209 *                 6.Return value of function is napi_invalid_arg
2210 */
2211HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Words_0900, testing::ext::TestSize.Level2)
2212{
2213    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0900 start";
2214    napi_env env = (napi_env)engine_;
2215
2216    uint64_t words[] = { (uint64_t)1, (uint64_t)20, (uint64_t)64, (uint64_t)88 };
2217    int sign_bit = INT_ZERO;
2218    size_t word_count = INT_FOUR;
2219    napi_value result = nullptr;
2220
2221    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
2222
2223    int sign;
2224    uint64_t wordsOut[word_count];
2225    napi_status ret = napi_get_value_bigint_words(env, nullptr, &sign, &word_count, wordsOut);
2226
2227    EXPECT_EQ(ret, napi_invalid_arg);
2228    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_0900 end";
2229}
2230
2231/*
2232 * @tc.number    : ACE_Napi_Get_Value_Bigint_Words_1000
2233 * @tc.name      : Test napi_get_value_bigint_words returns the sign parameter sign_bit is invalid
2234 * @tc.desc      : 1.The environment engine is created
2235 *                 2.Set test variables
2236 *                 3.The function of napi_create_bigint_words is called
2237 *                 4.Return value of function is napi_ok
2238 *                 5.The function of napi_get_value_bigint_words is called
2239 *                 6.Return value of function is napi_invalid_arg
2240 */
2241HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Words_1000, testing::ext::TestSize.Level2)
2242{
2243    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_1000 start";
2244    napi_env env = (napi_env)engine_;
2245
2246    uint64_t words[] = { (uint64_t)1, (uint64_t)20, (uint64_t)64, (uint64_t)88 };
2247    int sign_bit = INT_ZERO;
2248    size_t word_count = INT_FOUR;
2249    napi_value result = nullptr;
2250
2251    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
2252
2253    uint64_t wordsOut[word_count];
2254    napi_status ret = napi_get_value_bigint_words(env, result, nullptr, &word_count, wordsOut);
2255
2256    EXPECT_EQ(ret, napi_invalid_arg);
2257    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_1000 end";
2258}
2259
2260/*
2261 * @tc.number    : ACE_Napi_Get_Value_Bigint_Words_1100
2262 * @tc.name      : Test that the sign parameter sign_bit returned by napi_get_value_bigint_words invalid
2263 * @tc.desc      : 1.The environment engine is created
2264 *                 2.Set test variables
2265 *                 3.The function of napi_create_bigint_words is called
2266 *                 4.Return value of function is napi_ok
2267 *                 5.The function of napi_get_value_bigint_words is called
2268 *                 6.Return value of function is napi_invalid_arg
2269 */
2270HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Words_1100, testing::ext::TestSize.Level2)
2271{
2272    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_1100 start";
2273    napi_env env = (napi_env)engine_;
2274
2275    uint64_t words[] = { (uint64_t)1, (uint64_t)20, (uint64_t)64, (uint64_t)88 };
2276    int sign_bit = INT_ZERO;
2277    size_t word_count = INT_FOUR;
2278    napi_value result = nullptr;
2279
2280    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
2281
2282    int sign;
2283    uint64_t wordsOut[word_count];
2284    napi_status ret = napi_get_value_bigint_words(env, result, &sign, nullptr, wordsOut);
2285
2286    EXPECT_EQ(ret, napi_invalid_arg);
2287    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_1100 end";
2288}
2289
2290/*
2291 * @tc.number    : ACE_Napi_Get_Value_Bigint_Words_1200
2292 * @tc.name      : Test that the parameter words of the data returned by napi_get_value_bigint_words invalid
2293 * @tc.desc      : 1.The environment engine is created
2294 *                 2.Set test variables
2295 *                 3.The function of napi_create_bigint_words is called
2296 *                 4.Return value of function is napi_ok
2297 *                 5.The function of napi_get_value_bigint_words is called
2298 *                 6.Return value of function is napi_invalid_arg
2299 */
2300HWTEST_F(NativeEngineTest, ACE_Napi_Get_Value_Bigint_Words_1200, testing::ext::TestSize.Level2)
2301{
2302    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_1200 start";
2303    napi_env env = (napi_env)engine_;
2304
2305    uint64_t words[] = { (uint64_t)1, (uint64_t)20, (uint64_t)64, (uint64_t)88 };
2306    int sign_bit = INT_ZERO;
2307    size_t word_count = INT_FOUR;
2308    napi_value result = nullptr;
2309
2310    ExpectCheckCall(napi_create_bigint_words(env, sign_bit, word_count, words, &result));
2311
2312    int sign;
2313    napi_status ret = napi_get_value_bigint_words(env, result, &sign, &word_count, nullptr);
2314
2315    EXPECT_EQ(ret, napi_invalid_arg);
2316    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Value_Bigint_Words_1200 end";
2317}
2318#endif // (defined(FOR_JERRYSCRIPT_TEST)) &&  (JERRY_API_MINOR_VERSION <= 3)
2319/**
2320 * @tc.number    : ACE_Napi_Detach_Arraybuffer_0100
2321 * @tc.name      : The parameter is valid, the parameter is input to the buffer object, and the test is confirmed.
2322 * @tc.desc      : 1. Set up the env environment.
2323 *                 2. create arraybuffer.
2324 *                 3. detach arraybuffer.
2325 *                 4. Verify napi_detach_arraybuffer.
2326 */
2327HWTEST_F(NativeEngineTest, ACE_Napi_Detach_Arraybuffer_0100, testing::ext::TestSize.Level1)
2328{
2329    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0100 start";
2330
2331    napi_env env = (napi_env)engine_;
2332
2333    void* arrayBufferPtr = nullptr;
2334    napi_value arrayBuffer = nullptr;
2335    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
2336    napi_status verification = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
2337
2338    EXPECT_EQ(verification, napi_ok);
2339    size_t compareSize = ARRAYBUFFER_SIZE_NULL;
2340    napi_status result = napi_get_arraybuffer_info(env, arrayBuffer, &arrayBufferPtr, &compareSize);
2341
2342    EXPECT_EQ(compareSize, ARRAYBUFFER_SIZE);
2343    EXPECT_EQ(result, napi_ok);
2344    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0100 create arraybuffer complete";
2345
2346    napi_status output = napi_detach_arraybuffer(env, arrayBuffer);
2347
2348    bool out = false;
2349    napi_is_detached_arraybuffer(env, arrayBuffer, &out);
2350    EXPECT_TRUE(out);
2351    EXPECT_EQ(output, napi_ok);
2352
2353    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0100 end";
2354}
2355
2356/**
2357 * @tc.number    : ACE_Napi_Detach_Arraybuffer_0200
2358 * @tc.name      : The parameter is invalid, the parameter arraybuffer input non-buffer object, test and confirm.
2359 * @tc.desc      : 1. Set up the env environment.
2360 *                 2. create buffer
2361 *                 3. detach buffer
2362 *                 4. Verify napi_detach_arraybuffer.
2363 */
2364HWTEST_F(NativeEngineTest, ACE_Napi_Detach_Arraybuffer_0200, testing::ext::TestSize.Level2)
2365{
2366    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0200 start";
2367
2368    napi_env env = (napi_env)engine_;
2369
2370    napi_value Buffer = nullptr;
2371    void* BufferPtr = nullptr;
2372    size_t BufferSize = ARRAYBUFFER_SIZE;
2373    napi_status verification = napi_create_buffer(env, BufferSize, &BufferPtr, &Buffer);
2374
2375    EXPECT_EQ(verification, napi_ok);
2376    EXPECT_NE(BufferPtr, nullptr);
2377    EXPECT_EQ(BufferSize, ARRAYBUFFER_SIZE);
2378    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0200 create buffer complete";
2379
2380    napi_status result = napi_detach_arraybuffer(env, Buffer);
2381
2382    EXPECT_NE(BufferPtr, nullptr);
2383    EXPECT_EQ(result, napi_invalid_arg);
2384
2385    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0200 end";
2386}
2387
2388/**
2389 * @tc.number    : ACE_Napi_Detach_Arraybuffer_0300
2390 * @tc.name      : The parameter is invalid, the parameter arraybuffer input buffer object, test to confirm.
2391 * @tc.desc      : 1. Set up the env environment.
2392 *                 2. create arraybuffer.
2393 *                 3. detach arraybuffer.
2394 *                 4. Verify napi_detach_arraybuffer.
2395 */
2396HWTEST_F(NativeEngineTest, ACE_Napi_Detach_Arraybuffer_0300, testing::ext::TestSize.Level2)
2397{
2398    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0300 start";
2399
2400    napi_env env = (napi_env)engine_;
2401
2402    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
2403    void* arrayBufferPtr = nullptr;
2404    napi_value arrayBuffer = nullptr;
2405    napi_status verification = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
2406
2407    EXPECT_EQ(verification, napi_ok);
2408    size_t compareSize = ARRAYBUFFER_SIZE_NULL;
2409    napi_status result = napi_get_arraybuffer_info(env, arrayBuffer, &arrayBufferPtr, &compareSize);
2410
2411    EXPECT_EQ(compareSize, ARRAYBUFFER_SIZE);
2412    EXPECT_EQ(result, napi_ok);
2413    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0300 create arraybuffer complete";
2414
2415    napi_status output = napi_detach_arraybuffer(nullptr, arrayBuffer);
2416
2417    EXPECT_EQ(arrayBufferSize, ARRAYBUFFER_SIZE);
2418    EXPECT_EQ(output, napi_invalid_arg);
2419
2420    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0300 end";
2421}
2422
2423/**
2424 * @tc.number    : ACE_Napi_Detach_Arraybuffer_0400
2425 * @tc.name      : The parameter is invalid, the parameter arraybuffer input date object, test to confirm.
2426 * @tc.desc      : 1. Set up the env environment.
2427 *                 2. create arraybuffer.
2428 *                 3. detach arraybuffer.
2429 *                 4. Verify napi_detach_arraybuffer.
2430 */
2431HWTEST_F(NativeEngineTest, ACE_Napi_Detach_Arraybuffer_0400, testing::ext::TestSize.Level1)
2432{
2433    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0400 start";
2434
2435    napi_env env = (napi_env)engine_;
2436
2437    double time = CREATE_DATE_TIME;
2438    napi_value result = nullptr;
2439    napi_status verification = napi_create_date(env, time, &result);
2440
2441    EXPECT_EQ(verification, napi_ok);
2442    EXPECT_NE(result, nullptr);
2443    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0400 create date complete";
2444
2445    napi_status ret = napi_detach_arraybuffer(env, result);
2446
2447    EXPECT_NE(result, nullptr);
2448    EXPECT_EQ(ret, napi_invalid_arg);
2449
2450    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0400 end";
2451}
2452
2453/**
2454 * @tc.number    : ACE_Napi_Detach_Arraybuffer_0500
2455 * @tc.name      : The parameter is invalid, the parameter arraybuffer input is empty, test to confirm.
2456 * @tc.desc      : 1. Set up the env environment.
2457 *                 2. detach arraybuffer.
2458 *                 3. Verify napi_detach_arraybuffer.
2459 */
2460HWTEST_F(NativeEngineTest, ACE_Napi_Detach_Arraybuffer_0500, testing::ext::TestSize.Level2)
2461{
2462    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0500 start";
2463
2464    napi_env env = (napi_env)engine_;
2465    napi_status result = napi_detach_arraybuffer(env, nullptr);
2466
2467    EXPECT_EQ(result, napi_invalid_arg);
2468
2469    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0500 end";
2470}
2471
2472/**
2473 * @tc.number    : ACE_Napi_Detach_Arraybuffer_0600
2474 * @tc.name      : The parameter is invalid, the parameter arraybuffer input is Detached arraybuffer,
2475 *                 test to confirm.
2476 * @tc.desc      : 1. Set up the env environment.
2477 *                 2. detach arraybuffer.
2478 *                 3. Verify napi_detach_arraybuffer.
2479 */
2480HWTEST_F(NativeEngineTest, ACE_Napi_Detach_Arraybuffer_0600, testing::ext::TestSize.Level2)
2481{
2482    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0600 start";
2483
2484    napi_env env = (napi_env)engine_;
2485    void* arrayBufferPtr = nullptr;
2486    napi_value arrayBuffer = nullptr;
2487    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
2488    napi_status verification = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
2489
2490    EXPECT_EQ(verification, napi_ok);
2491    size_t compareSize = ARRAYBUFFER_SIZE_NULL;
2492    napi_status result = napi_get_arraybuffer_info(env, arrayBuffer, &arrayBufferPtr, &compareSize);
2493
2494    EXPECT_EQ(compareSize, ARRAYBUFFER_SIZE);
2495    EXPECT_EQ(result, napi_ok);
2496    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0100 create arraybuffer complete";
2497
2498    napi_status output = napi_detach_arraybuffer(env, arrayBuffer);
2499
2500    bool out = false;
2501    napi_status verificationCp = napi_is_detached_arraybuffer(env, arrayBuffer, &out);
2502
2503    EXPECT_EQ(verificationCp, napi_ok);
2504    EXPECT_TRUE(out);
2505    EXPECT_EQ(output, napi_ok);
2506
2507    napi_status outcompare = napi_detach_arraybuffer(env, arrayBuffer);
2508    EXPECT_EQ(outcompare, napi_detachable_arraybuffer_expected);
2509
2510    GTEST_LOG_(INFO) << "ACE_Napi_Detach_Arraybuffer_0600 start";
2511}
2512
2513/**
2514 * @tc.number    : ACE_Napi_Is_Detached_Arraybuffer_0100
2515 * @tc.name      : The parameter is valid, the parameter arraybuffer input buffer object, test to confirm.
2516 * @tc.desc      : 1. Set up the env environment.
2517 *                 2. create arraybuffer.
2518 *                 3. detach arraybuffer.
2519 *                 4. Verify napi_is_detached_arraybuffer.
2520 */
2521HWTEST_F(NativeEngineTest, ACE_Napi_Is_Detached_Arraybuffer_0100, testing::ext::TestSize.Level1)
2522{
2523    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0100 start";
2524
2525    napi_env env = (napi_env)engine_;
2526
2527    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
2528    void* arrayBufferPtr = nullptr;
2529    napi_value arrayBuffer = nullptr;
2530    napi_status verification = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
2531
2532    EXPECT_EQ(verification, napi_ok);
2533    EXPECT_NE(arrayBufferPtr, nullptr);
2534    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0100 create arraybuffer complete";
2535
2536    napi_status verificationCp = napi_detach_arraybuffer(env, arrayBuffer);
2537    EXPECT_EQ(verificationCp, napi_ok);
2538    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0100 detached arraybuffer complete";
2539
2540    bool result = false;
2541    napi_status out = napi_is_detached_arraybuffer(env, arrayBuffer, &result);
2542
2543    EXPECT_EQ(out, napi_ok);
2544    EXPECT_TRUE(result);
2545
2546    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0100 end";
2547}
2548
2549/**
2550 * @tc.number    : ACE_Napi_Is_Detached_Arraybuffer_0200
2551 * @tc.name      : The parameter is valid, the parameter arraybuffer input non-buffer object, test to confirm.
2552 * @tc.desc      : 1. Set up the env environment.
2553 *                 2. create arraybuffer.
2554 *                 3. Verify napi_is_detached_arraybuffer.
2555 */
2556HWTEST_F(NativeEngineTest, ACE_Napi_Is_Detached_Arraybuffer_0200, testing::ext::TestSize.Level2)
2557{
2558    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0200 start";
2559
2560    napi_env env = (napi_env)engine_;
2561    double time = CREATE_DATE_TIME;
2562    napi_value date = nullptr;
2563    napi_status verification = napi_create_date(env, time, &date);
2564
2565    EXPECT_EQ(verification, napi_ok);
2566
2567    bool result = false;
2568    napi_status ret = napi_is_detached_arraybuffer(env, date, &result);
2569
2570    EXPECT_EQ(ret, napi_invalid_arg);
2571
2572    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0200 end";
2573}
2574
2575/**
2576 * @tc.number    : ACE_Napi_Is_Detached_Arraybuffer_0300
2577 * @tc.name      : The parameter is invalid, the parameter arraybuffer input buffer object, test to confirm.
2578 * @tc.desc      : 1. Set up the env environment.
2579 *                 2. create arraybuffer.
2580 *                 3. detach arraybuffer.
2581 *                 4. Verify napi_is_detached_arraybuffer.
2582 */
2583HWTEST_F(NativeEngineTest, ACE_Napi_Is_Detached_Arraybuffer_0300, testing::ext::TestSize.Level2)
2584{
2585    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0300 start";
2586
2587    napi_env env = (napi_env)engine_;
2588
2589    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
2590    void* arrayBufferPtr = nullptr;
2591    napi_value arrayBuffer = nullptr;
2592    napi_status verification = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
2593
2594    EXPECT_EQ(verification, napi_ok);
2595    EXPECT_NE(arrayBufferPtr, nullptr);
2596    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0300 create arraybuffer complete";
2597
2598    napi_status verificationCp = napi_detach_arraybuffer(env, arrayBuffer);
2599
2600    EXPECT_EQ(verificationCp, napi_ok);
2601
2602    bool result = true;
2603    napi_status ret = napi_is_detached_arraybuffer(nullptr, arrayBuffer, &result);
2604
2605    EXPECT_TRUE(result);
2606    EXPECT_EQ(arrayBufferSize, ARRAYBUFFER_SIZE);
2607    EXPECT_NE(arrayBuffer, nullptr);
2608    EXPECT_EQ(ret, napi_invalid_arg);
2609
2610    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0300 end";
2611}
2612
2613/**
2614 * @tc.number    : ACE_Napi_Is_Detached_Arraybuffer_0400
2615 * @tc.name      : The parameter is invalid, the parameter result input is empty, test confirmation.
2616 * @tc.desc      : 1. Set up the env environment.
2617 *                 2. create arraybuffer.
2618 *                 3. detach arraybuffer.
2619 *                 4. Verify napi_is_detached_arraybuffer.
2620 */
2621HWTEST_F(NativeEngineTest, ACE_Napi_Is_Detached_Arraybuffer_0400, testing::ext::TestSize.Level2)
2622{
2623    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0400 start";
2624
2625    napi_env env = (napi_env)engine_;
2626
2627    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
2628    void* arrayBufferPtr = nullptr;
2629    napi_value arrayBuffer = nullptr;
2630    napi_status verification = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
2631
2632    EXPECT_EQ(verification, napi_ok);
2633    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0400 create arraybuffer complete";
2634
2635    napi_status verificationCp = napi_detach_arraybuffer(env, arrayBuffer);
2636
2637    EXPECT_EQ(verificationCp, napi_ok);
2638
2639    napi_status ret = napi_is_detached_arraybuffer(env, arrayBuffer, nullptr);
2640
2641    EXPECT_EQ(ret, napi_invalid_arg);
2642    EXPECT_EQ(arrayBufferSize, ARRAYBUFFER_SIZE);
2643    EXPECT_NE(arrayBuffer, nullptr);
2644
2645    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0400 end";
2646}
2647
2648/**
2649 * @tc.number    : ACE_Napi_Is_Detached_Arraybuffer_0500
2650 * @tc.name      : The parameter is invalid, the parameter arraybuffer input is empty, test to confirm
2651 * @tc.desc      : 1. Set up the env environment.
2652 *                 2. Verify napi_is_detached_arraybuffer.
2653 */
2654HWTEST_F(NativeEngineTest, ACE_Napi_Is_Detached_Arraybuffer_0500, testing::ext::TestSize.Level2)
2655{
2656    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0500 start";
2657
2658    napi_env env = (napi_env)engine_;
2659
2660    bool result = true;
2661    napi_status ret = napi_is_detached_arraybuffer(env, nullptr, &result);
2662
2663    EXPECT_TRUE(result);
2664    EXPECT_EQ(ret, napi_invalid_arg);
2665
2666    GTEST_LOG_(INFO) << "ACE_Napi_Is_Detached_Arraybuffer_0500 end";
2667}
2668
2669/**
2670 * @tc.number    : ACE_Napi_Is_Date_0100
2671 * @tc.name      : The parameter is valid,
2672 *                 and the parameter value is entered in the napi_date object,
2673 *                 and the test is performed to confirm.
2674 * @tc.desc      : 1. Set up the env environment.
2675 *                 2. create date.
2676 *                 3. Verify napi_is_date.
2677 */
2678HWTEST_F(NativeEngineTest, ACE_Napi_Is_Date_0100, testing::ext::TestSize.Level1)
2679{
2680    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0100 start";
2681
2682    napi_env env = (napi_env)engine_;
2683
2684    double time = CREATE_DATE_TIME;
2685    napi_value result = nullptr;
2686    napi_status verification = napi_create_date(env, time, &result);
2687
2688    EXPECT_EQ(verification, napi_ok);
2689    EXPECT_NE(result, nullptr);
2690
2691    double jsTime = 0;
2692    napi_status output = napi_get_date_value(env, result, &jsTime);
2693
2694    EXPECT_EQ(output, napi_ok);
2695    EXPECT_EQ(jsTime, GET_DATE_TIME);
2696    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0100 create date complete";
2697
2698    bool ret = false;
2699    napi_status out = napi_is_date(env, result, &ret);
2700
2701    EXPECT_TRUE(ret);
2702    EXPECT_EQ(out, napi_ok);
2703
2704    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0100 end";
2705}
2706
2707/**
2708 * @tc.number    : ACE_Napi_Is_Date_0200
2709 * @tc.name      : The parameter is invalid,
2710 *                 the value of the parameter is not a napi_date object,
2711 *                 and the test is confirmed.
2712 * @tc.desc      : 1. Set up the env environment.
2713 *                 2. create arraybuffer.
2714 *                 3. Verify napi_is_date.
2715 */
2716HWTEST_F(NativeEngineTest, ACE_Napi_Is_Date_0200, testing::ext::TestSize.Level2)
2717{
2718    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0200 start";
2719
2720    napi_env env = (napi_env)engine_;
2721
2722    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
2723    void* arrayBufferPtr = nullptr;
2724    napi_value arrayBuffer = nullptr;
2725    napi_status verification = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
2726
2727    EXPECT_EQ(verification, napi_ok);
2728    EXPECT_NE(arrayBufferPtr, nullptr);
2729    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0200 create arraybuffer complete";
2730
2731    size_t compareSize = ARRAYBUFFER_SIZE_NULL;
2732    napi_status result = napi_get_arraybuffer_info(env, arrayBuffer, &arrayBufferPtr, &compareSize);
2733
2734    EXPECT_EQ(compareSize, ARRAYBUFFER_SIZE);
2735    EXPECT_EQ(result, napi_ok);
2736    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0200 get arraybuffer info complete";
2737
2738    bool ret = true;
2739    napi_status out = napi_is_date(env, arrayBuffer, &ret);
2740
2741    EXPECT_FALSE(ret);
2742    EXPECT_EQ(out, napi_ok);
2743
2744    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0200 end";
2745}
2746
2747/**
2748 * @tc.number    : ACE_Napi_Is_Date_0300
2749 * @tc.name      : The parameter is invalid,
2750 *                 the parameter value is entered in the napi_date object,
2751 *                 and the test is confirmed
2752 * @tc.desc      : 1. Set up the env environment.
2753 *                 2. create date.
2754 *                 3. Verify napi_is_date.
2755 */
2756HWTEST_F(NativeEngineTest, ACE_Napi_Is_Date_0300, testing::ext::TestSize.Level2)
2757{
2758    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0300 start";
2759
2760    napi_env env = (napi_env)engine_;
2761
2762    double time = CREATE_DATE_TIME;
2763    napi_value result = nullptr;
2764    napi_status verification = napi_create_date(env, time, &result);
2765
2766    EXPECT_EQ(verification, napi_ok);
2767    EXPECT_NE(result, nullptr);
2768
2769    double jsTime = 0;
2770    napi_status out = napi_get_date_value(env, result, &jsTime);
2771
2772    EXPECT_EQ(out, napi_ok);
2773    EXPECT_EQ(jsTime, GET_DATE_TIME);
2774    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0300 create date complete";
2775
2776    bool ret = false;
2777    napi_status output = napi_is_date(nullptr, result, &ret);
2778
2779    EXPECT_FALSE(ret);
2780    EXPECT_EQ(output, napi_invalid_arg);
2781
2782    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0300 end";
2783}
2784
2785/**
2786 * @tc.number    : ACE_Napi_Is_Date_0400
2787 * @tc.name      : The parameter is invalid,
2788 *                 and the parameter value is entered as the date object that failed to be created,
2789 *                 and the test is performed to confirm.
2790 * @tc.desc      : 1. Set up the env environment.
2791 *                 2. Verify napi_is_date.
2792 */
2793HWTEST_F(NativeEngineTest, ACE_Napi_Is_Date_0400, testing::ext::TestSize.Level2)
2794{
2795    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0400 start";
2796
2797    napi_env env = (napi_env)engine_;
2798
2799    bool ret = false;
2800    napi_status out = napi_is_date(env, nullptr, &ret);
2801
2802    EXPECT_FALSE(ret);
2803    EXPECT_EQ(out, napi_invalid_arg);
2804
2805    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0400 end";
2806}
2807
2808/**
2809 * @tc.number    : ACE_Napi_Is_Date_0500
2810 * @tc.name      : The parameter is invalid. Enter 0 for the parameter value to confirm the test.
2811 * @tc.desc      : 1. Set up the env environment.
2812 *                 2. create date.
2813 *                 3. Verify napi_is_date.
2814 */
2815HWTEST_F(NativeEngineTest, ACE_Napi_Is_Date_0500, testing::ext::TestSize.Level1)
2816{
2817    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0500 start";
2818
2819    napi_env env = (napi_env)engine_;
2820
2821    double time = DATE_TIME_VALUE;
2822    napi_value result = nullptr;
2823    napi_status out = napi_create_date(env, time, &result);
2824
2825    EXPECT_EQ(out, napi_ok);
2826    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0500 create date value complete";
2827
2828    napi_status output = napi_is_date(env, result, nullptr);
2829    EXPECT_EQ(output, napi_invalid_arg);
2830
2831    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0500 end";
2832}
2833
2834/**
2835 * @tc.number    : ACE_Napi_Is_Date_0600
2836 * @tc.name      : The parameter is valid, input the character string ("汉字测试") for
2837 *                 the parameter value, and perform the test to confirm.
2838 * @tc.desc      : 1. Install the app.
2839 *                 2. Start the application.
2840 *                 3. Call napi_create_string_utf8.
2841 *                 4. Call napi_is_date.
2842 */
2843HWTEST_F(NativeEngineTest, ACE_Napi_Is_Date_0600, testing::ext::TestSize.Level1)
2844{
2845    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0600 start";
2846
2847    napi_env env = (napi_env)engine_;
2848
2849    napi_value result = nullptr;
2850    napi_status verification = napi_create_string_utf8(env, "汉字测试", NAPI_AUTO_LENGTH, &result);
2851
2852    EXPECT_EQ(verification, napi_ok);
2853
2854    bool ret = true;
2855    napi_status out = napi_is_date(env, result, &ret);
2856
2857    EXPECT_EQ(out, napi_ok);
2858    EXPECT_FALSE(ret);
2859
2860    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0600 end";
2861}
2862
2863/**
2864 * @tc.number    : ACE_Napi_Create_Date_0100
2865 * @tc.name      : The parameter is valid,
2866 *                 enter the double value for the parameter time, and perform the test to confirm
2867 * @tc.desc      : 1. Set up the env environment.
2868 *                 2. create date.
2869 *                 3.Verify napi_create_date.
2870 */
2871HWTEST_F(NativeEngineTest, ACE_Napi_Create_Date_0100, testing::ext::TestSize.Level1)
2872{
2873    GTEST_LOG_(INFO) << "ACE_Napi_Create_Date_0100 start";
2874
2875    napi_env env = (napi_env)engine_;
2876
2877    time_t date = time(nullptr);
2878    GTEST_LOG_(INFO) << "ACE_Napi_Is_Date_0100 time = " << date;
2879
2880    napi_value result = nullptr;
2881    napi_status ret = napi_create_date(env, date, &result);
2882
2883    double jsTime = 0;
2884    napi_status out = napi_get_date_value(env, result, &jsTime);
2885
2886    EXPECT_NE(result, nullptr);
2887    EXPECT_EQ(date, jsTime);
2888
2889    EXPECT_EQ(ret, napi_ok);
2890    EXPECT_EQ(out, napi_ok);
2891
2892    GTEST_LOG_(INFO) << "ACE_Napi_Create_Date_0100 end";
2893}
2894
2895
2896/**
2897 * @tc.number    : ACE_Napi_Create_Date_0200
2898 * @tc.name      : The parameter is invalid. Enter a double value for the time parameter to confirm the test.
2899 * @tc.desc      : 1. Set up the env environment.
2900 *                 2. create date.
2901 *                 3.Verify napi_create_date.
2902 */
2903HWTEST_F(NativeEngineTest, ACE_Napi_Create_Date_0200, testing::ext::TestSize.Level2)
2904{
2905    GTEST_LOG_(INFO) << "ACE_Napi_Create_Date_0200 start";
2906
2907    double time = CREATE_DATE_TIME;
2908    napi_value result = nullptr;
2909    napi_status ret = napi_create_date(nullptr, time, &result);
2910
2911    EXPECT_EQ(result, nullptr);
2912    EXPECT_EQ(ret, napi_invalid_arg);
2913
2914    GTEST_LOG_(INFO) << "ACE_Napi_Create_Date_0200 end";
2915}
2916
2917/**
2918 * @tc.number    : ACE_Napi_Create_Date_0300
2919 * @tc.name      : The parameter is invalid, the parameter time is 0, test to confirm.
2920 * @tc.desc      : 1. Set up the env environment.
2921 *                 2. create date.
2922 *                 3.Verify napi_create_date.
2923 */
2924HWTEST_F(NativeEngineTest, ACE_Napi_Create_Date_0300, testing::ext::TestSize.Level1)
2925{
2926    GTEST_LOG_(INFO) << "ACE_Napi_Create_Date_0300 start";
2927
2928    napi_env env = (napi_env)engine_;
2929
2930    double time = DATE_TIME_VALUE;
2931    napi_value result = nullptr;
2932    napi_status ret = napi_create_date(env, time, &result);
2933
2934    double jsTime = 1;
2935    napi_status out = napi_get_date_value(env, result, &jsTime);
2936
2937    EXPECT_NE(result, nullptr);
2938    EXPECT_EQ(time, jsTime);
2939
2940    EXPECT_EQ(ret, napi_ok);
2941    EXPECT_EQ(out, napi_ok);
2942
2943    GTEST_LOG_(INFO) << "ACE_Napi_Create_Date_0300 end";
2944}
2945
2946/**
2947 * @tc.number    : ACE_Napi_Create_Date_0400
2948 * @tc.name      : The parameter is invalid, the parameter time is char, test to confirm
2949 * @tc.desc      : 1. Set up the env environment.
2950 *                 2. create date.
2951 *                 3.Verify napi_create_date.
2952 */
2953HWTEST_F(NativeEngineTest, ACE_Napi_Create_Date_0400, testing::ext::TestSize.Level1)
2954{
2955    GTEST_LOG_(INFO) << "ACE_Napi_Create_Date_0400 start";
2956
2957    napi_env env = (napi_env)engine_;
2958
2959    char time = 'a';
2960    napi_value result = nullptr;
2961    napi_status ret = napi_create_date(env, time, &result);
2962
2963    double jsTime = 0;
2964    napi_status out = napi_get_date_value(env, result, &jsTime);
2965
2966    EXPECT_NE(result, nullptr);
2967    EXPECT_EQ(time, jsTime);
2968
2969    EXPECT_EQ(ret, napi_ok);
2970    EXPECT_EQ(out, napi_ok);
2971
2972    GTEST_LOG_(INFO) << "ACE_Napi_Create_Date_0400 end";
2973}
2974
2975/**
2976 * @tc.number    : ACE_Napi_Create_Date_0500
2977 * @tc.name      : The parameter is invalid, the parameter time is empty, test to confirm.
2978 * @tc.desc      : 1. Set up the env environment.
2979 *                 2. create date.
2980 *                 3.Verify napi_create_date.
2981 */
2982HWTEST_F(NativeEngineTest, ACE_Napi_Create_Date_0500, testing::ext::TestSize.Level2)
2983{
2984    GTEST_LOG_(INFO) << "ACE_Napi_Create_Date_0500 start";
2985
2986    napi_env env = (napi_env)engine_;
2987
2988    double time = CREATE_DATE_TIME;
2989    napi_status ret = napi_create_date(env, time, nullptr);
2990
2991    EXPECT_EQ(ret, napi_invalid_arg);
2992
2993    GTEST_LOG_(INFO) << "ACE_Napi_Create_Date_0500 end";
2994}
2995
2996/**
2997 * @tc.number    : ACE_Napi_Create_Date_0600
2998 * @tc.name      : The parameter is invalid, the parameter time is -1, test to confirm.
2999 * @tc.desc      : 1. Set up the env environment.
3000 *                 2. create date.
3001 *                 3.Verify napi_create_date.
3002 */
3003HWTEST_F(NativeEngineTest, ACE_Napi_Create_Date_0600, testing::ext::TestSize.Level1)
3004{
3005    GTEST_LOG_(INFO) << "ACE_Napi_Create_Date_0600 start";
3006
3007    napi_env env = (napi_env)engine_;
3008
3009    double time = -1;
3010    napi_value result = nullptr;
3011    napi_status ret = napi_create_date(env, time, &result);
3012
3013    double jsTime = 0;
3014    napi_status out = napi_get_date_value(env, result, &jsTime);
3015    GTEST_LOG_(INFO) << "ACE_Napi_Create_Date_0600 time = " << jsTime;
3016
3017    EXPECT_NE(result, nullptr);
3018    EXPECT_EQ(jsTime, -1);
3019
3020    EXPECT_EQ(ret, napi_ok);
3021    EXPECT_EQ(out, napi_ok);
3022
3023    GTEST_LOG_(INFO) << "ACE_Napi_Create_Date_0600 end";
3024}
3025
3026/**
3027 * @tc.number    : ACE_Napi_Get_Date_Value_0100
3028 * @tc.name      : The parameter is valid,
3029 *                 and the parameter value is entered in the napi_date object, and the test is performed to confirm.
3030 * @tc.desc      : 1. Set up the env environment.
3031 *                 2. create date.
3032 *                 3. get date value.
3033 *                 4.Verify napi_get_date_value.
3034 */
3035HWTEST_F(NativeEngineTest, ACE_Napi_Get_Date_Value_0100, testing::ext::TestSize.Level1)
3036{
3037    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0100 start";
3038
3039    napi_env env = (napi_env)engine_;
3040
3041    double time = CREATE_DATE_TIME;
3042    napi_value result = nullptr;
3043    napi_status verification = napi_create_date(env, time, &result);
3044
3045    EXPECT_EQ(verification, napi_ok);
3046    EXPECT_NE(result, nullptr);
3047    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0100 create date complete";
3048
3049    double ret = DATE_TIME_VALUE;
3050    napi_status out = napi_get_date_value(env, result, &ret);
3051
3052    EXPECT_EQ(ret, GET_DATE_TIME);
3053    EXPECT_EQ(out, napi_ok);
3054
3055    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0100 end";
3056}
3057
3058/**
3059 * @tc.number    : ACE_Napi_Get_Date_Value_0200
3060 * @tc.name      : Valid environment variable env, parameter value input non-napi_date object.
3061 * @tc.desc      : 1. Set up the env environment.
3062 *                 2. create arraybuffer.
3063 *                 3. get date value.
3064 *                 4.Verify napi_get_date_value.
3065 */
3066HWTEST_F(NativeEngineTest, ACE_Napi_Get_Date_Value_0200, testing::ext::TestSize.Level2)
3067{
3068    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0200 start";
3069
3070    napi_env env = (napi_env)engine_;
3071
3072    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
3073    void* arrayBufferPtr = nullptr;
3074    napi_value arrayBuffer = nullptr;
3075    napi_status verification = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
3076
3077    EXPECT_EQ(verification, napi_ok);
3078    EXPECT_NE(arrayBufferPtr, nullptr);
3079    EXPECT_NE(arrayBuffer, nullptr);
3080    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0200 create arraybuffer complete";
3081
3082    double ret = DATE_TIME_VALUE;
3083    napi_status out = napi_get_date_value(env, arrayBuffer, &ret);
3084
3085    EXPECT_EQ(ret, DATE_TIME_VALUE);
3086    EXPECT_EQ(out, napi_date_expected);
3087
3088    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0200 end";
3089}
3090
3091/**
3092 * @tc.number    : ACE_Napi_Get_Date_Value_0300
3093 * @tc.name      : Invalid environment variable env, parameter value input napi_date object.
3094 * @tc.desc      : 1. Set up the env environment.
3095 *                 2. create date.
3096 *                 3. get date value.
3097 *                 4.Verify napi_get_date_value.
3098 */
3099HWTEST_F(NativeEngineTest, ACE_Napi_Get_Date_Value_0300, testing::ext::TestSize.Level2)
3100{
3101    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0300 start";
3102
3103    napi_env env = (napi_env)engine_;
3104
3105    double time = CREATE_DATE_TIME;
3106    napi_value result = nullptr;
3107    napi_status verification = napi_create_date(env, time, &result);
3108
3109    EXPECT_EQ(verification, napi_ok);
3110    EXPECT_NE(result, nullptr);
3111    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0300 create date complete";
3112
3113    double ret = DATE_TIME_VALUE;
3114    napi_status out = napi_get_date_value(nullptr, result, &ret);
3115
3116    EXPECT_EQ(ret, DATE_TIME_VALUE);
3117    EXPECT_EQ(out, napi_invalid_arg);
3118
3119    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0300 end";
3120}
3121
3122/**
3123 * @tc.number    : ACE_Napi_Get_Date_Value_0400
3124 * @tc.name      : The parameter is invalid, the parameter return is empty, test to confirm.
3125 * @tc.desc      : 1. Set up the env environment.
3126 *                 2. create date.
3127 *                 3. get date value.
3128 *                 4.Verify napi_get_date_value.
3129 */
3130HWTEST_F(NativeEngineTest, ACE_Napi_Get_Date_Value_0400, testing::ext::TestSize.Level2)
3131{
3132    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0400 start";
3133
3134    napi_env env = (napi_env)engine_;
3135
3136    double time = CREATE_DATE_TIME;
3137    napi_value result = nullptr;
3138    napi_status verification = napi_create_date(env, time, &result);
3139
3140    EXPECT_EQ(verification, napi_ok);
3141    EXPECT_NE(result, nullptr);
3142    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0400 create date complete";
3143
3144    napi_status out = napi_get_date_value(env, result, nullptr);
3145
3146    EXPECT_NE(result, nullptr);
3147    EXPECT_EQ(out, napi_invalid_arg);
3148
3149    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0400 end";
3150}
3151
3152/**
3153 * @tc.number    : ACE_Napi_Get_Date_Value_0500
3154 * @tc.name      : The parameter is invalid, the parameter value is the date when the creation failed, test to confirm.
3155 * @tc.desc      : 1. Set up the env environment.
3156 *                 2. create date.
3157 *                 3. get date value.
3158 *                 4. Verify napi_get_date_value.
3159 */
3160HWTEST_F(NativeEngineTest, ACE_Napi_Get_Date_Value_0500, testing::ext::TestSize.Level2)
3161{
3162    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0500 start";
3163
3164    napi_env env = (napi_env)engine_;
3165
3166    double ret = DATE_TIME_VALUE;
3167    napi_status out = napi_get_date_value(env, nullptr, &ret);
3168
3169    EXPECT_EQ(ret, DATE_TIME_VALUE);
3170    EXPECT_EQ(out, napi_invalid_arg);
3171
3172    GTEST_LOG_(INFO) << "ACE_Napi_Get_Date_Value_0500 end";
3173}
3174#if  (defined(FOR_JERRYSCRIPT_TEST)) &&  (JERRY_API_MINOR_VERSION <= 3)
3175    // jerryscript 2.3 do nothing
3176#else
3177// jerryscript 2.4 or quickjs or V8
3178/**
3179 * @tc.number    : ACE_Napi_Type_Tag_Object_0100
3180 * @tc.name      : The parameter is valid,
3181 *                 and the parameter js_object js_object is entered in the js object
3182 *                 that is not associated with type_tag, and the test is confirmed.
3183 * @tc.desc      : 1. Set up the env environment.
3184 *                 2. Create object.
3185 *                 3. Mark object
3186 *                 4. Verify napi_type_tag_object.
3187 */
3188HWTEST_F(NativeEngineTest, ACE_Napi_Type_Tag_Object_0100, testing::ext::TestSize.Level1)
3189{
3190    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0100 start";
3191
3192    napi_env env = (napi_env)engine_;
3193
3194    napi_value result = nullptr;
3195    napi_status verification = napi_create_object(env, &result);
3196
3197    EXPECT_EQ(verification, napi_ok);
3198    EXPECT_NE(result, nullptr);
3199    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0100 create obiect complete";
3200
3201    const napi_type_tag typeTag = { 0xFFFFFFFFFFFFFFFF, 34ULL };
3202    napi_status out = napi_type_tag_object(env, result, &typeTag);
3203
3204    EXPECT_EQ(out, napi_ok);
3205
3206    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0100 end";
3207}
3208
3209/**
3210 * @tc.number    : ACE_Napi_Type_Tag_Object_0200
3211 * @tc.name      : The parameter is valid,
3212 *                 the parameter js_object js_object enters the js object
3213 *                 associated with type_tag, and the test is confirmed.
3214 * @tc.desc      : 1. Set up the env environment.
3215 *                 2. Create object.
3216 *                 3. Mark object
3217 *                 3. Mark object
3218 *                 4. Verify napi_type_tag_object.
3219 */
3220HWTEST_F(NativeEngineTest, ACE_Napi_Type_Tag_Object_0200, testing::ext::TestSize.Level2)
3221{
3222    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0200 start";
3223
3224    napi_env env = (napi_env)engine_;
3225
3226    napi_value result = nullptr;
3227    napi_status verification = napi_create_object(env, &result);
3228
3229    EXPECT_EQ(verification, napi_ok);
3230    EXPECT_NE(result, nullptr);
3231    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0200 create obiect complete";
3232
3233    const napi_type_tag typeTag = { 0xFFFFFFFFFFFFFFFF, 34ULL };
3234    napi_status ret = napi_type_tag_object(env, result, &typeTag);
3235
3236    EXPECT_EQ(ret, napi_ok);
3237    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0200 type tag obiect complete";
3238
3239    const napi_type_tag typeTagcopy = { 12312, 12 };
3240    napi_status out = napi_type_tag_object(env, result, &typeTagcopy);
3241
3242    EXPECT_EQ(out, napi_invalid_arg);
3243
3244    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0200 end";
3245}
3246
3247/**
3248 * @tc.number    : ACE_Napi_Type_Tag_Object_0300
3249 * @tc.name      : The parameter is invalid,
3250 *                 the parameter js_object js_object is entered as a js object
3251 *                 that is not associated with type_tag, and the test is confirmed.
3252 * @tc.desc      : 1. Set up the env environment.
3253 *                 2. Create object.
3254 *                 3. Mark object
3255 *                 4. Verify napi_type_tag_object.
3256 */
3257HWTEST_F(NativeEngineTest, ACE_Napi_Type_Tag_Object_0300, testing::ext::TestSize.Level2)
3258{
3259    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0300 start";
3260
3261    napi_env env = (napi_env)engine_;
3262
3263    napi_value result = nullptr;
3264    napi_status verification = napi_create_object(env, &result);
3265
3266    EXPECT_EQ(verification, napi_ok);
3267    EXPECT_NE(result, nullptr);
3268    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0200 create obiect complete";
3269
3270    const napi_type_tag typeTag = { 0xFFFFFFFFFFFFFFFF, 34ULL };
3271    napi_status out = napi_type_tag_object(nullptr, result, &typeTag);
3272
3273    EXPECT_EQ(out, napi_invalid_arg);
3274
3275    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0300 end";
3276}
3277
3278/**
3279 * @tc.number    : ACE_Napi_Type_Tag_Object_0400
3280 * @tc.name      : The parameter is invalid,
3281 *                 the parameter js_object js_object object input is empty, test to confirm.
3282 * @tc.desc      : 1. Set up the env environment.
3283 *                 2. Mark object
3284 *                 3. Verify napi_type_tag_object.
3285 */
3286HWTEST_F(NativeEngineTest, ACE_Napi_Type_Tag_Object_0400, testing::ext::TestSize.Level2)
3287{
3288    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0400 start";
3289
3290    napi_env env = (napi_env)engine_;
3291
3292    const napi_type_tag typeTag = { 0xFFFFFFFFFFFFFFFF, 34ULL };
3293    napi_status out = napi_type_tag_object(env, nullptr, &typeTag);
3294
3295    EXPECT_EQ(out, napi_invalid_arg);
3296
3297    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0400 end";
3298}
3299
3300/**
3301 * @tc.number    : ACE_Napi_Type_Tag_Object_0500
3302 * @tc.name      : The parameter is invalid,
3303 *                 the parameter napi_type_tag* object input is empty, test confirmation.
3304 * @tc.desc      : 1. Set up the env environment.
3305 *                 2. Create object.
3306 *                 3. Mark object
3307 *                 4. Verify napi_type_tag_object.
3308 */
3309HWTEST_F(NativeEngineTest, ACE_Napi_Type_Tag_Object_0500, testing::ext::TestSize.Level2)
3310{
3311    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0500 start";
3312
3313    napi_env env = (napi_env)engine_;
3314
3315    napi_value result = nullptr;
3316    napi_status verification = napi_create_object(env, &result);
3317
3318    EXPECT_EQ(verification, napi_ok);
3319    EXPECT_NE(result, nullptr);
3320    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0500 create obiect complete";
3321
3322    napi_status out = napi_type_tag_object(env, result, nullptr);
3323
3324    EXPECT_EQ(out, napi_invalid_arg);
3325
3326    GTEST_LOG_(INFO) << "ACE_Napi_Type_Tag_Object_0500 end";
3327}
3328
3329/**
3330 * @tc.number    : ACE_Napi_Check_Object_Type_Tag_0100
3331 * @tc.name      : The parameter is valid,
3332 *                 the js_object object enters the js object
3333 *                 that is not associated with type_tag, and the parameter type_tag
3334 *                 enters a valid parameter, and the test is confirmed.
3335 * @tc.desc      : 1. Set up the env environment.
3336 *                 2. Create object.
3337 *                 3. Mark object
3338 *                 4. Verify napi_check_object_type_tag.
3339 */
3340HWTEST_F(NativeEngineTest, ACE_Napi_Check_Object_Type_Tag_0100, testing::ext::TestSize.Level1)
3341{
3342    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0100 start";
3343
3344    napi_env env = (napi_env)engine_;
3345
3346    napi_value result = nullptr;
3347    napi_status verification = napi_create_object(env, &result);
3348
3349    EXPECT_EQ(verification, napi_ok);
3350    EXPECT_NE(result, nullptr);
3351    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0100 create obiect complete";
3352
3353    const napi_type_tag typeTag = { 0xFFFFFFFFFFFFFFFF, 34ULL };
3354    napi_status ret = napi_type_tag_object(env, result, &typeTag);
3355
3356    EXPECT_EQ(ret, napi_ok);
3357    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0100 type tag obiect obiect complete";
3358
3359    bool out = false;
3360    napi_status verificationCp = napi_check_object_type_tag(env, result, &typeTag, &out);
3361
3362    EXPECT_EQ(verificationCp, napi_ok);
3363    EXPECT_TRUE(out);
3364
3365    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0100 end";
3366}
3367
3368/**
3369 * @tc.number    : ACE_Napi_Check_Object_Type_Tag_0200
3370 * @tc.name      : The parameter is valid,
3371 *                 the js_object object enters the js object
3372 *                 that is not associated with type_tag, and the parameter type_tag
3373 *                 enters a valid parameter, and the test is confirmed.
3374 * @tc.desc      : 1. Set up the env environment.
3375 *                 2. Create object.
3376 *                 3. Verify napi_check_object_type_tag.
3377 */
3378HWTEST_F(NativeEngineTest, ACE_Napi_Check_Object_Type_Tag_0200, testing::ext::TestSize.Level1)
3379{
3380    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0200 start";
3381
3382    napi_env env = (napi_env)engine_;
3383
3384    napi_value result = nullptr;
3385    napi_status verification = napi_create_object(env, &result);
3386
3387    EXPECT_EQ(verification, napi_ok);
3388    EXPECT_NE(result, nullptr);
3389    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0100 create obiect complete";
3390
3391    const napi_type_tag typeTag = { 0xFFFFFFFFFFFFFFFF, 34ULL };
3392    bool out = true;
3393    napi_status verificationCp = napi_check_object_type_tag(env, result, &typeTag, &out);
3394
3395    EXPECT_EQ(verificationCp, napi_ok);
3396    EXPECT_FALSE(out);
3397
3398    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0200 end";
3399}
3400
3401/**
3402 * @tc.number    : ACE_Napi_Check_Object_Type_Tag_0300
3403 * @tc.name      : The parameter is invalid,
3404 *                 the js_object object enters a js object that is not associated with type_tag,
3405 *                 and the parameter type_tag enters a valid parameter, and the test is confirmed.
3406 * @tc.desc      : 1. Set up the env environment.
3407 *                 2. Create object.
3408 *                 3. Mark object
3409 *                 4. Verify napi_check_object_type_tag.
3410 */
3411HWTEST_F(NativeEngineTest, ACE_Napi_Check_Object_Type_Tag_0300, testing::ext::TestSize.Level2)
3412{
3413    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0300 start";
3414
3415    napi_env env = (napi_env)engine_;
3416
3417    napi_value result = nullptr;
3418    napi_status verification = napi_create_object(env, &result);
3419
3420    EXPECT_EQ(verification, napi_ok);
3421    EXPECT_NE(result, nullptr);
3422    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0300 create obiect complete";
3423
3424    const napi_type_tag typeTag = { 0xFFFFFFFFFFFFFFFF, 34ULL };
3425    napi_status ret = napi_type_tag_object(env, result, &typeTag);
3426
3427    EXPECT_EQ(ret, napi_ok);
3428    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0300 type tag obiect obiect complete";
3429
3430    bool out = false;
3431    napi_status output = napi_check_object_type_tag(nullptr, result, &typeTag, &out);
3432
3433    EXPECT_EQ(output, napi_invalid_arg);
3434
3435    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0300 end";
3436}
3437
3438/**
3439 * @tc.number    : ACE_Napi_Check_Object_Type_Tag_0400
3440 * @tc.name      : The parameter is invalid,
3441 *                 the js_object object enters the js object associated with type_tag,
3442 *                 and the parameter type_tag enters a valid parameter, and the test is confirmed.
3443 * @tc.desc      : 1. Set up the env environment.
3444 *                 2. Create object.
3445 *                 3. Mark object
3446 *                 4. Create object.
3447 *                 5. Verify napi_check_object_type_tag.
3448 */
3449HWTEST_F(NativeEngineTest, ACE_Napi_Check_Object_Type_Tag_0400, testing::ext::TestSize.Level1)
3450{
3451    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0400 start";
3452
3453    napi_env env = (napi_env)engine_;
3454
3455    napi_value result = nullptr;
3456    napi_status verification = napi_create_object(env, &result);
3457
3458    EXPECT_EQ(verification, napi_ok);
3459    EXPECT_NE(result, nullptr);
3460    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0400 create obiect complete";
3461
3462    const napi_type_tag typeTag = { 0xFFFFFFFFFFFFFFFF, 34ULL };
3463    napi_status ret = napi_type_tag_object(env, result, &typeTag);
3464
3465    EXPECT_EQ(ret, napi_ok);
3466    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0400 type tag obiect obiect complete";
3467
3468    napi_value resultcopy = nullptr;
3469    napi_status verifi = napi_create_object(env, &resultcopy);
3470
3471    EXPECT_EQ(verifi, napi_ok);
3472    EXPECT_NE(resultcopy, nullptr);
3473    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0400 create objectcopy complete";
3474
3475    bool out = true;
3476    napi_status verificationCp = napi_check_object_type_tag(env, resultcopy, &typeTag, &out);
3477
3478    EXPECT_EQ(verificationCp, napi_ok);
3479    EXPECT_FALSE(out);
3480
3481    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0400 end";
3482}
3483
3484/**
3485 * @tc.number    : ACE_Napi_Check_Object_Type_Tag_0500
3486 * @tc.name      : The parameter is invalid,
3487 *                 the input of the napi_type_tag* object is empty, test confirmation.
3488 * @tc.desc      : 1. Set up the env environment.
3489 *                 2. Create object.
3490 *                 3. Mark object
3491 *                 4. Verify napi_check_object_type_tag.
3492 */
3493HWTEST_F(NativeEngineTest, ACE_Napi_Check_Object_Type_Tag_0500, testing::ext::TestSize.Level2)
3494{
3495    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0500 start";
3496
3497    napi_env env = (napi_env)engine_;
3498
3499    napi_value result = nullptr;
3500    napi_status verification = napi_create_object(env, &result);
3501
3502    EXPECT_EQ(verification, napi_ok);
3503    EXPECT_NE(result, nullptr);
3504    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0500 create obiect complete";
3505
3506    const napi_type_tag typeTag = { 0xFFFFFFFFFFFFFFFF, 34ULL };
3507    napi_status ret = napi_type_tag_object(env, result, &typeTag);
3508
3509    EXPECT_EQ(ret, napi_ok);
3510    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0400 type tag obiect obiect complete";
3511
3512    bool out = false;
3513    napi_status output = napi_check_object_type_tag(env, result, nullptr, &out);
3514
3515    EXPECT_FALSE(out);
3516    EXPECT_EQ(output, napi_invalid_arg);
3517
3518    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0500 end";
3519}
3520
3521/**
3522 * @tc.number    : ACE_Napi_Check_Object_Type_Tag_0600
3523 * @tc.name      : Valid environment env, parameter type_tag object input has been associated with type_tag js object,
3524 *                 parameter type_tag input is valid, the returned comparison result is invalid (nullptr).
3525 * @tc.desc      : 1. Set up the env environment.
3526 *                 2. Create object.
3527 *                 3. Mark object
3528 *                 4. Verify napi_check_object_type_tag.
3529 */
3530HWTEST_F(NativeEngineTest, ACE_Napi_Check_Object_Type_Tag_0600, testing::ext::TestSize.Level1)
3531{
3532    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0600 start";
3533
3534    napi_env env = (napi_env)engine_;
3535
3536    napi_value result = nullptr;
3537    napi_status verification = napi_create_object(env, &result);
3538
3539    EXPECT_EQ(verification, napi_ok);
3540    EXPECT_NE(result, nullptr);
3541    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0600 create obiect complete";
3542
3543    const napi_type_tag typeTag = { 0xFFFFFFFFFFFFFFFF, 34ULL };
3544    napi_status ret = napi_type_tag_object(env, result, &typeTag);
3545
3546    EXPECT_EQ(ret, napi_ok);
3547    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0600 type tag obiect obiect complete";
3548
3549    napi_status out = napi_check_object_type_tag(env, result, &typeTag, nullptr);
3550
3551    EXPECT_EQ(out, napi_invalid_arg);
3552
3553    GTEST_LOG_(INFO) << "ACE_Napi_Check_Object_Type_Tag_0600 end";
3554}
3555#endif // (defined(FOR_JERRYSCRIPT_TEST)) &&  (JERRY_API_MINOR_VERSION <= 3)
3556/**
3557 * @tc.number    : ACE_Napi_Add_Finalizer_0100
3558 * @tc.name      : The necessary parameters of napi_add_finalizer are valid, and callback functions can be added.
3559 * @tc.desc      : 1. Set up the env environment.
3560 *                 2. Configuration parameter.
3561 *                 3. Verify napi_add_finalizer.
3562 */
3563HWTEST_F(NativeEngineTest, ACE_Napi_Add_Finalizer_0100, testing::ext::TestSize.Level1)
3564{
3565    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0100 start";
3566
3567    napi_env env = (napi_env)engine_;
3568
3569    napi_value jsObj = nullptr;
3570    char16_t nativeObj[] = u"napiaddfinalizer";
3571    int finalizeHine = 0;
3572    static bool testValue = false;
3573
3574    napi_status verification = napi_create_object(env, &jsObj);
3575
3576    EXPECT_EQ(verification, napi_ok);
3577
3578    napi_ref result = nullptr;
3579    napi_status ret = napi_add_finalizer(env, jsObj, &nativeObj, [](napi_env env, void* data, void* hint) {
3580        testValue = true;
3581    }, &finalizeHine, &result);
3582
3583    EXPECT_EQ(ret, napi_ok);
3584
3585    napi_status verifi = napi_delete_reference(env, result);
3586
3587    EXPECT_TRUE(testValue);
3588    EXPECT_EQ(verifi, napi_ok);
3589
3590    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0100 end";
3591}
3592
3593/**
3594 * @tc.number    : ACE_Napi_Add_Finalizer_0200
3595 * @tc.name      : The JS object parameter of napi_add_finalizer that binds local data is invalid,
3596 *                 and the callback function cannot be added.
3597 * @tc.desc      : 1. Set up the env environment.
3598 *                 2. Configuration parameter.
3599 *                 3. Verify napi_add_finalizer.
3600 */
3601HWTEST_F(NativeEngineTest, ACE_Napi_Add_Finalizer_0200, testing::ext::TestSize.Level2)
3602{
3603    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0200 start";
3604
3605    napi_env env = (napi_env)engine_;
3606
3607    char16_t nativeObj[] = u"napiaddfinalizer";
3608    int finalizeHine = 0;
3609    static bool testValue = false;
3610
3611    napi_ref result = nullptr;
3612    napi_status ret = napi_add_finalizer(env, nullptr, &nativeObj, [](napi_env env, void* data, void* hint) {
3613        testValue = true;
3614    }, &finalizeHine, &result);
3615
3616    EXPECT_EQ(ret, napi_invalid_arg);
3617    EXPECT_FALSE(testValue);
3618
3619    napi_status output = napi_delete_reference(env, result);
3620    EXPECT_EQ(output, napi_invalid_arg);
3621
3622    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0200 end";
3623}
3624
3625/**
3626 * @tc.number    : ACE_Napi_Add_Finalizer_0300
3627 * @tc.name      : The callback function parameter of napi_add_finalizer used to release local data is invalid,
3628 *                 and the callback function cannot be added.
3629 * @tc.desc      : 1. Set up the env environment.
3630 *                 2. Configuration parameter.
3631 *                 3. Verify napi_add_finalizer.
3632 */
3633HWTEST_F(NativeEngineTest, ACE_Napi_Add_Finalizer_0300, testing::ext::TestSize.Level2)
3634{
3635    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0300 start";
3636
3637    napi_env env = (napi_env)engine_;
3638
3639    napi_value jsObj = nullptr;
3640    char16_t nativeObj[] = u"napiaddfinalizer";
3641    int finalizeHine = 0;
3642
3643    napi_status verification = napi_create_object(env, &jsObj);
3644
3645    EXPECT_EQ(verification, napi_ok);
3646
3647    napi_ref result = nullptr;
3648    napi_status ret = napi_add_finalizer(env, jsObj, &nativeObj, nullptr, &finalizeHine, &result);
3649
3650    EXPECT_EQ(ret, napi_invalid_arg);
3651
3652    napi_status output = napi_delete_reference(env, result);
3653    EXPECT_EQ(output, napi_invalid_arg);
3654
3655    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0300 end";
3656}
3657
3658/**
3659 * @tc.number    : ACE_Napi_Add_Finalizer_0400
3660 * @tc.name      : The environment parameter of napi_add_finalizer is invalid,
3661 *                 the callback function cannot be added.
3662 * @tc.desc      : 1. Set up the env environment.
3663 *                 2. Configuration parameter.
3664 *                 3. Verify napi_add_finalizer.
3665 */
3666HWTEST_F(NativeEngineTest, ACE_Napi_Add_Finalizer_0400, testing::ext::TestSize.Level2)
3667{
3668    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0400 start";
3669
3670    napi_env env = (napi_env)engine_;
3671
3672    napi_value jsObj = nullptr;
3673    char16_t nativeObj[] = u"napiaddfinalizer";
3674    int finalizeHine = 0;
3675    static bool testValue = false;
3676
3677    napi_status verification = napi_create_object(env, &jsObj);
3678
3679    EXPECT_EQ(verification, napi_ok);
3680
3681    napi_ref result = nullptr;
3682    napi_status ret = napi_add_finalizer(nullptr, jsObj, &nativeObj, [](napi_env env, void* data, void* hint) {
3683        testValue = true;
3684    }, &finalizeHine, &result);
3685
3686    EXPECT_EQ(ret, napi_invalid_arg);
3687    EXPECT_FALSE(testValue);
3688
3689    napi_status output = napi_delete_reference(env, result);
3690    EXPECT_EQ(output, napi_invalid_arg);
3691
3692    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0400 end";
3693}
3694
3695/**
3696 * @tc.number    : ACE_Napi_Add_Finalizer_0500
3697 * @tc.name      : The necessary parameters of napi_add_finalizer are valid,
3698 *                 the local data bound to the JS object is valid, and callback functions can be added.
3699 * @tc.desc      : 1. Set up the env environment.
3700 *                 2. Configuration parameter.
3701 *                 3. Verify napi_add_finalizer.
3702 */
3703HWTEST_F(NativeEngineTest, ACE_Napi_Add_Finalizer_0500, testing::ext::TestSize.Level1)
3704{
3705    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0500 start";
3706
3707    napi_env env = (napi_env)engine_;
3708
3709    napi_value jsObj = nullptr;
3710    char16_t nativeObj[] = u"napiaddfinalizer";
3711    int finalizeHine = 0;
3712    static bool testValue = false;
3713
3714    napi_status verification = napi_create_object(env, &jsObj);
3715
3716    EXPECT_EQ(verification, napi_ok);
3717
3718    napi_status ret = napi_add_finalizer(env, jsObj, &nativeObj, [](napi_env env, void* data, void* hint) {
3719        testValue = true;
3720    }, &finalizeHine, nullptr);
3721
3722    EXPECT_EQ(ret, napi_ok);
3723    EXPECT_FALSE(testValue);
3724
3725    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0500 end";
3726}
3727
3728/**
3729 * @tc.number    : ACE_Napi_Add_Finalizer_0600
3730 * @tc.name      : The necessary parameters of napi_add_finalizer are valid,
3731 *                 and the local data bound to the JS object is invalid. Callback functions can be added.
3732 * @tc.desc      : 1. Set up the env environment.
3733 *                 2. Configuration parameter.
3734 *                 3. Verify napi_add_finalizer.
3735 */
3736HWTEST_F(NativeEngineTest, ACE_Napi_Add_Finalizer_0600, testing::ext::TestSize.Level1)
3737{
3738    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0600 start";
3739
3740    napi_env env = (napi_env)engine_;
3741
3742    napi_value jsObj = nullptr;
3743    char16_t nativeObj[] = u"napiaddfinalizer";
3744    static bool testValue = false;
3745
3746    napi_status verification = napi_create_object(env, &jsObj);
3747
3748    EXPECT_EQ(verification, napi_ok);
3749
3750    napi_status ret = napi_add_finalizer(env, jsObj, &nativeObj, [](napi_env env, void* data, void* hint) {
3751        testValue = true;
3752    }, nullptr, nullptr);
3753
3754    EXPECT_EQ(ret, napi_ok);
3755    EXPECT_FALSE(testValue);
3756
3757    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0600 end";
3758}
3759
3760/**
3761 * @tc.number    : ACE_Napi_Add_Finalizer_0700
3762 * @tc.name      : The necessary parameters of napi_add_finalizer are valid,
3763 *                 the callback function parameter is valid, and the callback function can be added.
3764 * @tc.desc      : 1. Set up the env environment.
3765 *                 2. Configuration parameter.
3766 *                 3. Verify napi_add_finalizer.
3767 */
3768HWTEST_F(NativeEngineTest, ACE_Napi_Add_Finalizer_0700, testing::ext::TestSize.Level2)
3769{
3770    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0700 start";
3771
3772    napi_env env = (napi_env)engine_;
3773
3774    napi_value jsObj = nullptr;
3775    int finalizeHine = 0;
3776
3777    napi_status verification = napi_create_object(env, &jsObj);
3778
3779    EXPECT_EQ(verification, napi_ok);
3780
3781    napi_status ret = napi_add_finalizer(env, jsObj, nullptr, nullptr, &finalizeHine, nullptr);
3782
3783    EXPECT_EQ(ret, napi_invalid_arg);
3784
3785    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0700 end";
3786}
3787
3788/**
3789 * @tc.number    : ACE_Napi_Add_Finalizer_0800
3790 * @tc.name      : The necessary parameters of napi_add_finalizer are valid,
3791 *                 and the callback function parameter is invalid. Callback function can be added.
3792 * @tc.desc      : 1. Set up the env environment.
3793 *                 2. Configuration parameter.
3794 *                 3. Verify napi_add_finalizer.
3795 */
3796HWTEST_F(NativeEngineTest, ACE_Napi_Add_Finalizer_0800, testing::ext::TestSize.Level1)
3797{
3798    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0800 start";
3799
3800    napi_env env = (napi_env)engine_;
3801
3802    napi_value jsObj = nullptr;
3803    int finalizeHine = 0;
3804    static bool testValue = false;
3805
3806    napi_status verification = napi_create_object(env, &jsObj);
3807
3808    EXPECT_EQ(verification, napi_ok);
3809
3810    napi_ref result = nullptr;
3811    napi_status ret = napi_add_finalizer(env, jsObj, nullptr, [](napi_env env, void* data, void* hint) {
3812        testValue = true;
3813    }, &finalizeHine, &result);
3814
3815    EXPECT_EQ(ret, napi_ok);
3816
3817    napi_status output = napi_delete_reference(env, result);
3818    EXPECT_EQ(output, napi_ok);
3819    EXPECT_TRUE(testValue);
3820
3821    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0800 end";
3822}
3823
3824/**
3825 * @tc.number    : ACE_Napi_Add_Finalizer_0900
3826 * @tc.name      : The necessary parameters of napi_add_finalizer are valid,
3827 *                 the reference of the returned JS object is valid, and the callback function can be added.
3828 * @tc.desc      : 1. Set up the env environment.
3829 *                 2. Configuration parameter.
3830 *                 3. Verify napi_add_finalizer.
3831 */
3832HWTEST_F(NativeEngineTest, ACE_Napi_Add_Finalizer_0900, testing::ext::TestSize.Level2)
3833{
3834    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0900 start";
3835
3836    napi_env env = (napi_env)engine_;
3837
3838    napi_value jsObj = nullptr;
3839    int finalizeHine = 0;
3840
3841    napi_status verification = napi_create_object(env, &jsObj);
3842
3843    EXPECT_EQ(verification, napi_ok);
3844
3845    napi_ref result = nullptr;
3846    napi_status ret = napi_add_finalizer(env, jsObj, nullptr, nullptr, &finalizeHine, &result);
3847
3848    EXPECT_EQ(ret, napi_invalid_arg);
3849
3850    napi_status output = napi_delete_reference(env, result);
3851    EXPECT_EQ(output, napi_invalid_arg);
3852
3853    GTEST_LOG_(INFO) << "ACE_Napi_Add_Finalizer_0900 end";
3854}
3855
3856/**
3857 * @tc.number    : ACE_Napi_Adjust_External_Memory_0100
3858 * @tc.name      : The necessary parameters of napi_adjust_external_memory
3859 *                 are valid and the function can be called successfully.
3860 * @tc.desc      : 1. Set up the env environment.
3861 *                 2. Configuration parameter.
3862 *                 3. Verify napi_add_finalizer.
3863 */
3864HWTEST_F(NativeEngineTest, ACE_Napi_Adjust_External_Memory_0100, testing::ext::TestSize.Level2)
3865{
3866    GTEST_LOG_(INFO) << "ACE_Napi_Adjust_External_Memory_0100 start";
3867
3868    napi_env env = (napi_env)engine_;
3869
3870    int64_t change_in_bytes = CHANGE_IN_BYTES;
3871    int64_t adjusted_value = ADJUSTED_VALUE;
3872
3873    napi_status ret = napi_adjust_external_memory(env, change_in_bytes, &adjusted_value);
3874
3875    EXPECT_EQ(ret, napi_ok);
3876
3877    GTEST_LOG_(INFO) << "ACE_Napi_Adjust_External_Memory_0100 end";
3878}
3879
3880/**
3881 * @tc.number    : ACE_Napi_Adjust_External_Memory_0200
3882 * @tc.name      : The size parameter of napi_adjust_external_memory's return
3883 *                 instance allocated memory is invalid, the function is called.
3884 * @tc.desc      : 1. Set up the env environment.
3885 *                 2. Configuration parameter.
3886 *                 3. Verify napi_add_finalizer.
3887 */
3888HWTEST_F(NativeEngineTest, ACE_Napi_Adjust_External_Memory_0200, testing::ext::TestSize.Level2)
3889{
3890    GTEST_LOG_(INFO) << "ACE_Napi_Adjust_External_Memory_0200 start";
3891
3892    napi_env env = (napi_env)engine_;
3893
3894    int64_t change_in_bytes = CHANGE_IN_BYTES;
3895
3896    napi_status ret = napi_adjust_external_memory(env, change_in_bytes, nullptr);
3897
3898    EXPECT_EQ(ret, napi_invalid_arg);
3899
3900    GTEST_LOG_(INFO) << "ACE_Napi_Adjust_External_Memory_0200 end";
3901}
3902
3903/**
3904 * @tc.number    : ACE_Napi_Adjust_External_Memory_0300
3905 * @tc.name      : The environment parameter of napi_adjust_external_memory is invalid, the function is called.
3906 * @tc.desc      : 1. Set up the env environment.
3907 *                 2. Configuration parameter.
3908 *                 3. Verify napi_add_finalizer.
3909 */
3910HWTEST_F(NativeEngineTest, ACE_Napi_Adjust_External_Memory_0300, testing::ext::TestSize.Level2)
3911{
3912    GTEST_LOG_(INFO) << "ACE_Napi_Adjust_External_Memory_0300 start";
3913
3914    int64_t change_in_bytes = CHANGE_IN_BYTES;
3915    int64_t adjusted_value = ADJUSTED_VALUE;
3916
3917    napi_status ret = napi_adjust_external_memory(nullptr, change_in_bytes, &adjusted_value);
3918
3919    EXPECT_EQ(ret, napi_invalid_arg);
3920
3921    GTEST_LOG_(INFO) << "ACE_Napi_Adjust_External_Memory_0300 end";
3922}
3923#if  (defined(FOR_JERRYSCRIPT_TEST)) &&  (JERRY_API_MINOR_VERSION <= 3)
3924    // jerryscript 2.3 do nothing
3925#else
3926// jerryscript 2.4 or quickjs or V8
3927/**
3928 * @tc.number    : ACE_Napi_Get_All_Property_Names_0100
3929 * @tc.name      : The parameter is valid,
3930 *                 the parameter object enters the js object with the defined properties,
3931 *                 the parameter key_mode enters napi_key_include_prototypes,
3932 *                 the parameter key_filter enters napi_key_all_properties,
3933 *                 the parameter key_conversion enters napi_key_keep_numbers, and the test is confirmed.
3934 * @tc.desc      : 1. Set up the env environment.
3935 *                 2. Configuration parameter.
3936 *                 3. Verify napi_get_array_length.
3937 */
3938HWTEST_F(NativeEngineTest, ACE_Napi_Get_All_Property_Names_0100, testing::ext::TestSize.Level1)
3939{
3940    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0100 start";
3941
3942    napi_env env = (napi_env)engine_;
3943
3944    napi_value result = nullptr;
3945    napi_status verification = napi_create_object(env, &result);
3946
3947    EXPECT_EQ(verification, napi_ok);
3948
3949    int32_t testNumber = 12345;
3950    napi_value numberAttribute = nullptr;
3951    napi_status verifiint = napi_create_int32(env, testNumber, &numberAttribute);
3952
3953    EXPECT_EQ(verifiint, napi_ok);
3954
3955    napi_status verifiname = napi_set_named_property(env, result, "numberAttribute", numberAttribute);
3956
3957    EXPECT_EQ(verifiname, napi_ok);
3958
3959    napi_key_collection_mode keyMode = napi_key_own_only;
3960    napi_key_filter keyFilter = napi_key_all_properties;
3961    napi_key_conversion keyConversion = napi_key_keep_numbers;
3962    napi_value propNames = nullptr;
3963    napi_status ret = napi_get_all_property_names(env, result, keyMode, keyFilter, keyConversion, &propNames);
3964
3965    EXPECT_EQ(ret, napi_ok);
3966
3967    uint32_t length = 0;
3968    napi_status verifilen = napi_get_array_length(env, propNames, &length);
3969
3970    EXPECT_EQ(verifilen, napi_ok);
3971    EXPECT_EQ(length, (size_t)1);
3972
3973    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0100 end";
3974}
3975
3976/**
3977 * @tc.number    : ACE_Napi_Get_All_Property_Names_0200
3978 * @tc.name      : The parameter is invalid,
3979 *                 the parameter object enters the js object with defined properties,
3980 *                 the parameter key_mode enters napi_key_own_only,
3981 *                 the parameter key_filter enters napi_key_all_properties,
3982 *                 the parameter key_conversion enters napi_key_keep_numbers, and the test is confirmed.
3983 * @tc.desc      : 1. Set up the env environment.
3984 *                 2. Configuration parameter.
3985 *                 3. Verify napi_get_array_length.
3986 */
3987HWTEST_F(NativeEngineTest, ACE_Napi_Get_All_Property_Names_0200, testing::ext::TestSize.Level2)
3988{
3989    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0200 start";
3990
3991    napi_env env = (napi_env)engine_;
3992
3993    napi_value result = nullptr;
3994    napi_status verification = napi_create_object(env, &result);
3995
3996    EXPECT_EQ(verification, napi_ok);
3997
3998    int32_t testNumber = 12345;
3999    napi_value numberAttribute = nullptr;
4000    napi_status verifiint = napi_create_int32(env, testNumber, &numberAttribute);
4001
4002    EXPECT_EQ(verifiint, napi_ok);
4003
4004    napi_status verifiname = napi_set_named_property(env, result, "numberAttribute", numberAttribute);
4005
4006    EXPECT_EQ(verifiname, napi_ok);
4007
4008    napi_key_collection_mode keyMode = napi_key_own_only;
4009    napi_key_filter keyFilter = napi_key_all_properties;
4010    napi_key_conversion keyConversion = napi_key_keep_numbers;
4011    napi_value propNames = nullptr;
4012    napi_status ret = napi_get_all_property_names(nullptr, result, keyMode, keyFilter, keyConversion, &propNames);
4013
4014    EXPECT_EQ(ret, napi_invalid_arg);
4015
4016    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0200 end";
4017}
4018
4019/**
4020 * @tc.number    : ACE_Napi_Get_All_Property_Names_0300
4021 * @tc.name      : The parameter is invalid,
4022 *                 the parameter object enters the js object with the defined properties,
4023 *                 the parameter key_mode enters napi_key_own_only,
4024 *                 the parameter key_filter enters napi_key_all_properties,
4025 *                 the parameter key_conversion enters napi_key_keep_numbers,
4026 *                 the parameter result enters empty, and the test is confirmed.
4027 * @tc.desc      : 1. Set up the env environment.
4028 *                 2. Configuration parameter.
4029 *                 3. Verify napi_get_array_length.
4030 */
4031HWTEST_F(NativeEngineTest, ACE_Napi_Get_All_Property_Names_0300, testing::ext::TestSize.Level2)
4032{
4033    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0300 start";
4034
4035    napi_env env = (napi_env)engine_;
4036
4037    napi_value result = nullptr;
4038    napi_status verification = napi_create_object(env, &result);
4039
4040    EXPECT_EQ(verification, napi_ok);
4041
4042    int32_t testNumber = 12345;
4043    napi_value numberAttribute = nullptr;
4044    napi_status verifiint = napi_create_int32(env, testNumber, &numberAttribute);
4045
4046    EXPECT_EQ(verifiint, napi_ok);
4047
4048    napi_status verifiname = napi_set_named_property(env, result, "numberAttribute", numberAttribute);
4049
4050    EXPECT_EQ(verifiname, napi_ok);
4051
4052    napi_key_collection_mode keyMode = napi_key_own_only;
4053    napi_key_filter keyFilter = napi_key_all_properties;
4054    napi_key_conversion keyConversion = napi_key_keep_numbers;
4055    napi_status ret = napi_get_all_property_names(env, result, keyMode, keyFilter, keyConversion, nullptr);
4056
4057    EXPECT_EQ(ret, napi_invalid_arg);
4058
4059    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0300 end";
4060}
4061
4062/**
4063 * @tc.number    : ACE_Napi_Get_All_Property_Names_0400
4064 * @tc.name      : The parameter is invalid,
4065 *                 the parameter object is empty,
4066 *                 the parameter key_mode is entered napi_key_own_only,
4067 *                 the parameter key_filter is entered napi_key_all_properties,
4068 *                 the parameter key_conversion is entered napi_key_keep_numbers,
4069 *                 and the test is confirmed.
4070 * @tc.desc      : 1. Set up the env environment.
4071 *                 2. Configuration parameter.
4072 *                 3. Verify napi_get_array_length.
4073 */
4074HWTEST_F(NativeEngineTest, ACE_Napi_Get_All_Property_Names_0400, testing::ext::TestSize.Level2)
4075{
4076    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0400 start";
4077
4078    napi_env env = (napi_env)engine_;
4079
4080    napi_key_collection_mode keyMode = napi_key_own_only;
4081    napi_key_filter keyFilter = napi_key_all_properties;
4082    napi_key_conversion keyConversion = napi_key_keep_numbers;
4083    napi_value propNames = nullptr;
4084    napi_status ret = napi_get_all_property_names(env, nullptr, keyMode, keyFilter, keyConversion, &propNames);
4085
4086    EXPECT_EQ(ret, napi_invalid_arg);
4087
4088    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0400 end";
4089}
4090
4091/**
4092 * @tc.number    : ACE_Napi_Get_All_Property_Names_0500
4093 * @tc.name      : The parameter is invalid,
4094 *                 the parameter object enters the js object with the defined properties,
4095 *                 the parameter key_mode enters napi_key_include_prototypes,
4096 *                 the parameter key_filter enters napi_key_numbers_to_strings,
4097 *                 the parameter key_conversion enters napi_key_keep_numbers.
4098 * @tc.desc      : 1. Set up the env environment.
4099 *                 2. Configuration parameter.
4100 *                 3. Verify napi_get_array_length.
4101 */
4102HWTEST_F(NativeEngineTest, ACE_Napi_Get_All_Property_Names_0500, testing::ext::TestSize.Level1)
4103{
4104    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0500 start";
4105
4106    napi_env env = (napi_env)engine_;
4107
4108    napi_value result = nullptr;
4109    napi_status verification = napi_create_object(env, &result);
4110
4111    EXPECT_EQ(verification, napi_ok);
4112
4113    int32_t testNumber = 12345;
4114    napi_value numberAttribute = nullptr;
4115    napi_status verifiint = napi_create_int32(env, testNumber, &numberAttribute);
4116
4117    EXPECT_EQ(verifiint, napi_ok);
4118
4119    napi_status verifiname = napi_set_named_property(env, result, "numberAttribute", numberAttribute);
4120
4121    EXPECT_EQ(verifiname, napi_ok);
4122
4123    napi_key_collection_mode keyMode = napi_key_include_prototypes;
4124    napi_key_filter keyFilter = napi_key_all_properties;
4125    napi_key_conversion keyConversion = napi_key_numbers_to_strings;
4126    napi_value propNames = nullptr;
4127    napi_status ret = napi_get_all_property_names(env, result, keyMode, keyFilter, keyConversion, &propNames);
4128
4129    EXPECT_EQ(ret, napi_ok);
4130
4131    uint32_t length = 0;
4132    napi_status verifilen = napi_get_array_length(env, propNames, &length);
4133
4134    EXPECT_EQ(verifilen, napi_ok);
4135    EXPECT_EQ(length, (size_t)1);
4136
4137    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0500 end";
4138}
4139
4140/**
4141 * @tc.number    : ACE_Napi_Get_All_Property_Names_0600
4142 * @tc.name      : The parameter is valid,
4143 *                 the parameter object enters the js object with the defined properties,
4144 *                 the parameter key_mode enters napi_key_include_prototypes,
4145 *                 the parameter key_filter enters napi_key_writable,
4146 *                 the parameter key_conversion enters napi_key_keep_numbers, and the test is confirmed.
4147 * @tc.desc      : 1. Set up the env environment.
4148 *                 2. Configuration parameter.
4149 *                 3. Verify napi_get_array_length.
4150 */
4151HWTEST_F(NativeEngineTest, ACE_Napi_Get_All_Property_Names_0600, testing::ext::TestSize.Level1)
4152{
4153    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0600 start";
4154
4155    napi_env env = (napi_env)engine_;
4156
4157    napi_value result = nullptr;
4158    napi_status verification = napi_create_object(env, &result);
4159
4160    EXPECT_EQ(verification, napi_ok);
4161
4162    int32_t testNumber = 12345;
4163    napi_value numberAttribute = nullptr;
4164    napi_status verifiint = napi_create_int32(env, testNumber, &numberAttribute);
4165
4166    EXPECT_EQ(verifiint, napi_ok);
4167
4168    napi_status verifiname = napi_set_named_property(env, result, "numberAttribute", numberAttribute);
4169
4170    EXPECT_EQ(verifiname, napi_ok);
4171
4172    napi_key_collection_mode keyMode = napi_key_own_only;
4173    napi_key_filter keyFilter = napi_key_writable;
4174    napi_key_conversion keyConversion = napi_key_keep_numbers;
4175    napi_value propNames = nullptr;
4176    napi_status ret = napi_get_all_property_names(env, result, keyMode, keyFilter, keyConversion, &propNames);
4177
4178    EXPECT_EQ(ret, napi_ok);
4179
4180    uint32_t length = 0;
4181    napi_status verifilen = napi_get_array_length(env, propNames, &length);
4182
4183    EXPECT_EQ(verifilen, napi_ok);
4184    EXPECT_EQ(length, (size_t)1);
4185
4186    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0600 end";
4187}
4188
4189/**
4190 * @tc.number    : ACE_Napi_Get_All_Property_Names_0700
4191 * @tc.name      : The parameter is valid,
4192 *                 the parameter object enters the js object with the defined properties,
4193 *                 the parameter key_mode enters napi_key_include_prototypes,
4194 *                 the parameter key_filter enters napi_key_enumerable,
4195 *                 the parameter key_conversion enters napi_key_keep_numbers, and the test is confirmed.
4196 * @tc.desc      : 1. Set up the env environment.
4197 *                 2. Configuration parameter.
4198 *                 3. Verify napi_get_array_length.
4199 */
4200HWTEST_F(NativeEngineTest, ACE_Napi_Get_All_Property_Names_0700, testing::ext::TestSize.Level1)
4201{
4202    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0700 start";
4203
4204    napi_env env = (napi_env)engine_;
4205
4206    napi_value result = nullptr;
4207    napi_status verification = napi_create_object(env, &result);
4208
4209    EXPECT_EQ(verification, napi_ok);
4210
4211    int32_t testNumber = 12345;
4212    napi_value numberAttribute = nullptr;
4213    napi_status verifiint = napi_create_int32(env, testNumber, &numberAttribute);
4214
4215    EXPECT_EQ(verifiint, napi_ok);
4216
4217    napi_status verifiname = napi_set_named_property(env, result, "numberAttribute", numberAttribute);
4218
4219    EXPECT_EQ(verifiname, napi_ok);
4220
4221    napi_key_collection_mode keyMode = napi_key_own_only;
4222    napi_key_filter keyFilter = napi_key_enumerable;
4223    napi_key_conversion keyConversion = napi_key_keep_numbers;
4224    napi_value propNames = nullptr;
4225    napi_status ret = napi_get_all_property_names(env, result, keyMode, keyFilter, keyConversion, &propNames);
4226
4227    EXPECT_EQ(ret, napi_ok);
4228
4229    uint32_t length = 0;
4230    napi_status verifilen = napi_get_array_length(env, propNames, &length);
4231
4232    EXPECT_EQ(verifilen, napi_ok);
4233    EXPECT_EQ(length, (size_t)1);
4234
4235    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0700 end";
4236}
4237
4238/**
4239 * @tc.number    : ACE_Napi_Get_All_Property_Names_0800
4240 * @tc.name      : Invalid parameter, invalid parameter object input (non-object object, for example: string),
4241 *                 parameter key_mode input napi_key_include_prototypes,
4242 *                 parameter key_filter input napi_key_all_properties,
4243 *                 parameter key_conversion input napi_key_keep_numbers, test confirmation.
4244 * @tc.desc      : 1. Install the app.
4245 *                 2. Start the application.
4246 *                 3. Call napi_create_string_utf8 to create a string.
4247 *                 4. Call napi_get_all_property_names.
4248 */
4249HWTEST_F(NativeEngineTest, ACE_Napi_Get_All_Property_Names_0800, testing::ext::TestSize.Level2)
4250{
4251    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0800 start";
4252
4253    napi_env env = (napi_env)engine_;
4254    napi_value result = nullptr;
4255    napi_status verification = napi_create_string_utf8(env, "napi_get_all_property_namesTest",
4256        NAPI_AUTO_LENGTH, &result);
4257
4258    EXPECT_EQ(verification, napi_ok);
4259
4260    napi_key_collection_mode keyMode = napi_key_include_prototypes;
4261    napi_key_filter keyFilter = napi_key_all_properties;
4262    napi_key_conversion keyConversion = napi_key_keep_numbers;
4263    napi_value propNames = nullptr;
4264    napi_status ret = napi_get_all_property_names(env, result, keyMode, keyFilter, keyConversion, &propNames);
4265
4266    EXPECT_EQ(ret, napi_object_expected);
4267    GTEST_LOG_(INFO) << "ACE_Napi_Get_All_Property_Names_0800 end";
4268}
4269#endif // (defined(FOR_JERRYSCRIPT_TEST)) &&  (JERRY_API_MINOR_VERSION <= 3)
4270/*
4271 * @tc.number    : ACE_Napi_Create_Buffer_0100
4272 * @tc.name      : The parameters of napi_create_buffer are valid,
4273 *                 The parameter of buffer size is the minimum value (1),
4274 *                 A node::Buffer object can be created
4275 * @tc.desc      : 1.The environment engine is created
4276 *                 2.Set test variables
4277 *                 3.The function of napi_create_buffer is called
4278 *                 4.Return value of function is napi_ok
4279 */
4280HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_0100, testing::ext::TestSize.Level1)
4281{
4282    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0100 start";
4283
4284    napi_env env = (napi_env)engine_;
4285    napi_value Buffer = nullptr;
4286    void* BufferPtr = nullptr;
4287    size_t BufferSize = 1;
4288
4289    napi_status creatresult = napi_create_buffer(env, BufferSize, &BufferPtr, &Buffer);
4290    EXPECT_EQ(creatresult, napi_status::napi_ok);
4291    EXPECT_NE(BufferPtr, nullptr);
4292
4293    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0100 end";
4294}
4295
4296/*
4297 * @tc.number    : ACE_Napi_Create_Buffer_0200
4298 * @tc.name      : The parameter of buffer size is the over maxnum value (2G),
4299 *                 A node::Buffer object can  not be created
4300 * @tc.desc      : 1.The environment engine is created
4301 *                 2.Set test variables
4302 *                 3.The function of napi_create_buffer is called
4303 *                 4.Return value of function is napi_invalid_arg
4304 */
4305HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_0200, testing::ext::TestSize.Level1)
4306{
4307    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0200 start";
4308
4309    napi_env env = (napi_env)engine_;
4310    napi_value Buffer = nullptr;
4311    void* BufferPtr = nullptr;
4312    size_t BufferSize = BUFFER_OVERMAX_SIZE;
4313
4314    napi_status creatresult = napi_create_buffer(env, BufferSize, &BufferPtr, &Buffer);
4315    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
4316    EXPECT_EQ(BufferPtr, nullptr);
4317
4318    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0200 end";
4319}
4320
4321/*
4322 * @tc.number    : ACE_Napi_Create_Buffer_0300
4323 * @tc.name      : The parameter of buffer size is invalid(-1),
4324 *                 A node::Buffer object can  not be created
4325 * @tc.desc      : 1.The environment engine is created
4326 *                 2.Set test variables
4327 *                 3.The function of napi_create_buffer is called
4328 *                 4.Return value of function is napi_invalid_arg
4329 */
4330HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_0300, testing::ext::TestSize.Level2)
4331{
4332    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0300 start";
4333
4334    napi_env env = (napi_env)engine_;
4335    napi_value Buffer = nullptr;
4336    void* BufferPtr = nullptr;
4337    size_t BufferSize = -1;
4338
4339    GTEST_LOG_(INFO) << "BufferSize is" << BufferSize;
4340    napi_status creatresult = napi_create_buffer(env, BufferSize, &BufferPtr, &Buffer);
4341    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
4342    EXPECT_EQ(BufferPtr, nullptr);
4343
4344    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0300 end";
4345}
4346
4347/*
4348 * @tc.number    : ACE_Napi_Create_Buffer_0400
4349 * @tc.name      : The parameter of buffer size is invalid(0),
4350 *                 A node::Buffer object can  not be created
4351 * @tc.desc      : 1.The environment engine is created
4352 *                 2.Set test variables
4353 *                 3.The function of napi_create_buffer is called
4354 *                 4.Return value of function is napi_invalid_arg
4355 */
4356HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_0400, testing::ext::TestSize.Level2)
4357{
4358    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0400 start";
4359
4360    napi_env env = (napi_env)engine_;
4361    napi_value Buffer = nullptr;
4362    void* BufferPtr = nullptr;
4363    size_t BufferSize = 0;
4364
4365    napi_status creatresult = napi_create_buffer(env, BufferSize, &BufferPtr, &Buffer);
4366    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
4367    EXPECT_EQ(BufferPtr, nullptr);
4368
4369    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0400 end";
4370}
4371
4372/*
4373 * @tc.number    : ACE_Napi_Create_Buffer_0500
4374 * @tc.name      : Raw pointer to the underlying buffer is invalid(nullptr),
4375 *                 A node::Buffer object can  not be created
4376 * @tc.desc      : 1.The environment engine is created
4377 *                 2.Set test variables
4378 *                 3.The function of napi_create_buffer is called
4379 *                 4.Return value of function is napi_invalid_arg
4380 */
4381HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_0500, testing::ext::TestSize.Level2)
4382{
4383    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0500 start";
4384
4385    napi_env env = (napi_env)engine_;
4386    napi_value Buffer = nullptr;
4387    size_t BufferSize = 1024;
4388
4389    napi_status creatresult = napi_create_buffer(env, BufferSize, nullptr, &Buffer);
4390    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
4391
4392    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0500 end";
4393}
4394
4395/*
4396 * @tc.number    : ACE_Napi_Create_Buffer_0600
4397 * @tc.name      : The parameter of result is invalid(nullptr),
4398 *                 A node::Buffer object can  not be created
4399 * @tc.desc      : 1.The environment engine is created
4400 *                 2.Set test variables
4401 *                 3.The function of napi_create_buffer is called
4402 *                 4.Return value of function is napi_invalid_arg
4403 */
4404HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_0600, testing::ext::TestSize.Level2)
4405{
4406    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0600 start";
4407
4408    napi_env env = (napi_env)engine_;
4409    void* BufferPtr = nullptr;
4410    size_t BufferSize = 1024;
4411
4412    napi_status creatresult = napi_create_buffer(env, BufferSize, &BufferPtr, nullptr);
4413    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
4414
4415    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0600 end";
4416}
4417
4418/*
4419 * @tc.number    : ACE_Napi_Create_Buffer_0700
4420 * @tc.name      : The parameter of environment  is invalid(nullptr),
4421 *                 A node::Buffer object can  not be created
4422 * @tc.desc      : 1.The environment engine is created
4423 *                 2.Set test variables
4424 *                 3.The function of napi_create_buffer is called
4425 *                 4.Return value of function is napi_invalid_arg
4426 */
4427HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_0700, testing::ext::TestSize.Level2)
4428{
4429    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0700 start";
4430
4431    napi_env env = nullptr;
4432    napi_value Buffer = nullptr;
4433    void* BufferPtr = nullptr;
4434    size_t BufferSize = 1024;
4435
4436    napi_status creatresult = napi_create_buffer(env, BufferSize, &BufferPtr, &Buffer);
4437    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
4438
4439    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_0700 end";
4440}
4441
4442/*
4443 * @tc.number    : ACE_Napi_Is_Buffer_0100
4444 * @tc.name      : The parameters of napi_is_buffer are valid,
4445 *                 The buffer is created by napi_create_buffer function,
4446 *                 Checks if the Object passed in is a buffer.
4447 * @tc.desc      : 1.The environment engine is created
4448 *                 2.Set test variables
4449 *                 3.The function of napi_create_buffer is used to create a new buffer
4450 *                 4.The function of napi_is_buffer is called
4451 *                 5.Return value of function is napi_ok
4452 */
4453HWTEST_F(NativeEngineTest, ACE_Napi_Is_Buffer_0100, testing::ext::TestSize.Level1)
4454{
4455    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Is_Buffer_0100 start";
4456
4457    napi_env env = (napi_env)engine_;
4458    napi_value Buffer = nullptr;
4459    void* BufferPtr = nullptr;
4460    size_t BufferSize = 1024;
4461
4462    napi_status creatresult = napi_create_buffer(env, BufferSize, &BufferPtr, &Buffer);
4463    EXPECT_EQ(creatresult, napi_status::napi_ok);
4464    bool isBuffer = false;
4465    napi_status isresult = napi_is_buffer(env, Buffer, &isBuffer);
4466    EXPECT_EQ(isresult, napi_status::napi_ok);
4467    EXPECT_TRUE(isBuffer);
4468
4469    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Is_Buffer_0100 end";
4470}
4471
4472/*
4473 * @tc.number    : ACE_Napi_Is_Buffer_0200
4474 * @tc.name      : The parameters of napi_is_buffer are valid,
4475 *                 The buffer is created by napi_create_buffer_copy function,
4476 *                 Checks if the Object passed in is a buffer.
4477 * @tc.desc      : 1.The environment engine is created
4478 *                 2.Set test variables
4479 *                 3.The function of napi_create_buffer_copy is used to create a new buffer
4480 *                 4.The function of napi_is_buffer is called
4481 *                 5.Return value of function is napi_ok
4482 */
4483HWTEST_F(NativeEngineTest, ACE_Napi_Is_Buffer_0200, testing::ext::TestSize.Level1)
4484{
4485    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Is_Buffer_0200 start";
4486
4487    napi_env env = (napi_env)engine_;
4488    napi_value Buffer = nullptr;
4489    void* result_data = nullptr;
4490    size_t BufferSize = sizeof(Text);
4491
4492    napi_status creatresult = napi_create_buffer_copy(env, BufferSize, Text, &result_data, &Buffer);
4493    EXPECT_EQ(creatresult, napi_status::napi_ok);
4494    bool isBuffer = false;
4495    napi_status isresult = napi_is_buffer(env, Buffer, &isBuffer);
4496    EXPECT_EQ(isresult, napi_status::napi_ok);
4497    EXPECT_TRUE(isBuffer);
4498
4499    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Is_Buffer_0200 end";
4500}
4501
4502/*
4503 * @tc.number    : ACE_Napi_Is_Buffer_0300
4504 * @tc.name      : The parameters of napi_is_buffer are valid,
4505 *                 The buffer is created by napi_create_external_buffer function,
4506 *                 Checks if the Object passed in is a buffer.
4507 * @tc.desc      : 1.The environment engine is created
4508 *                 2.Set test variables
4509 *                 3.The function of napi_create_external_buffer is used to create a new buffer
4510 *                 4.The function of napi_is_buffer is called
4511 *                 5.Return value of function is napi_ok
4512 */
4513HWTEST_F(NativeEngineTest, ACE_Napi_Is_Buffer_0300, testing::ext::TestSize.Level1)
4514{
4515    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Is_Buffer_0300 start";
4516
4517    napi_env env = (napi_env)engine_;
4518    napi_value Buffer = nullptr;
4519    size_t BufferSize = sizeof(Text);
4520
4521    napi_status creatresult = napi_create_external_buffer(env, BufferSize, Text, BufferFinalizer, nullptr, &Buffer);
4522    EXPECT_EQ(creatresult, napi_status::napi_ok);
4523    bool isBuffer = false;
4524    napi_status isresult = napi_is_buffer(env, Buffer, &isBuffer);
4525    EXPECT_EQ(isresult, napi_status::napi_ok);
4526    EXPECT_TRUE(isBuffer);
4527
4528    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Is_Buffer_0300 end";
4529}
4530
4531/*
4532 * @tc.number    : ACE_Napi_Is_Buffer_0400
4533 * @tc.name      : The JavaScript value to check is invalid
4534 * @tc.desc      : 1.The environment engine is created
4535 *                 2.Set test variables
4536 *                 3.The function of napi_create_buffer is used to create a invalid buffer
4537 *                 4.The function of napi_is_buffer is called
4538 *                 5.Return value of function is napi_invalid_arg
4539 */
4540HWTEST_F(NativeEngineTest, ACE_Napi_Is_Buffer_0400, testing::ext::TestSize.Level2)
4541{
4542    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Is_Buffer_0400 start";
4543
4544    napi_env env = (napi_env)engine_;
4545    napi_value Buffer = nullptr;
4546    void* BufferPtr = nullptr;
4547    size_t BufferSize = -1;
4548
4549    napi_status creatresult = napi_create_buffer(env, BufferSize, &BufferPtr, &Buffer);
4550    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
4551    EXPECT_EQ(BufferPtr, nullptr);
4552    bool isBuffer = false;
4553    napi_status isresult = napi_is_buffer(env, Buffer, &isBuffer);
4554    EXPECT_EQ(isresult, napi_status::napi_invalid_arg);
4555    EXPECT_FALSE(isBuffer);
4556
4557    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Is_Buffer_0400 end";
4558}
4559
4560/*
4561 * @tc.number    : ACE_Napi_Is_Buffer_0500
4562 * @tc.name      : The out parameter of result is invalid(nullptr)
4563 * @tc.desc      : 1.The environment engine is created
4564 *                 2.Set test variables
4565 *                 3.The function of napi_create_buffer is used to create a valid buffer
4566 *                 4.The function of napi_is_buffer is called
4567 *                 5.Return value of function is napi_invalid_arg
4568 */
4569HWTEST_F(NativeEngineTest, ACE_Napi_Is_Buffer_0500, testing::ext::TestSize.Level2)
4570{
4571    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Is_Buffer_0500 start";
4572
4573    napi_env env = (napi_env)engine_;
4574    napi_value Buffer = nullptr;
4575    void* BufferPtr = nullptr;
4576    size_t BufferSize = 1024;
4577
4578    napi_status creatresult = napi_create_buffer(env, BufferSize, &BufferPtr, &Buffer);
4579    EXPECT_EQ(creatresult, napi_status::napi_ok);
4580    napi_status isresult = napi_is_buffer(env, Buffer, nullptr);
4581    EXPECT_EQ(isresult, napi_status::napi_invalid_arg);
4582
4583    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Is_Buffer_0500 end";
4584}
4585
4586/*
4587 * @tc.number    : ACE_Napi_Is_Buffer_0600
4588 * @tc.name      : The parameter of environment is invalid(nullptr)
4589 * @tc.desc      : 1.The environment engine is created
4590 *                 2.Set test variables
4591 *                 3.The function of napi_create_buffer is used to create a valid buffer
4592 *                 4.The function of napi_is_buffer is called
4593 *                 5.Return value of function is napi_invalid_arg
4594 */
4595HWTEST_F(NativeEngineTest, ACE_Napi_Is_Buffer_0600, testing::ext::TestSize.Level2)
4596{
4597    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Is_Buffer_0600 start";
4598
4599    napi_env envone = (napi_env)engine_;
4600    napi_env envtwo = nullptr;
4601    napi_value Buffer = nullptr;
4602    void* BufferPtr = nullptr;
4603    size_t BufferSize = 1024;
4604
4605    napi_status creatresult = napi_create_buffer(envone, BufferSize, &BufferPtr, &Buffer);
4606    EXPECT_EQ(creatresult, napi_status::napi_ok);
4607    bool isBuffer = false;
4608    napi_status isresult = napi_is_buffer(envtwo, Buffer, &isBuffer);
4609    EXPECT_EQ(isresult, napi_status::napi_invalid_arg);
4610    EXPECT_FALSE(isBuffer);
4611
4612    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Is_Buffer_0600 end";
4613}
4614
4615/*
4616 * @tc.number    : ACE_Napi_Get_Buffer_Info_0100
4617 * @tc.name      : The parameters of napi_is_buffer are valid,
4618 *                 The buffer is created by napi_create_buffer function,
4619 *                 Checks if the Object passed in is a buffer.
4620 * @tc.desc      : 1.The environment engine is created
4621 *                 2.Set test variables
4622 *                 3.The function of napi_create_buffer is used to create a new buffer
4623 *                 4.The function of napi_get_buffer_info is called
4624 *                 5.Return value of function is napi_ok
4625 */
4626HWTEST_F(NativeEngineTest, ACE_Napi_Get_Buffer_Info_0100, testing::ext::TestSize.Level1)
4627{
4628    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Buffer_Info_0100 start";
4629
4630    napi_env env = (napi_env)engine_;
4631    napi_value Buffer = nullptr;
4632    void* BufferPtr = nullptr;
4633    size_t BufferSize = 1024;
4634
4635    napi_status creatresult = napi_create_buffer(env, BufferSize, &BufferPtr, &Buffer);
4636    EXPECT_EQ(creatresult, napi_status::napi_ok);
4637    void* tmpBufferPtr = nullptr;
4638    size_t BufferLength = 0;
4639    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
4640    EXPECT_EQ(getinforesult, napi_status::napi_ok);
4641    EXPECT_EQ(BufferPtr, tmpBufferPtr);
4642    GTEST_LOG_(INFO) << "*tmpBufferPtr"<<(char*)tmpBufferPtr;
4643    EXPECT_EQ(strcmp((char*)tmpBufferPtr, ""), 0);
4644    EXPECT_EQ(BufferSize, BufferLength);
4645
4646    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Buffer_Info_0100 end";
4647}
4648
4649/*
4650 * @tc.number    : ACE_Napi_Get_Buffer_Info_0200
4651 * @tc.name      : The parameter of value is invalid
4652 * @tc.desc      : 1.The environment engine is created
4653 *                 2.Set test variables
4654 *                 3.The function of napi_create_buffer_copy is used to create a invalid buffer
4655 *                 4.The function of napi_get_buffer_info is called
4656 *                 5.Return value of function is napi_ok
4657 */
4658HWTEST_F(NativeEngineTest, ACE_Napi_Get_Buffer_Info_0200, testing::ext::TestSize.Level1)
4659{
4660    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Buffer_Info_0200 start";
4661
4662    napi_env env = (napi_env)engine_;
4663    napi_value Buffer = nullptr;
4664    void* result_data = nullptr;
4665    size_t BufferSize = sizeof(Text);
4666
4667    napi_status creatresult = napi_create_buffer_copy(env, BufferSize, Text, &result_data, &Buffer);
4668    EXPECT_EQ(creatresult, napi_status::napi_ok);
4669    void* tmpBufferPtr = nullptr;
4670    size_t BufferLength = 0;
4671    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
4672    EXPECT_EQ(getinforesult, napi_status::napi_ok);
4673    GTEST_LOG_(INFO) << "*tmpBufferPtr"<<(char*)tmpBufferPtr;
4674    EXPECT_EQ(strcmp((char*)tmpBufferPtr, "hello world"), 0);
4675    EXPECT_EQ(result_data, tmpBufferPtr);
4676    EXPECT_EQ(BufferSize, BufferLength);
4677
4678    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Buffer_Info_0200 end";
4679}
4680
4681/*
4682 * @tc.number    : ACE_Napi_Get_Buffer_Info_0300
4683 * @tc.name      : The parameter of value is invalid(nullptr)
4684 * @tc.desc      : 1.The environment engine is created
4685 *                 2.Set test variables
4686 *                 3.The function of napi_get_buffer_info is called
4687 *                 4.Return value of function is napi_invalid_arg
4688 */
4689HWTEST_F(NativeEngineTest, ACE_Napi_Get_Buffer_Info_0300, testing::ext::TestSize.Level2)
4690{
4691    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Buffer_Info_0300 start";
4692
4693    napi_env env = (napi_env)engine_;
4694    napi_value Buffer = nullptr;
4695    void* tmpBufferPtr = nullptr;
4696    size_t BufferLength = 0;
4697
4698    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
4699    EXPECT_EQ(getinforesult, napi_status::napi_invalid_arg);
4700    EXPECT_EQ(nullptr, tmpBufferPtr);
4701
4702    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Buffer_Info_0300 end";
4703}
4704
4705/*
4706 * @tc.number    : ACE_Napi_Get_Buffer_Info_0400
4707 * @tc.name      : The parameters of data buffer and length are invalid
4708 * @tc.desc      : 1.The environment engine is created
4709 *                 2.Set test variables
4710 *                 3.The function of napi_get_buffer_info is called
4711 *                 4.Return value of function is napi_ok
4712 */
4713HWTEST_F(NativeEngineTest, ACE_Napi_Get_Buffer_Info_0400, testing::ext::TestSize.Level1)
4714{
4715    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Buffer_Info_0400 start";
4716
4717    napi_env env = (napi_env)engine_;
4718    napi_value Buffer = nullptr;
4719    void* BufferPtr = nullptr;
4720    size_t BufferSize = 1024;
4721
4722    napi_status creatresult = napi_create_buffer(env, BufferSize, &BufferPtr, &Buffer);
4723    EXPECT_EQ(creatresult, napi_status::napi_ok);
4724    size_t BufferLength = 0;
4725    napi_status getinforesult = napi_get_buffer_info(env, Buffer, nullptr, &BufferLength);
4726    GTEST_LOG_(INFO) << "BufferLength" << BufferLength;
4727    EXPECT_EQ(getinforesult, napi_status::napi_ok);
4728    EXPECT_EQ(BufferLength, BufferSize);
4729
4730    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Buffer_Info_0400 end";
4731}
4732
4733/*
4734 * @tc.number    : ACE_Napi_Get_Buffer_Info_0500
4735 * @tc.name      : The parameters of length is invalid
4736 * @tc.desc      : 1.The environment engine is created
4737 *                 2.Set test variables
4738 *                 3.The function of napi_get_buffer_info is called
4739 *                 4.Return value of function is napi_ok
4740 */
4741HWTEST_F(NativeEngineTest, ACE_Napi_Get_Buffer_Info_0500, testing::ext::TestSize.Level1)
4742{
4743    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Buffer_Info_0500 start";
4744
4745    napi_env env = (napi_env)engine_;
4746    napi_value Buffer = nullptr;
4747    void* BufferPtr = nullptr;
4748    size_t BufferSize = 1024;
4749
4750    napi_status creatresult = napi_create_buffer(env, BufferSize, &BufferPtr, &Buffer);
4751    EXPECT_EQ(creatresult, napi_status::napi_ok);
4752    void* tmpBufferPtr = nullptr;
4753    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, nullptr);
4754    GTEST_LOG_(INFO) << "*tmpBufferPtr"<<(char*)tmpBufferPtr;
4755    EXPECT_EQ(strcmp((char*)tmpBufferPtr, ""), 0);
4756    EXPECT_EQ(getinforesult, napi_status::napi_ok);
4757    EXPECT_EQ(tmpBufferPtr, BufferPtr);
4758
4759    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Buffer_Info_0500 end";
4760}
4761
4762/*
4763 * @tc.number    : ACE_Napi_Get_Buffer_Info_0600
4764 * @tc.name      : The parameters of environment is invalid
4765 * @tc.desc      : 1.The environment engine is created
4766 *                 2.Set test variables
4767 *                 3.The function of napi_get_buffer_info is called
4768 *                 4.Return value of function is napi_invalid_arg
4769 */
4770HWTEST_F(NativeEngineTest, ACE_Napi_Get_Buffer_Info_0600, testing::ext::TestSize.Level2)
4771{
4772    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Buffer_Info_0600 start";
4773
4774    napi_env envone = (napi_env)engine_;
4775    napi_env envtwo = nullptr;
4776    napi_value Buffer = nullptr;
4777    void* BufferPtr = nullptr;
4778    size_t BufferSize = 1024;
4779
4780    napi_status creatresult = napi_create_buffer(envone, BufferSize, &BufferPtr, &Buffer);
4781    EXPECT_EQ(creatresult, napi_status::napi_ok);
4782    void* tmpBufferPtr = nullptr;
4783    size_t BufferLength = 0;
4784    napi_status getinforesult = napi_get_buffer_info(envtwo, Buffer, &tmpBufferPtr, &BufferLength);
4785    EXPECT_EQ(getinforesult, napi_status::napi_invalid_arg);
4786
4787    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Buffer_Info_0600 end";
4788}
4789
4790/*
4791 * @tc.number    : ACE_Napi_Create_Buffer_Copy_0100
4792 * @tc.name      : The data of raw pointer to the underlying buffer to copy from is invalid.
4793 * @tc.desc      : 1.The environment engine is created
4794 *                 2.Set test variables
4795 *                 3.The function of napi_create_buffer_copy is called
4796 *                 4.Return value of function is napi_invalid_arg
4797 */
4798HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_Copy_0100, testing::ext::TestSize.Level2)
4799{
4800    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0100 start";
4801
4802    napi_env env = (napi_env)engine_;
4803    napi_value Buffer = nullptr;
4804    void* result_data = nullptr;
4805    size_t BufferSize = 1;
4806
4807    napi_status creatresult = napi_create_buffer_copy(env, BufferSize, nullptr, &result_data, &Buffer);
4808    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
4809    void* tmpBufferPtr = nullptr;
4810    size_t BufferLength = 0;
4811    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
4812    EXPECT_EQ(getinforesult, napi_status::napi_invalid_arg);
4813    EXPECT_EQ(tmpBufferPtr, nullptr);
4814    EXPECT_EQ(BufferLength, (size_t)0);
4815
4816    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0100 end";
4817}
4818
4819/*
4820 * @tc.number    : ACE_Napi_Create_Buffer_Copy_0200
4821 * @tc.name      : The size of buffer is over maxnum.
4822 * @tc.desc      : 1.The environment engine is created
4823 *                 2.Set test variables
4824 *                 3.The function of napi_create_buffer_copy is called
4825 *                 4.Return value of function is napi_invalid_arg
4826 */
4827HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_Copy_0200, testing::ext::TestSize.Level2)
4828{
4829    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0200 start";
4830
4831    napi_env env = (napi_env)engine_;
4832    napi_value Buffer = nullptr;
4833    void* result_data = nullptr;
4834
4835    size_t BufferSize = BUFFER_OVERMAX_SIZE;
4836
4837    napi_status creatresult = napi_create_buffer_copy(env, BufferSize, Text, &result_data, &Buffer);
4838
4839    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
4840    void* tmpBufferPtr = nullptr;
4841    size_t BufferLength = 0;
4842    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
4843    EXPECT_EQ(getinforesult, napi_status::napi_invalid_arg);
4844    EXPECT_EQ(tmpBufferPtr, nullptr);
4845    EXPECT_EQ(BufferLength, size_t(0));
4846
4847    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0200 end";
4848}
4849
4850/*
4851 * @tc.number    : ACE_Napi_Create_Buffer_Copy_0300
4852 * @tc.name      : The parameters of size(BUFFER_OVERMAX_SIZE) and data are invalid
4853 * @tc.desc      : 1.The environment engine is created
4854 *                 2.Set test variables
4855 *                 3.The function of napi_create_buffer_copy is called
4856 *                 4.Return value of function is napi_invalid_arg
4857 */
4858HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_Copy_0300, testing::ext::TestSize.Level2)
4859{
4860    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0300 start";
4861
4862    napi_env env = (napi_env)engine_;
4863    napi_value Buffer = nullptr;
4864    void* result_data = nullptr;
4865    size_t BufferSize = BUFFER_OVERMAX_SIZE;
4866
4867    napi_status creatresult = napi_create_buffer_copy(env, BufferSize, nullptr, &result_data, &Buffer);
4868    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
4869    void* tmpBufferPtr = nullptr;
4870    size_t BufferLength = 0;
4871    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
4872    EXPECT_EQ(getinforesult, napi_status::napi_invalid_arg);
4873    EXPECT_EQ(tmpBufferPtr, nullptr);
4874    EXPECT_EQ(BufferLength, (size_t)0);
4875
4876    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0300 end";
4877}
4878
4879/*
4880 * @tc.number    : ACE_Napi_Create_Buffer_Copy_0400
4881 * @tc.name      : The parameters of size(-1) and data are invalid
4882 * @tc.desc      : 1.The environment engine is created
4883 *                 2.Set test variables
4884 *                 3.The function of napi_create_buffer_copy is called
4885 *                 4.Return value of function is napi_invalid_arg
4886 */
4887HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_Copy_0400, testing::ext::TestSize.Level2)
4888{
4889    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0400 start";
4890
4891    napi_env env = (napi_env)engine_;
4892    napi_value Buffer = nullptr;
4893    void* result_data = nullptr;
4894    size_t BufferSize = -1;
4895
4896    napi_status creatresult = napi_create_buffer_copy(env, BufferSize, Text, &result_data, &Buffer);
4897    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
4898    void* tmpBufferPtr = nullptr;
4899    size_t BufferLength = 0;
4900    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
4901    EXPECT_EQ(getinforesult, napi_status::napi_invalid_arg);
4902    EXPECT_EQ(tmpBufferPtr, nullptr);
4903
4904    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0400 end";
4905}
4906
4907/*
4908 * @tc.number    : ACE_Napi_Create_Buffer_Copy_0500
4909 * @tc.name      : The parameter of size(0) is invalid
4910 * @tc.desc      : 1.The environment engine is created
4911 *                 2.Set test variables
4912 *                 3.The function of napi_create_buffer_copy is called
4913 *                 4.Return value of function is napi_invalid_arg
4914 */
4915HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_Copy_0500, testing::ext::TestSize.Level2)
4916{
4917    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0500 start";
4918
4919    napi_env env = (napi_env)engine_;
4920    napi_value Buffer = nullptr;
4921    void* result_data = nullptr;
4922    size_t BufferSize = 0;
4923
4924    napi_status creatresult = napi_create_buffer_copy(env, BufferSize, Text, &result_data, &Buffer);
4925    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
4926    void* tmpBufferPtr = nullptr;
4927    size_t BufferLength = 0;
4928    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
4929    EXPECT_EQ(getinforesult, napi_status::napi_invalid_arg);
4930    EXPECT_EQ(tmpBufferPtr, nullptr);
4931
4932    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0500 end";
4933}
4934
4935/*
4936 * @tc.number    : ACE_Napi_Create_Buffer_Copy_0600
4937 * @tc.name      : The parameters of napi_create_buffer_copy are valid,
4938 *                 The buffer is created by napi_create_buffer_copy function.
4939 * @tc.desc      : 1.The environment engine is created
4940 *                 2.Set test variables
4941 *                 3.The function of napi_create_buffer_copy is used to create a new buffer
4942 *                 4.Return value of function is napi_ok
4943 *                 5.The function of napi_get_buffer_info is called
4944 *                 6.Return value of function is napi_ok
4945 */
4946HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_Copy_0600, testing::ext::TestSize.Level1)
4947{
4948    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0600 start";
4949
4950    napi_env env = (napi_env)engine_;
4951    napi_value Buffer = nullptr;
4952    void* Bufferptr = nullptr;
4953    size_t BufferSize = sizeof(Text) - 2;
4954
4955    napi_status creatresult = napi_create_buffer_copy(env, BufferSize, Text, &Bufferptr, &Buffer);
4956    GTEST_LOG_(INFO) << "*Bufferptr"<<(char*)Bufferptr;
4957    EXPECT_EQ(creatresult, napi_status::napi_ok);
4958    void* tmpBufferPtr = nullptr;
4959    size_t BufferLength = 0;
4960    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
4961    EXPECT_EQ(getinforesult, napi_status::napi_ok);
4962    GTEST_LOG_(INFO) << "*tmpBufferPtr"<<(char*)tmpBufferPtr;
4963    EXPECT_EQ(memcmp((char*)tmpBufferPtr, "hello worl", 10), 0);
4964    EXPECT_EQ(tmpBufferPtr, Bufferptr);
4965    EXPECT_EQ(BufferLength, sizeof(Text) - 2);
4966
4967    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0600 end";
4968}
4969
4970/*
4971 * @tc.number    : ACE_Napi_Create_Buffer_Copy_0700
4972 * @tc.name      : The parameter of pointer to the new Buffer's underlying data buffer is invalid,
4973 *                 The buffer is created by napi_create_buffer_copy function.
4974 * @tc.desc      : 1.The environment engine is created
4975 *                 2.Set test variables
4976 *                 3.The function of napi_create_buffer_copy is used to create a new buffer
4977 *                 4.Return value of function is napi_ok
4978 *                 5.The function of napi_get_buffer_info is called
4979 *                 6.Return value of function is napi_ok
4980 */
4981HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_Copy_0700, testing::ext::TestSize.Level1)
4982{
4983    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0700 start";
4984
4985    napi_env env = (napi_env)engine_;
4986    napi_value Buffer = nullptr;
4987    void* result_data = nullptr;
4988    size_t BufferSize = sizeof(Text);
4989
4990    napi_status creatresult = napi_create_buffer_copy(env, BufferSize, Text, &result_data, &Buffer);
4991    EXPECT_EQ(creatresult, napi_status::napi_ok);
4992    void* tmpBufferPtr = nullptr;
4993    size_t BufferLength = 0;
4994    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
4995    EXPECT_EQ(getinforesult, napi_status::napi_ok);
4996    GTEST_LOG_(INFO) << "*tmpBufferPtr"<<(char*)tmpBufferPtr;
4997    EXPECT_EQ(strcmp((char*)tmpBufferPtr, "hello world"), 0);
4998    EXPECT_NE(tmpBufferPtr, nullptr);
4999    EXPECT_EQ(BufferLength, BufferSize);
5000
5001    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0700 end";
5002}
5003
5004/*
5005 * @tc.number    : ACE_Napi_Create_Buffer_Copy_0800
5006 * @tc.name      : The parameter of result is invalid,
5007 *                 The buffer can not be created by napi_create_buffer_copy function.
5008 * @tc.desc      : 1.The environment engine is created
5009 *                 2.Set test variables
5010 *                 3.The function of napi_create_buffer_copy is used to create a new buffer
5011 *                 4.Return value of function is napi_invalid_arg
5012 *                 5.The function of napi_get_buffer_info is called
5013 *                 6.Return value of function is napi_invalid_arg
5014 */
5015HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_Copy_0800, testing::ext::TestSize.Level2)
5016{
5017    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0800 start";
5018
5019    napi_env env = (napi_env)engine_;
5020    napi_value Buffer = nullptr;
5021    void* result_data = nullptr;
5022    size_t BufferSize = sizeof(Text);
5023
5024    napi_status creatresult = napi_create_buffer_copy(env, BufferSize, Text, &result_data, nullptr);
5025    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
5026    void* tmpBufferPtr = nullptr;
5027    size_t BufferLength = 0;
5028    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
5029    EXPECT_EQ(getinforesult, napi_status::napi_invalid_arg);
5030    EXPECT_EQ(tmpBufferPtr, nullptr);
5031
5032    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0800 end";
5033}
5034
5035/*
5036 * @tc.number    : ACE_Napi_Create_Buffer_Copy_0900
5037 * @tc.name      : The parameter of environment is invalid,
5038 *                 The buffer can not be created by napi_create_buffer_copy function.
5039 * @tc.desc      : 1.The environment engine is created
5040 *                 2.Set test variables
5041 *                 3.The function of napi_create_buffer_copy is used to create a new buffer
5042 *                 4.Return value of function is napi_invalid_arg
5043 *                 5.The function of napi_get_buffer_info is called
5044 *                 6.Return value of function is napi_invalid_arg
5045 */
5046HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_Copy_0900, testing::ext::TestSize.Level2)
5047{
5048    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0900 start";
5049
5050    napi_env envinfo = (napi_env)engine_;
5051    napi_env envcopy = nullptr;
5052    napi_value Buffer = nullptr;
5053    void* result_data = nullptr;
5054    size_t BufferSize = sizeof(Text);
5055
5056    napi_status creatresult = napi_create_buffer_copy(envcopy, BufferSize, Text, &result_data, &Buffer);
5057    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
5058    void* tmpBufferPtr = nullptr;
5059    size_t BufferLength = 0;
5060    napi_status getinforesult = napi_get_buffer_info(envinfo, Buffer, &tmpBufferPtr, &BufferLength);
5061    EXPECT_EQ(getinforesult, napi_status::napi_invalid_arg);
5062    EXPECT_EQ(tmpBufferPtr, nullptr);
5063
5064    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_0900 end";
5065}
5066
5067/*
5068 * @tc.number    : ACE_Napi_Create_Buffer_Copy_1000
5069 * @tc.name      : The parameter of environment is invalid,
5070 *                 The buffer can not be created by napi_create_buffer_copy function.
5071 * @tc.desc      : 1.The environment engine is created.
5072 *                 2.Set test variables.
5073 *                 3.The function of napi_create_buffer_copy is used to create
5074 *                   a new buffer when the BufferSize is larger then buffer.
5075 *                 4.Return value of function is napi_ok.
5076 *                 5.The function of napi_get_buffer_info is called.
5077 *                 6.Return value of function is napi_ok.
5078 */
5079HWTEST_F(NativeEngineTest, ACE_Napi_Create_Buffer_Copy_1000, testing::ext::TestSize.Level1)
5080{
5081    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_1000 start";
5082
5083    napi_env env = (napi_env)engine_;
5084    napi_value Buffer = nullptr;
5085    void* result_data = nullptr;
5086    size_t BufferSize = 1024;
5087
5088    napi_status creatresult = napi_create_buffer_copy(env, BufferSize, Text, &result_data, &Buffer);
5089    EXPECT_EQ(creatresult, napi_status::napi_ok);
5090    void* tmpBufferPtr = nullptr;
5091    size_t BufferLength = 0;
5092    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
5093    EXPECT_EQ(getinforesult, napi_status::napi_ok);
5094    GTEST_LOG_(INFO) << "*tmpBufferPtr"<<(char*)tmpBufferPtr;
5095    EXPECT_EQ(strcmp((char*)tmpBufferPtr, "hello world"), 0);
5096    EXPECT_NE(tmpBufferPtr, nullptr);
5097    EXPECT_EQ(BufferLength, (size_t)1024);
5098
5099    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Buffer_Copy_1000 end";
5100}
5101
5102/*
5103 * @tc.number    : ACE_Napi_Create_External_Buffer_0100
5104 * @tc.name      : The parameters of napi_create_external_buffer are valid,
5105 *                 The buffer is created by napi_create_external_buffer function.
5106 * @tc.desc      : 1.The environment engine is created
5107 *                 2.Set test variables
5108 *                 3.The function of napi_create_external_buffer is used to create a new buffer
5109 *                 4.Return value of function is napi_ok
5110 *                 5.The function of napi_get_buffer_info is called
5111 *                 6.Return value of function is napi_ok
5112 */
5113HWTEST_F(NativeEngineTest, ACE_Napi_Create_External_Buffer_0100, testing::ext::TestSize.Level1)
5114{
5115    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_External_Buffer_0100 start";
5116
5117    napi_env env = (napi_env)engine_;
5118    napi_value Buffer = nullptr;
5119    size_t BufferSize = 1;
5120
5121    napi_status creatresult = napi_create_external_buffer(env, BufferSize, Text, BufferFinalizer, nullptr, &Buffer);
5122    EXPECT_EQ(creatresult, napi_status::napi_ok);
5123    void* tmpBufferPtr = nullptr;
5124    size_t BufferLength = 0;
5125    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
5126    EXPECT_EQ(getinforesult, napi_status::napi_ok);
5127    GTEST_LOG_(INFO) << "*tmpBufferPtr"<<(char*)tmpBufferPtr;
5128    EXPECT_EQ(strcmp((char*)tmpBufferPtr, "hello world"), 0);
5129    EXPECT_NE(tmpBufferPtr, nullptr);
5130    EXPECT_EQ(BufferLength, BufferSize);
5131
5132    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_External_Buffer_0100 end";
5133}
5134
5135/*
5136 * @tc.number    : ACE_Napi_Create_External_Buffer_0200
5137 * @tc.name      : The parameter of buffer size is over maxnum,
5138 *                 The buffer can not be created by napi_create_external_buffer function.
5139 * @tc.desc      : 1.The environment engine is created
5140 *                 2.Set test variables
5141 *                 3.The function of napi_create_external_buffer is used to create a new buffer
5142 *                 4.Return value of function is napi_invalid_arg
5143 */
5144HWTEST_F(NativeEngineTest, ACE_Napi_Create_External_Buffer_0200, testing::ext::TestSize.Level2)
5145{
5146    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_External_Buffer_0200 start";
5147
5148    napi_env env = (napi_env)engine_;
5149    napi_value Buffer = nullptr;
5150    size_t BufferSize = BUFFER_OVERMAX_SIZE;
5151
5152    napi_status creatresult = napi_create_external_buffer(env, BufferSize, Text, BufferFinalizer, nullptr, &Buffer);
5153    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
5154
5155    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_External_Buffer_0200 end";
5156}
5157
5158/*
5159 * @tc.number    : ACE_Napi_Create_External_Buffer_0300
5160 * @tc.name      : The parameter of result is invalid,
5161 *                 The buffer can not be created by napi_create_external_buffer function.
5162 * @tc.desc      : 1.The environment engine is created
5163 *                 2.Set test variables
5164 *                 3.The function of napi_create_external_buffer is used to create a new buffer
5165 *                 4.Return value of function is napi_invalid_arg
5166 */
5167HWTEST_F(NativeEngineTest, ACE_Napi_Create_External_Buffer_0300, testing::ext::TestSize.Level2)
5168{
5169    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_External_Buffer_0300 start";
5170
5171    napi_env env = (napi_env)engine_;
5172    napi_value Buffer = nullptr;
5173    size_t BufferSize = 0;
5174
5175    napi_status creatresult = napi_create_external_buffer(env, BufferSize, Text, BufferFinalizer, nullptr, &Buffer);
5176    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
5177
5178    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_External_Buffer_0300 end";
5179}
5180
5181/*
5182 * @tc.number    : ACE_Napi_Create_External_Buffer_0400
5183 * @tc.name      : The parameters of finalize_cb and finalize_hint are invalid,
5184 *                 The buffer is created by napi_create_external_buffer function.
5185 * @tc.desc      : 1.The environment engine is created
5186 *                 2.Set test variables
5187 *                 3.The function of napi_create_external_buffer is used to create a new buffer
5188 *                 4.Return value of function is napi_ok
5189 *                 5.The function of napi_get_buffer_info is called
5190 *                 6.Return value of function is napi_ok
5191 */
5192HWTEST_F(NativeEngineTest, ACE_Napi_Create_External_Buffer_0400, testing::ext::TestSize.Level1)
5193{
5194    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_External_Buffer_0400 start";
5195
5196    napi_env env = (napi_env)engine_;
5197    napi_value Buffer = nullptr;
5198    size_t BufferSize = sizeof(Text);
5199
5200    napi_status creatresult = napi_create_external_buffer(env, BufferSize, Text, nullptr, nullptr, &Buffer);
5201    EXPECT_EQ(creatresult, napi_status::napi_ok);
5202    void* tmpBufferPtr = nullptr;
5203    size_t BufferLength = 0;
5204    napi_status getinforesult = napi_get_buffer_info(env, Buffer, &tmpBufferPtr, &BufferLength);
5205    EXPECT_EQ(getinforesult, napi_status::napi_ok);
5206    GTEST_LOG_(INFO) << "*tmpBufferPtr"<<(char*)tmpBufferPtr;
5207    EXPECT_EQ(strcmp((char*)tmpBufferPtr, "hello world"), 0);
5208    EXPECT_NE(tmpBufferPtr, nullptr);
5209    EXPECT_EQ(BufferLength, size_t(12));
5210
5211    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_External_Buffer_0400 end";
5212}
5213
5214/*
5215 * @tc.number    : ACE_Napi_Create_External_Buffer_0500
5216 * @tc.name      : The parameter of buffer size is invalid,
5217 *                 The buffer can not be created by napi_create_external_buffer function.
5218 * @tc.desc      : 1.The environment engine is created
5219 *                 2.Set test variables
5220 *                 3.The function of napi_create_external_buffer is used to create a new buffer
5221 *                 4.Return value of function is napi_invalid_arg
5222 */
5223HWTEST_F(NativeEngineTest, ACE_Napi_Create_External_Buffer_0500, testing::ext::TestSize.Level2)
5224{
5225    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_External_Buffer_0500 start";
5226
5227    napi_env env = (napi_env)engine_;
5228    napi_value Buffer = nullptr;
5229    size_t BufferSize = -1;
5230
5231    napi_status creatresult = napi_create_external_buffer(env, BufferSize, Text, BufferFinalizer, nullptr, &Buffer);
5232    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
5233
5234    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_External_Buffer_0500 end";
5235}
5236
5237/*
5238 * @tc.number    : ACE_Napi_Create_External_Buffer_0600
5239 * @tc.name      : The parameter of environment is invalid,
5240 *                 The buffer can not be created by napi_create_external_buffer function.
5241 * @tc.desc      : 1.The environment engine is created
5242 *                 2.Set test variables
5243 *                 3.The function of napi_create_external_buffer is used to create a new buffer
5244 *                 4.Return value of function is napi_invalid_arg
5245 */
5246HWTEST_F(NativeEngineTest, ACE_Napi_Create_External_Buffer_0600, testing::ext::TestSize.Level2)
5247{
5248    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_External_Buffer_0600 start";
5249
5250    napi_env env = nullptr;
5251    napi_value Buffer = nullptr;
5252    size_t BufferSize = sizeof(Text);
5253
5254    napi_status creatresult = napi_create_external_buffer(env, BufferSize, Text, BufferFinalizer, nullptr, &Buffer);
5255    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
5256
5257    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_External_Buffer_0600 end";
5258}
5259
5260#if  (defined(FOR_JERRYSCRIPT_TEST)) &&  (JERRY_API_MINOR_VERSION <= 3)
5261    // jerryscript 2.3 do nothing
5262#else
5263// jerryscript 2.4 or quickjs or V8
5264/*
5265 * @tc.number    : ACE_Napi_Object_Freeze_0100
5266 * @tc.name      : The parameters of napi_object_freeze are valid,
5267 *                 The object is freeze by napi_object_freeze function.
5268 * @tc.desc      : 1.The environment engine is created
5269 *                 2.Set test variables
5270 *                 3.The function of napi_object_freeze is used to freeze a object
5271 *                 4.Return value of function is napi_ok
5272 *                 5.The function of napi_set_element is called
5273 *                 6.The element can not be added
5274 */
5275HWTEST_F(NativeEngineTest, ACE_Napi_Object_Freeze_0100, testing::ext::TestSize.Level1)
5276{
5277    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0100 start";
5278    napi_env env = (napi_env)engine_;
5279    napi_value object = nullptr;
5280    napi_value int32result;
5281    napi_value newuint32result;
5282    napi_value freezeresult;
5283    napi_value newfreezeresult;
5284    int32_t numresultone;
5285    int32_t numresulttwo;
5286    auto numone = static_cast<int32_t>(10);
5287    auto numtwo = static_cast<int32_t>(20);
5288
5289    napi_create_object(env, &object);
5290    napi_status status = napi_create_int32(env, numone, &int32result);
5291    EXPECT_EQ(status, napi_status::napi_ok);
5292    status = napi_create_int32(env, numtwo, &freezeresult);
5293    EXPECT_EQ(status, napi_status::napi_ok);
5294    status = napi_set_named_property(env, object, "int32result", int32result);
5295    EXPECT_EQ(status, napi_status::napi_ok);
5296    status = napi_get_named_property(env, object, "int32result", &newuint32result);
5297    EXPECT_EQ(status, napi_status::napi_ok);
5298    status = napi_get_value_int32(env, newuint32result, &numresultone);
5299    EXPECT_EQ(status, napi_status::napi_ok);
5300    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
5301    napi_status creatresult = napi_object_freeze(env, object);
5302    EXPECT_EQ(creatresult, napi_status::napi_ok);
5303    status = napi_set_named_property(env, object, "freezeresult", freezeresult);
5304    EXPECT_EQ(status, napi_status::napi_ok);
5305    status = napi_get_named_property(env, object, "freezeresult", &newfreezeresult);
5306    EXPECT_EQ(status, napi_status::napi_ok);
5307    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
5308    EXPECT_EQ(status, napi_status::napi_number_expected);
5309    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
5310
5311    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0100 end";
5312}
5313
5314/*
5315 * @tc.number    : ACE_Napi_Object_Freeze_0200
5316 * @tc.name      : The parameters of napi_object_freeze are valid,
5317 *                 The object is freeze by napi_object_freeze function.
5318 * @tc.desc      : 1.The environment engine is created
5319 *                 2.Set test variables
5320 *                 3.The function of napi_object_freeze is used to freeze a object
5321 *                 4.Return value of function is napi_ok
5322 *                 5.The function of napi_delete_element is called
5323 *                 6.The element can not be deleted
5324 */
5325HWTEST_F(NativeEngineTest, ACE_Napi_Object_Freeze_0200, testing::ext::TestSize.Level1)
5326{
5327    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0200 start";
5328
5329    napi_env env = (napi_env)engine_;
5330    napi_value object = nullptr;
5331    napi_value int32result;
5332    napi_value newuint32result;
5333    napi_value freezeresult;
5334    napi_value newfreezeresult;
5335    napi_value afterfreezeresult;
5336    napi_value namestr;
5337    int32_t numresultone;
5338    int32_t numresulttwo;
5339    int32_t afternumresulttwo;
5340    bool deleteresult = false;
5341    auto numone = static_cast<int32_t>(10);
5342    auto numtwo = static_cast<int32_t>(20);
5343
5344    napi_create_object(env, &object);
5345    napi_status status = napi_create_int32(env, numone, &int32result);
5346    EXPECT_EQ(status, napi_status::napi_ok);
5347    status = napi_create_int32(env, numtwo, &freezeresult);
5348    EXPECT_EQ(status, napi_status::napi_ok);
5349    status = napi_set_named_property(env, object, "int32result", int32result);
5350    EXPECT_EQ(status, napi_status::napi_ok);
5351    status = napi_get_named_property(env, object, "int32result", &newuint32result);
5352    EXPECT_EQ(status, napi_status::napi_ok);
5353    status = napi_get_value_int32(env, newuint32result, &numresultone);
5354    EXPECT_EQ(status, napi_status::napi_ok);
5355    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
5356    status = napi_set_named_property(env, object, "freezeresult", freezeresult);
5357    EXPECT_EQ(status, napi_status::napi_ok);
5358    status = napi_get_named_property(env, object, "freezeresult", &newfreezeresult);
5359    EXPECT_EQ(status, napi_status::napi_ok);
5360    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
5361    EXPECT_EQ(status, napi_status::napi_ok);
5362    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
5363    napi_status creatresult = napi_object_freeze(env, object);
5364    EXPECT_EQ(creatresult, napi_status::napi_ok);
5365    status = napi_create_string_utf8(env, "freezeresult", strlen("freezeresult"), &namestr);
5366    EXPECT_EQ(status, napi_status::napi_ok);
5367    status = napi_delete_property(env, object, namestr, &deleteresult);
5368    EXPECT_EQ(status, napi_status::napi_ok);
5369    status = napi_get_named_property(env, object, "freezeresult", &afterfreezeresult);
5370    EXPECT_EQ(status, napi_status::napi_ok);
5371    status = napi_get_value_int32(env, afterfreezeresult, &afternumresulttwo);
5372    EXPECT_EQ(status, napi_status::napi_ok);
5373    GTEST_LOG_(INFO) << "afterfreezeresult is" << afternumresulttwo;
5374    EXPECT_EQ(numresulttwo, 20);
5375
5376    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0200 end";
5377}
5378
5379/*
5380 * @tc.number    : ACE_Napi_Object_Freeze_0300
5381 * @tc.name      : The parameters of napi_object_freeze are valid,
5382 *                 The object is freeze by napi_object_freeze function.
5383 * @tc.desc      : 1.The environment engine is created
5384 *                 2.Set test variables
5385 *                 3.The function of napi_object_freeze is used to freeze a object
5386 *                 4.Return value of function is napi_ok
5387 *                 5.The function of napi_set_element is called
5388 *                 6.The element can not be changed
5389 */
5390HWTEST_F(NativeEngineTest, ACE_Napi_Object_Freeze_0300, testing::ext::TestSize.Level1)
5391{
5392    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0300 start";
5393
5394    napi_env env = (napi_env)engine_;
5395    napi_value object = nullptr;
5396    napi_value int32result;
5397    napi_value newuint32result;
5398    napi_value freezeresult;
5399    napi_value newfreezeresult;
5400    int32_t numresultone;
5401    int32_t numresulttwo;
5402    auto numone = static_cast<int32_t>(10);
5403    auto numtwo = static_cast<int32_t>(20);
5404
5405    napi_create_object(env, &object);
5406    napi_status status = napi_create_int32(env, numone, &int32result);
5407    EXPECT_EQ(status, napi_status::napi_ok);
5408    status = napi_create_int32(env, numtwo, &freezeresult);
5409    EXPECT_EQ(status, napi_status::napi_ok);
5410    status = napi_set_named_property(env, object, "int32result", int32result);
5411    EXPECT_EQ(status, napi_status::napi_ok);
5412    status = napi_get_named_property(env, object, "int32result", &newuint32result);
5413    EXPECT_EQ(status, napi_status::napi_ok);
5414    status = napi_get_value_int32(env, newuint32result, &numresultone);
5415    EXPECT_EQ(status, napi_status::napi_ok);
5416    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
5417    napi_status creatresult = napi_object_freeze(env, object);
5418    EXPECT_EQ(creatresult, napi_status::napi_ok);
5419    status = napi_set_named_property(env, object, "int32result", freezeresult);
5420    EXPECT_EQ(status, napi_status::napi_ok);
5421    status = napi_get_named_property(env, object, "int32result", &newfreezeresult);
5422    EXPECT_EQ(status, napi_status::napi_ok);
5423    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
5424    EXPECT_EQ(status, napi_status::napi_ok);
5425    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
5426    EXPECT_EQ(numresulttwo, 10);
5427
5428    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0300 end";
5429}
5430
5431/*
5432 * @tc.number    : ACE_Napi_Object_Freeze_0400
5433 * @tc.name      : The parameter of the object to freeze is invalid,
5434 *                 The object can not be freezed by napi_object_freeze function.
5435 * @tc.desc      : 1.The environment engine is created
5436 *                 2.Set test variables
5437 *                 3.The function of napi_object_freeze is used to freeze a object
5438 *                 4.Return value of function is napi_invalid_arg
5439 *                 5.The function of napi_set_element is called
5440 *                 6.The element can be added
5441 */
5442HWTEST_F(NativeEngineTest, ACE_Napi_Object_Freeze_0400, testing::ext::TestSize.Level2)
5443{
5444    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0400 start";
5445
5446    napi_env env = (napi_env)engine_;
5447    napi_value object = nullptr;
5448    napi_value int32result;
5449    napi_value newuint32result;
5450    napi_value freezeresult;
5451    napi_value newfreezeresult;
5452    int32_t numresultone;
5453    int32_t numresulttwo;
5454    auto numone = static_cast<int32_t>(10);
5455    auto numtwo = static_cast<int32_t>(20);
5456
5457    napi_create_object(env, &object);
5458    napi_status status = napi_create_int32(env, numone, &int32result);
5459    EXPECT_EQ(status, napi_status::napi_ok);
5460    status = napi_create_int32(env, numtwo, &freezeresult);
5461    EXPECT_EQ(status, napi_status::napi_ok);
5462    status = napi_set_named_property(env, object, "int32result", int32result);
5463    EXPECT_EQ(status, napi_status::napi_ok);
5464    status = napi_get_named_property(env, object, "int32result", &newuint32result);
5465    EXPECT_EQ(status, napi_status::napi_ok);
5466    status = napi_get_value_int32(env, newuint32result, &numresultone);
5467    EXPECT_EQ(status, napi_status::napi_ok);
5468    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
5469    napi_status creatresult = napi_object_freeze(env, nullptr);
5470    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
5471    status = napi_set_named_property(env, object, "freezeresult", freezeresult);
5472    EXPECT_EQ(status, napi_status::napi_ok);
5473    status = napi_get_named_property(env, object, "freezeresult", &newfreezeresult);
5474    EXPECT_EQ(status, napi_status::napi_ok);
5475    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
5476    EXPECT_EQ(status, napi_status::napi_ok);
5477    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
5478    EXPECT_EQ(numresulttwo, 20);
5479
5480    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0400 end";
5481}
5482
5483/*
5484 * @tc.number    : ACE_Napi_Object_Freeze_0500
5485 * @tc.name      : The parameter of environment is invalid,
5486 *                 The object can not be freezed by napi_object_freeze function.
5487 * @tc.desc      : 1.The environment engine is created
5488 *                 2.Set test variables
5489 *                 3.The function of napi_object_freeze is used to freeze a object
5490 *                 4.Return value of function is napi_invalid_arg
5491 *                 5.The function of napi_set_element is called
5492 *                 6.The element can be added
5493 */
5494HWTEST_F(NativeEngineTest, ACE_Napi_Object_Freeze_0500, testing::ext::TestSize.Level2)
5495{
5496    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0500 start";
5497
5498    napi_env env = (napi_env)engine_;
5499    napi_value object = nullptr;
5500    napi_value int32result;
5501    napi_value newuint32result;
5502    napi_value freezeresult;
5503    napi_value newfreezeresult;
5504    int32_t numresultone;
5505    int32_t numresulttwo;
5506    auto numone = static_cast<int32_t>(10);
5507    auto numtwo = static_cast<int32_t>(20);
5508
5509    napi_create_object(env, &object);
5510    napi_status status = napi_create_int32(env, numone, &int32result);
5511    EXPECT_EQ(status, napi_status::napi_ok);
5512    status = napi_create_int32(env, numtwo, &freezeresult);
5513    EXPECT_EQ(status, napi_status::napi_ok);
5514    status = napi_set_named_property(env, object, "int32result", int32result);
5515    EXPECT_EQ(status, napi_status::napi_ok);
5516    status = napi_get_named_property(env, object, "int32result", &newuint32result);
5517    EXPECT_EQ(status, napi_status::napi_ok);
5518    status = napi_get_value_int32(env, newuint32result, &numresultone);
5519    EXPECT_EQ(status, napi_status::napi_ok);
5520    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
5521    napi_status creatresult = napi_object_freeze(nullptr, object);
5522    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
5523    status = napi_set_named_property(env, object, "freezeresult", freezeresult);
5524    EXPECT_EQ(status, napi_status::napi_ok);
5525    status = napi_get_named_property(env, object, "freezeresult", &newfreezeresult);
5526    EXPECT_EQ(status, napi_status::napi_ok);
5527    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
5528    EXPECT_EQ(status, napi_status::napi_ok);
5529    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
5530    EXPECT_EQ(numresulttwo, 20);
5531
5532    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0500 end";
5533}
5534
5535/*
5536 * @tc.number    : ACE_Napi_Object_Freeze_0600
5537 * @tc.name      : The parameter of environment is invalid,
5538 *                 The object can not be freezed by napi_object_freeze function.
5539 * @tc.desc      : 1.The environment engine is created
5540 *                 2.Set test variables
5541 *                 3.The function of napi_object_freeze is used to freeze a object
5542 *                 4.Return value of function is napi_invalid_arg
5543 *                 5.The function of napi_set_element is called
5544 *                 6.The element can be deleted
5545 */
5546HWTEST_F(NativeEngineTest, ACE_Napi_Object_Freeze_0600, testing::ext::TestSize.Level2)
5547{
5548    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0600 start";
5549
5550    napi_env env = (napi_env)engine_;
5551    napi_value object = nullptr;
5552    napi_value int32result;
5553    napi_value newuint32result;
5554    napi_value freezeresult;
5555    napi_value newfreezeresult;
5556    napi_value afterfreezeresult;
5557    napi_value namestr;
5558    int32_t numresultone;
5559    int32_t numresulttwo;
5560    int32_t afternumresulttwo;
5561    bool deleteresult = false;
5562    auto numone = static_cast<int32_t>(10);
5563    auto numtwo = static_cast<int32_t>(20);
5564
5565    napi_create_object(env, &object);
5566    napi_status status = napi_create_int32(env, numone, &int32result);
5567    EXPECT_EQ(status, napi_status::napi_ok);
5568    status = napi_create_int32(env, numtwo, &freezeresult);
5569    EXPECT_EQ(status, napi_status::napi_ok);
5570    status = napi_set_named_property(env, object, "int32result", int32result);
5571    EXPECT_EQ(status, napi_status::napi_ok);
5572    status = napi_get_named_property(env, object, "int32result", &newuint32result);
5573    EXPECT_EQ(status, napi_status::napi_ok);
5574    status = napi_get_value_int32(env, newuint32result, &numresultone);
5575    EXPECT_EQ(status, napi_status::napi_ok);
5576    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
5577    status = napi_set_named_property(env, object, "freezeresult", freezeresult);
5578    EXPECT_EQ(status, napi_status::napi_ok);
5579    status = napi_get_named_property(env, object, "freezeresult", &newfreezeresult);
5580    EXPECT_EQ(status, napi_status::napi_ok);
5581    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
5582    EXPECT_EQ(status, napi_status::napi_ok);
5583    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
5584    napi_status creatresult = napi_object_freeze(nullptr, object);
5585    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
5586    status = napi_create_string_utf8(env, "freezeresult", strlen("freezeresult"), &namestr);
5587    EXPECT_EQ(status, napi_status::napi_ok);
5588    status = napi_delete_property(env, object, namestr, &deleteresult);
5589    EXPECT_EQ(status, napi_status::napi_ok);
5590    EXPECT_EQ(deleteresult, true);
5591    status = napi_get_named_property(env, object, "freezeresult", &afterfreezeresult);
5592    EXPECT_EQ(status, napi_status::napi_ok);
5593    status = napi_get_value_int32(env, afterfreezeresult, &afternumresulttwo);
5594    EXPECT_EQ(status, napi_status::napi_number_expected);
5595    GTEST_LOG_(INFO) << "afterfreezeresult is" << afternumresulttwo;
5596
5597    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0600 end";
5598}
5599
5600/*
5601 * @tc.number    : ACE_Napi_Object_Freeze_0700
5602 * @tc.name      : The parameter of environment is invalid,
5603 *                 The object can not be freezed by napi_object_freeze function.
5604 * @tc.desc      : 1.The environment engine is created
5605 *                 2.Set test variables
5606 *                 3.The function of napi_object_freeze is used to freeze a object
5607 *                 4.Return value of function is napi_invalid_arg
5608 *                 5.The function of napi_set_element is called
5609 *                 6.The element can be changed
5610 */
5611HWTEST_F(NativeEngineTest, ACE_Napi_Object_Freeze_0700, testing::ext::TestSize.Level2)
5612{
5613    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0700 start";
5614
5615    napi_env env = (napi_env)engine_;
5616    napi_value object = nullptr;
5617    napi_value int32result;
5618    napi_value newuint32result;
5619    napi_value freezeresult;
5620    napi_value newfreezeresult;
5621    int32_t numresultone;
5622    int32_t numresulttwo;
5623    auto numone = static_cast<int32_t>(10);
5624    auto numtwo = static_cast<int32_t>(20);
5625
5626    napi_create_object(env, &object);
5627    napi_status status = napi_create_int32(env, numone, &int32result);
5628    EXPECT_EQ(status, napi_status::napi_ok);
5629    status = napi_create_int32(env, numtwo, &freezeresult);
5630    EXPECT_EQ(status, napi_status::napi_ok);
5631    status = napi_set_named_property(env, object, "int32result", int32result);
5632    EXPECT_EQ(status, napi_status::napi_ok);
5633    status = napi_get_named_property(env, object, "int32result", &newuint32result);
5634    EXPECT_EQ(status, napi_status::napi_ok);
5635    status = napi_get_value_int32(env, newuint32result, &numresultone);
5636    EXPECT_EQ(status, napi_status::napi_ok);
5637    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
5638    napi_status creatresult = napi_object_freeze(nullptr, object);
5639    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
5640    status = napi_set_named_property(env, object, "int32result", freezeresult);
5641    EXPECT_EQ(status, napi_status::napi_ok);
5642    status = napi_get_named_property(env, object, "int32result", &newfreezeresult);
5643    EXPECT_EQ(status, napi_status::napi_ok);
5644    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
5645    EXPECT_EQ(status, napi_status::napi_ok);
5646    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
5647    EXPECT_EQ(numresulttwo, 20);
5648
5649    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0700 end";
5650}
5651
5652/*
5653 * @tc.number    : ACE_Napi_Object_Freeze_0800
5654 * @tc.name      : The parameter of environment is invalid,
5655 *                 The object can not be freezed by napi_object_freeze function.
5656 * @tc.desc      : 1.The environment engine is created
5657 *                 2.Set test variables
5658 *                 3.The function of napi_object_freeze is used to freeze a number
5659 *                 4.Return value of function is napi_object_expected
5660 */
5661HWTEST_F(NativeEngineTest, ACE_Napi_Object_Freeze_0800, testing::ext::TestSize.Level2)
5662{
5663    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0800 start";
5664
5665    napi_env env = (napi_env)engine_;
5666    napi_value int32result;
5667    auto numone = static_cast<int32_t>(10);
5668
5669    napi_status status = napi_create_int32(env, numone, &int32result);
5670    EXPECT_EQ(status, napi_status::napi_ok);
5671    napi_status creatresult = napi_object_freeze(env, int32result);
5672    EXPECT_EQ(creatresult, napi_status::napi_object_expected);
5673
5674    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Freeze_0800 end";
5675}
5676
5677/*
5678 * @tc.number    : ACE_Napi_Object_Seal_0100
5679 * @tc.name      : The parameters of napi_object_seal are valid,
5680 *                 The object is sealed by napi_object_seal function.
5681 * @tc.desc      : 1.The environment engine is created
5682 *                 2.Set test variables
5683 *                 3.The function of napi_object_seal is used to seal a object
5684 *                 4.Return value of function is napi_ok
5685 *                 5.The function of napi_set_element is called
5686 *                 6.The element can not be added
5687 */
5688HWTEST_F(NativeEngineTest, ACE_Napi_Object_Seal_0100, testing::ext::TestSize.Level1)
5689{
5690    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0100 start";
5691
5692    napi_env env = (napi_env)engine_;
5693    napi_value object = nullptr;
5694    napi_value int32result;
5695    napi_value newuint32result;
5696    napi_value freezeresult;
5697    napi_value newfreezeresult;
5698    int32_t numresultone;
5699    int32_t numresulttwo;
5700    auto numone = static_cast<int32_t>(10);
5701    auto numtwo = static_cast<int32_t>(20);
5702
5703    napi_create_object(env, &object);
5704    napi_status status = napi_create_int32(env, numone, &int32result);
5705    EXPECT_EQ(status, napi_status::napi_ok);
5706    status = napi_create_int32(env, numtwo, &freezeresult);
5707    EXPECT_EQ(status, napi_status::napi_ok);
5708    status = napi_set_named_property(env, object, "int32result", int32result);
5709    EXPECT_EQ(status, napi_status::napi_ok);
5710    status = napi_get_named_property(env, object, "int32result", &newuint32result);
5711    EXPECT_EQ(status, napi_status::napi_ok);
5712    status = napi_get_value_int32(env, newuint32result, &numresultone);
5713    EXPECT_EQ(status, napi_status::napi_ok);
5714    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
5715    napi_status creatresult = napi_object_seal(env, object);
5716    EXPECT_EQ(creatresult, napi_status::napi_ok);
5717    status = napi_set_named_property(env, object, "freezeresult", freezeresult);
5718    EXPECT_EQ(status, napi_status::napi_ok);
5719    status = napi_get_named_property(env, object, "freezeresult", &newfreezeresult);
5720    EXPECT_EQ(status, napi_status::napi_ok);
5721    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
5722    EXPECT_EQ(status, napi_status::napi_number_expected);
5723    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
5724
5725    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0100 end";
5726}
5727
5728/*
5729 * @tc.number    : ACE_Napi_Object_Seal_0200
5730 * @tc.name      : The parameters of napi_object_seal are valid,
5731 *                 The object is sealed by napi_object_seal function.
5732 * @tc.desc      : 1.The environment engine is created
5733 *                 2.Set test variables
5734 *                 3.The function of napi_object_seal is used to seal a object
5735 *                 4.Return value of function is napi_ok
5736 *                 5.The function of napi_delete_element is called
5737 *                 6.The element can be deleted
5738 */
5739HWTEST_F(NativeEngineTest, ACE_Napi_Object_Seal_0200, testing::ext::TestSize.Level1)
5740{
5741    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0200 start";
5742
5743    napi_env env = (napi_env)engine_;
5744    napi_value object = nullptr;
5745    napi_value int32result;
5746    napi_value newuint32result;
5747    napi_value freezeresult;
5748    napi_value newfreezeresult;
5749    napi_value afterfreezeresult;
5750    napi_value namestr;
5751    int32_t numresultone;
5752    int32_t numresulttwo;
5753    int32_t afternumresulttwo;
5754    bool deleteresult = false;
5755    auto numone = static_cast<int32_t>(10);
5756    auto numtwo = static_cast<int32_t>(20);
5757
5758    napi_create_object(env, &object);
5759    napi_status status = napi_create_int32(env, numone, &int32result);
5760    EXPECT_EQ(status, napi_status::napi_ok);
5761    status = napi_create_int32(env, numtwo, &freezeresult);
5762    EXPECT_EQ(status, napi_status::napi_ok);
5763    status = napi_set_named_property(env, object, "int32result", int32result);
5764    EXPECT_EQ(status, napi_status::napi_ok);
5765    status = napi_get_named_property(env, object, "int32result", &newuint32result);
5766    EXPECT_EQ(status, napi_status::napi_ok);
5767    status = napi_get_value_int32(env, newuint32result, &numresultone);
5768    EXPECT_EQ(status, napi_status::napi_ok);
5769    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
5770    status = napi_set_named_property(env, object, "freezeresult", freezeresult);
5771    EXPECT_EQ(status, napi_status::napi_ok);
5772    status = napi_get_named_property(env, object, "freezeresult", &newfreezeresult);
5773    EXPECT_EQ(status, napi_status::napi_ok);
5774    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
5775    EXPECT_EQ(status, napi_status::napi_ok);
5776    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
5777    napi_status creatresult = napi_object_seal(env, object);
5778    EXPECT_EQ(creatresult, napi_status::napi_ok);
5779    status = napi_create_string_utf8(env, "freezeresult", strlen("freezeresult"), &namestr);
5780    EXPECT_EQ(status, napi_status::napi_ok);
5781    status = napi_delete_property(env, object, namestr, &deleteresult);
5782    EXPECT_EQ(status, napi_status::napi_ok);
5783    status = napi_get_named_property(env, object, "freezeresult", &afterfreezeresult);
5784    EXPECT_EQ(status, napi_status::napi_ok);
5785    status = napi_get_value_int32(env, afterfreezeresult, &afternumresulttwo);
5786    EXPECT_EQ(status, napi_status::napi_ok);
5787    GTEST_LOG_(INFO) << "afterfreezeresult is" << afternumresulttwo;
5788    EXPECT_EQ(afternumresulttwo, 20);
5789
5790    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0200 end";
5791}
5792
5793/*
5794 * @tc.number    : ACE_Napi_Object_Seal_0300
5795 * @tc.name      : The parameters of napi_object_seal are valid,
5796 *                 The object is sealed by napi_object_seal function.
5797 * @tc.desc      : 1.The environment engine is created
5798 *                 2.Set test variables
5799 *                 3.The function of napi_object_seal is used to seal a object
5800 *                 4.Return value of function is napi_ok
5801 *                 5.The function of napi_set_element is called
5802 *                 6.The element can be changed
5803 */
5804HWTEST_F(NativeEngineTest, ACE_Napi_Object_Seal_0300, testing::ext::TestSize.Level1)
5805{
5806    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0300 start";
5807
5808    napi_env env = (napi_env)engine_;
5809    napi_value object = nullptr;
5810    napi_value int32result;
5811    napi_value newuint32result;
5812    napi_value freezeresult;
5813    napi_value newfreezeresult;
5814    int32_t numresultone;
5815    int32_t numresulttwo;
5816    auto numone = static_cast<int32_t>(10);
5817    auto numtwo = static_cast<int32_t>(20);
5818
5819    napi_create_object(env, &object);
5820    napi_status status = napi_create_int32(env, numone, &int32result);
5821    EXPECT_EQ(status, napi_status::napi_ok);
5822    status = napi_create_int32(env, numtwo, &freezeresult);
5823    EXPECT_EQ(status, napi_status::napi_ok);
5824    status = napi_set_named_property(env, object, "int32result", int32result);
5825    EXPECT_EQ(status, napi_status::napi_ok);
5826    status = napi_get_named_property(env, object, "int32result", &newuint32result);
5827    EXPECT_EQ(status, napi_status::napi_ok);
5828    status = napi_get_value_int32(env, newuint32result, &numresultone);
5829    EXPECT_EQ(status, napi_status::napi_ok);
5830    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
5831    napi_status creatresult = napi_object_seal(env, object);
5832    EXPECT_EQ(creatresult, napi_status::napi_ok);
5833    status = napi_set_named_property(env, object, "int32result", freezeresult);
5834    EXPECT_EQ(status, napi_status::napi_ok);
5835    status = napi_get_named_property(env, object, "int32result", &newfreezeresult);
5836    EXPECT_EQ(status, napi_status::napi_ok);
5837    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
5838    EXPECT_EQ(status, napi_status::napi_ok);
5839    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
5840    EXPECT_EQ(numresulttwo, 20);
5841
5842    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0300 end";
5843}
5844
5845/*
5846 * @tc.number    : ACE_Napi_Object_Seal_0400
5847 * @tc.name      : The parameter of the object to seal is invalid,
5848 *                 The object can not be sealed by napi_object_seal function.
5849 * @tc.desc      : 1.The environment engine is created
5850 *                 2.Set test variables
5851 *                 3.The function of napi_object_seal is used to seal a object
5852 *                 4.Return value of function is napi_invalid_arg
5853 *                 5.The function of napi_set_element is called
5854 *                 6.The element can be added
5855 */
5856HWTEST_F(NativeEngineTest, ACE_Napi_Object_Seal_0400, testing::ext::TestSize.Level2)
5857{
5858    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0400 start";
5859
5860    napi_env env = (napi_env)engine_;
5861    napi_value object = nullptr;
5862    napi_value int32result;
5863    napi_value newuint32result;
5864    napi_value freezeresult;
5865    napi_value newfreezeresult;
5866    int32_t numresultone;
5867    int32_t numresulttwo;
5868    auto numone = static_cast<int32_t>(10);
5869    auto numtwo = static_cast<int32_t>(20);
5870
5871    napi_create_object(env, &object);
5872    napi_status status = napi_create_int32(env, numone, &int32result);
5873    EXPECT_EQ(status, napi_status::napi_ok);
5874    status = napi_create_int32(env, numtwo, &freezeresult);
5875    EXPECT_EQ(status, napi_status::napi_ok);
5876    status = napi_set_named_property(env, object, "int32result", int32result);
5877    EXPECT_EQ(status, napi_status::napi_ok);
5878    status = napi_get_named_property(env, object, "int32result", &newuint32result);
5879    EXPECT_EQ(status, napi_status::napi_ok);
5880    status = napi_get_value_int32(env, newuint32result, &numresultone);
5881    EXPECT_EQ(status, napi_status::napi_ok);
5882    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
5883    napi_status creatresult = napi_object_seal(env, nullptr);
5884    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
5885    status = napi_set_named_property(env, object, "freezeresult", freezeresult);
5886    EXPECT_EQ(status, napi_status::napi_ok);
5887    status = napi_get_named_property(env, object, "freezeresult", &newfreezeresult);
5888    EXPECT_EQ(status, napi_status::napi_ok);
5889    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
5890    EXPECT_EQ(status, napi_status::napi_ok);
5891    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
5892    EXPECT_EQ(numresulttwo, 20);
5893
5894    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0400 end";
5895}
5896
5897/*
5898 * @tc.number    : ACE_Napi_Object_Seal_0500
5899 * @tc.name      : The parameter of environment is invalid,
5900 *                 The object can not be sealed by napi_object_seal function.
5901 * @tc.desc      : 1.The environment engine is created
5902 *                 2.Set test variables
5903 *                 3.The function of napi_object_seal is used to seal a object
5904 *                 4.Return value of function is napi_invalid_arg
5905 *                 5.The function of napi_set_element is called
5906 *                 6.The element can be added
5907 */
5908HWTEST_F(NativeEngineTest, ACE_Napi_Object_Seal_0500, testing::ext::TestSize.Level2)
5909{
5910    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0500 start";
5911
5912    napi_env env = (napi_env)engine_;
5913    napi_value object = nullptr;
5914    napi_value int32result;
5915    napi_value newuint32result;
5916    napi_value freezeresult;
5917    napi_value newfreezeresult;
5918    int32_t numresultone;
5919    int32_t numresulttwo;
5920    auto numone = static_cast<int32_t>(10);
5921    auto numtwo = static_cast<int32_t>(20);
5922
5923    napi_create_object(env, &object);
5924    napi_status status = napi_create_int32(env, numone, &int32result);
5925    EXPECT_EQ(status, napi_status::napi_ok);
5926    status = napi_create_int32(env, numtwo, &freezeresult);
5927    EXPECT_EQ(status, napi_status::napi_ok);
5928    status = napi_set_named_property(env, object, "int32result", int32result);
5929    EXPECT_EQ(status, napi_status::napi_ok);
5930    status = napi_get_named_property(env, object, "int32result", &newuint32result);
5931    EXPECT_EQ(status, napi_status::napi_ok);
5932    status = napi_get_value_int32(env, newuint32result, &numresultone);
5933    EXPECT_EQ(status, napi_status::napi_ok);
5934    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
5935    napi_status creatresult = napi_object_seal(nullptr, object);
5936    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
5937    status = napi_set_named_property(env, object, "freezeresult", freezeresult);
5938    EXPECT_EQ(status, napi_status::napi_ok);
5939    status = napi_get_named_property(env, object, "freezeresult", &newfreezeresult);
5940    EXPECT_EQ(status, napi_status::napi_ok);
5941    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
5942    EXPECT_EQ(status, napi_status::napi_ok);
5943    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
5944    EXPECT_EQ(numresulttwo, 20);
5945
5946    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0500 end";
5947}
5948
5949/*
5950 * @tc.number    : ACE_Napi_Object_Seal_0600
5951 * @tc.name      : The parameter of environment is invalid,
5952 *                 The object can not be sealed by napi_object_seal function.
5953 * @tc.desc      : 1.The environment engine is created
5954 *                 2.Set test variables
5955 *                 3.The function of napi_object_seal is used to seal a object
5956 *                 4.Return value of function is napi_invalid_arg
5957 *                 5.The function of napi_set_element is called
5958 *                 6.The element can be deleted
5959 */
5960HWTEST_F(NativeEngineTest, ACE_Napi_Object_Seal_0600, testing::ext::TestSize.Level2)
5961{
5962    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0600 start";
5963
5964    napi_env env = (napi_env)engine_;
5965    napi_value object = nullptr;
5966    napi_value int32result;
5967    napi_value newuint32result;
5968    napi_value freezeresult;
5969    napi_value newfreezeresult;
5970    napi_value afterfreezeresult;
5971    napi_value namestr;
5972    int32_t numresultone;
5973    int32_t numresulttwo;
5974    int32_t afternumresulttwo;
5975    bool deleteresult = false;
5976    auto numone = static_cast<int32_t>(10);
5977    auto numtwo = static_cast<int32_t>(20);
5978
5979    napi_create_object(env, &object);
5980    napi_status status = napi_create_int32(env, numone, &int32result);
5981    EXPECT_EQ(status, napi_status::napi_ok);
5982    status = napi_create_int32(env, numtwo, &freezeresult);
5983    EXPECT_EQ(status, napi_status::napi_ok);
5984    status = napi_set_named_property(env, object, "int32result", int32result);
5985    EXPECT_EQ(status, napi_status::napi_ok);
5986    status = napi_get_named_property(env, object, "int32result", &newuint32result);
5987    EXPECT_EQ(status, napi_status::napi_ok);
5988    status = napi_get_value_int32(env, newuint32result, &numresultone);
5989    EXPECT_EQ(status, napi_status::napi_ok);
5990    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
5991    status = napi_set_named_property(env, object, "freezeresult", freezeresult);
5992    EXPECT_EQ(status, napi_status::napi_ok);
5993    status = napi_get_named_property(env, object, "freezeresult", &newfreezeresult);
5994    EXPECT_EQ(status, napi_status::napi_ok);
5995    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
5996    EXPECT_EQ(status, napi_status::napi_ok);
5997    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
5998    napi_status creatresult = napi_object_seal(nullptr, object);
5999    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
6000    status = napi_create_string_utf8(env, "freezeresult", strlen("freezeresult"), &namestr);
6001    EXPECT_EQ(status, napi_status::napi_ok);
6002    status = napi_delete_property(env, object, namestr, &deleteresult);
6003    EXPECT_EQ(status, napi_status::napi_ok);
6004    EXPECT_EQ(deleteresult, true);
6005    status = napi_get_named_property(env, object, "freezeresult", &afterfreezeresult);
6006    EXPECT_EQ(status, napi_status::napi_ok);
6007    status = napi_get_value_int32(env, afterfreezeresult, &afternumresulttwo);
6008    EXPECT_EQ(status, napi_status::napi_number_expected);
6009    GTEST_LOG_(INFO) << "afterfreezeresult is" << afternumresulttwo;
6010
6011    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0600 end";
6012}
6013
6014/*
6015 * @tc.number    : ACE_Napi_Object_Seal_0700
6016 * @tc.name      : The parameter of environment is invalid,
6017 *                 The object can not be sealed by napi_object_seal function.
6018 * @tc.desc      : 1.The environment engine is created
6019 *                 2.Set test variables
6020 *                 3.The function of napi_object_seal is used to seal a object
6021 *                 4.Return value of function is napi_invalid_arg
6022 *                 5.The function of napi_set_element is called
6023 *                 6.The element can be changed
6024 */
6025HWTEST_F(NativeEngineTest, ACE_Napi_Object_Seal_0700, testing::ext::TestSize.Level2)
6026{
6027    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0700 start";
6028
6029    napi_env env = (napi_env)engine_;
6030    napi_value object = nullptr;
6031    napi_value int32result;
6032    napi_value newuint32result;
6033    napi_value freezeresult;
6034    napi_value newfreezeresult;
6035    int32_t numresultone;
6036    int32_t numresulttwo;
6037    auto numone = static_cast<int32_t>(10);
6038    auto numtwo = static_cast<int32_t>(20);
6039
6040    napi_create_object(env, &object);
6041    napi_status status = napi_create_int32(env, numone, &int32result);
6042    EXPECT_EQ(status, napi_status::napi_ok);
6043    status = napi_create_int32(env, numtwo, &freezeresult);
6044    EXPECT_EQ(status, napi_status::napi_ok);
6045    status = napi_set_named_property(env, object, "int32result", int32result);
6046    EXPECT_EQ(status, napi_status::napi_ok);
6047    status = napi_get_named_property(env, object, "int32result", &newuint32result);
6048    EXPECT_EQ(status, napi_status::napi_ok);
6049    status = napi_get_value_int32(env, newuint32result, &numresultone);
6050    EXPECT_EQ(status, napi_status::napi_ok);
6051    GTEST_LOG_(INFO) << "newuint32result is" << numresultone;
6052    napi_status creatresult = napi_object_seal(nullptr, object);
6053    EXPECT_EQ(creatresult, napi_status::napi_invalid_arg);
6054    status = napi_set_named_property(env, object, "int32result", freezeresult);
6055    EXPECT_EQ(status, napi_status::napi_ok);
6056    status = napi_get_named_property(env, object, "int32result", &newfreezeresult);
6057    EXPECT_EQ(status, napi_status::napi_ok);
6058    status = napi_get_value_int32(env, newfreezeresult, &numresulttwo);
6059    EXPECT_EQ(status, napi_status::napi_ok);
6060    GTEST_LOG_(INFO) << "newfreezeresult is" << numresulttwo;
6061    EXPECT_EQ(numresulttwo, 20);
6062
6063    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0700 end";
6064}
6065
6066/*
6067 * @tc.number    : ACE_Napi_Object_Seal_0800
6068 * @tc.name      : The parameters of napi_object_seal are valid,
6069 *                 The object is sealed by napi_object_seal function.
6070 * @tc.desc      : 1.The environment engine is created
6071 *                 2.Set test variables
6072 *                 3.The function of napi_object_seal is used to seal a number
6073 *                 4.Return value of function is napi_object_expected
6074 */
6075HWTEST_F(NativeEngineTest, ACE_Napi_Object_Seal_0800, testing::ext::TestSize.Level2)
6076{
6077    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0800 start";
6078
6079    napi_env env = (napi_env)engine_;
6080    napi_value int32result;
6081    auto numone = static_cast<int32_t>(10);
6082
6083    napi_status status = napi_create_int32(env, numone, &int32result);
6084    EXPECT_EQ(status, napi_status::napi_ok);
6085    napi_status creatresult = napi_object_seal(env, int32result);
6086    EXPECT_EQ(creatresult, napi_status::napi_object_expected);
6087
6088    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Object_Seal_0800 end";
6089}
6090#endif // (defined(FOR_JERRYSCRIPT_TEST)) &&  (JERRY_API_MINOR_VERSION <= 3)
6091/*
6092 * @tc.number    : ACE_Napi_Call_Threadsafe_Function_0100
6093 * @tc.name      : napi_create_threadsafe_function creates a queue and
6094 *                  calls napi_call_threadsafe_function is called in blocking mode.
6095 * @tc.desc      : 1.The environment engine is created.
6096 *                 2.napi_create_threadsafe_function creates a queue.
6097 *                 3.calls the napi_call_threadsafe_function function in the test thread and child threads.
6098 */
6099HWTEST_F(NativeEngineTest, ACE_Napi_Call_Threadsafe_Function_0100, testing::ext::TestSize.Level1)
6100{
6101    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0100 called start";
6102    napi_env env = (napi_env)engine_;
6103    napi_threadsafe_function tsFunc = nullptr;
6104    napi_value resourceName = 0;
6105
6106    auto status = napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
6107    EXPECT_EQ(status, napi_ok);
6108
6109    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
6110    g_finalData.id = FINAL_CB_DATA_TEST_ID;
6111    g_callJSCallBackCount = 0;
6112    g_callFinalizeEnd = false;
6113
6114    status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 0, 1, &g_finalData,
6115        FinalizeThreadCallBack, &g_jsData, CallJSCallBack, &tsFunc);
6116    EXPECT_EQ(status, napi_ok);
6117
6118    uv_thread_t newChildTid;
6119    ThreadData_t threadData = { .tsfn = tsFunc, .isMode = napi_tsfn_blocking };
6120    if (uv_thread_create(&newChildTid, NewChildThreadMuti, (void*)&threadData) != 0) {
6121        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6122    }
6123    if (uv_thread_join(&newChildTid) != 0) {
6124        GTEST_LOG_(INFO) << "uv_thread_join Failed!";
6125    }
6126    int testCount = 20;
6127    for (int i = 0; i < testCount; i++) {
6128        status = napi_call_threadsafe_function(tsFunc, (void*)&g_threadDataContent, napi_tsfn_blocking);
6129        EXPECT_EQ(status, napi_ok);
6130    }
6131
6132    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
6133    EXPECT_EQ(status, napi_ok);
6134
6135    GetFinalizeStatus();
6136    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0100 called end";
6137}
6138
6139/*
6140 * @tc.number    : ACE_Napi_Call_Threadsafe_Function_0200
6141 * @tc.name      : napi_create_threadsafe_function creates a queue and
6142 *                  calls napi_call_threadsafe_function is called in nonblocking mode.
6143 * @tc.desc      : 1.The environment engine is created.
6144 *                 2.napi_create_threadsafe_function creates a queue.
6145 *                 3.calls the napi_call_threadsafe_function function in the test thread and child threads.
6146 */
6147HWTEST_F(NativeEngineTest, ACE_Napi_Call_Threadsafe_Function_0200, testing::ext::TestSize.Level1)
6148{
6149    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0200 called start";
6150    napi_env env = (napi_env)engine_;
6151    napi_threadsafe_function tsFunc = nullptr;
6152    napi_value resourceName = 0;
6153
6154    auto status = napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
6155    EXPECT_EQ(status, napi_ok);
6156
6157    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
6158    g_finalData.id = FINAL_CB_DATA_TEST_ID;
6159    g_callJSCallBackCount = 0;
6160    g_callFinalizeEnd = false;
6161
6162    status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 0, 1, &g_finalData,
6163        NonBlockFinalizeThreadCallBack, &g_jsData, CallJSCallBack, &tsFunc);
6164    EXPECT_EQ(status, napi_ok);
6165
6166    uv_thread_t newChildTid;
6167    ThreadData_t threadData = { .tsfn = tsFunc, .isMode = napi_tsfn_nonblocking };
6168    if (uv_thread_create(&newChildTid, NewChildThreadMuti, (void*)&threadData) != 0) {
6169        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6170    }
6171    if (uv_thread_join(&newChildTid) != 0) {
6172        GTEST_LOG_(INFO) << "uv_thread_join Failed!";
6173    }
6174    int testCount = 20;
6175    for (int i = 0; i < testCount; i++) {
6176        status = napi_call_threadsafe_function(tsFunc, &g_threadDataContent, napi_tsfn_nonblocking);
6177        EXPECT_EQ(status, napi_ok);
6178    }
6179
6180    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
6181    EXPECT_EQ(status, napi_ok);
6182    GetFinalizeStatus();
6183
6184    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0200 called end";
6185}
6186/*
6187 * @tc.number    : ACE_Napi_Call_Threadsafe_Function_0300
6188 * @tc.name      : napi_create_threadsafe_function creates a queue and
6189 *                  calls napi_call_threadsafe_function.
6190 * @tc.desc      : 1.The environment engine is created.
6191 *                 2.napi_create_threadsafe_function creates a queue.
6192 *                 3.In the test thread, calls the napi_call_threadsafe_function function in blocking mode.
6193 *                 4.calls the napi_call_threadsafe_function function in non-blocking mode in the created child thread.
6194 */
6195HWTEST_F(NativeEngineTest, ACE_Napi_Call_Threadsafe_Function_0300, testing::ext::TestSize.Level1)
6196{
6197    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0300 called start";
6198    napi_env env = (napi_env)engine_;
6199    napi_threadsafe_function tsFunc = nullptr;
6200    napi_value resourceName = 0;
6201
6202    auto status = napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
6203    EXPECT_EQ(status, napi_ok);
6204
6205    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
6206    g_finalData.id = FINAL_CB_DATA_TEST_ID;
6207    g_callJSCallBackCount = 0;
6208    g_callFinalizeEnd = false;
6209
6210    status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 50, 1, &g_finalData,
6211        FinalizeThreadCallBack, &g_jsData, CallJSCallBack, &tsFunc);
6212    EXPECT_EQ(status, napi_ok);
6213
6214    uv_thread_t newChildTid;
6215    ThreadData_t threadData = { .tsfn = tsFunc, .isMode = napi_tsfn_blocking };
6216    if (uv_thread_create(&newChildTid, NewChildThreadMuti, (void*)&threadData) != 0) {
6217        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6218    }
6219    if (uv_thread_join(&newChildTid) != 0) {
6220        GTEST_LOG_(INFO) << "uv_thread_join Failed!";
6221    }
6222
6223    int testCount = 20;
6224    for (int i = 0; i < testCount; i++) {
6225        status = napi_call_threadsafe_function(tsFunc, &g_threadDataContent, napi_tsfn_nonblocking);
6226        EXPECT_EQ(status, napi_ok);
6227    }
6228
6229    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
6230    EXPECT_EQ(status, napi_ok);
6231    GetFinalizeStatus();
6232    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0300 called end";
6233}
6234
6235/*
6236 * @tc.number    : ACE_Napi_Call_Threadsafe_Function_0400
6237 * @tc.name      : napi_create_threadsafe_function creates a queue and
6238 *                  calls napi_call_threadsafe_function.
6239 * @tc.desc      : 1.The environment engine is created.
6240 *                 2.napi_create_threadsafe_function creates a queue.
6241 *                 3.In the test thread, calls the napi_call_threadsafe_function function in non-blocking mode.
6242 *                 4.calls the napi_call_threadsafe_function function in blocking mode in the created child thread.
6243 */
6244HWTEST_F(NativeEngineTest, ACE_Napi_Call_Threadsafe_Function_0400, testing::ext::TestSize.Level1)
6245{
6246    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0400 called start";
6247    napi_env env = (napi_env)engine_;
6248    napi_threadsafe_function tsFunc = nullptr;
6249    napi_value resourceName = 0;
6250
6251    auto status = napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
6252    EXPECT_EQ(status, napi_ok);
6253
6254    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
6255    g_finalData.id = FINAL_CB_DATA_TEST_ID;
6256    g_callJSCallBackCount = 0;
6257    g_callFinalizeEnd = false;
6258
6259    status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 50, 1, &g_finalData,
6260        FinalizeThreadCallBack, &g_jsData, CallJSCallBack, &tsFunc);
6261    EXPECT_EQ(status, napi_ok);
6262
6263    uv_thread_t newChildTid;
6264    ThreadData_t threadData = { .tsfn = tsFunc, .isMode = napi_tsfn_nonblocking };
6265    if (uv_thread_create(&newChildTid, NewChildThreadMuti, (void*)&threadData) != 0) {
6266        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6267    }
6268    if (uv_thread_join(&newChildTid) != 0) {
6269        GTEST_LOG_(INFO) << "uv_thread_join Failed!";
6270    }
6271
6272    int testCount = 20;
6273    for (int i = 0; i < testCount; i++) {
6274        status = napi_call_threadsafe_function(tsFunc, &g_threadDataContent, napi_tsfn_blocking);
6275        EXPECT_EQ(status, napi_ok);
6276    }
6277
6278    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
6279    EXPECT_EQ(status, napi_ok);
6280    GetFinalizeStatus();
6281    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0400 called end";
6282}
6283
6284/*
6285 * @tc.number    : ACE_Napi_Call_Threadsafe_Function_0500
6286 * @tc.name      : napi_create_threadsafe_function creates a queue and
6287 *                  calls napi_call_threadsafe_function.
6288 * @tc.desc      : 1.The environment engine is created.
6289 *                 2.napi_create_threadsafe_function creates a queue.
6290 *                 3.In the test thread, calls the napi_call_threadsafe_function function in blocking and non-blocking
6291 *                  modes.
6292 *                 4.calls the napi_call_threadsafe_function function in blocking and non-blocking modes in the created
6293 *                  child thread.
6294 */
6295HWTEST_F(NativeEngineTest, ACE_Napi_Call_Threadsafe_Function_0500, testing::ext::TestSize.Level1)
6296{
6297    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0500 called start";
6298    napi_env env = (napi_env)engine_;
6299    napi_threadsafe_function tsFunc = nullptr;
6300    napi_value resourceName = 0;
6301
6302    napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
6303    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
6304    g_finalData.id = FINAL_CB_DATA_TEST_ID;
6305    g_callJSCallBackCount = 0;
6306    g_callFinalizeEnd = false;
6307
6308    auto status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 50, 1, &g_finalData,
6309        AllFinalizeThreadCallBack, &g_jsData, CallJSCallBack, &tsFunc);
6310    EXPECT_EQ(status, napi_ok);
6311
6312    uv_thread_t newChildTid;
6313    ThreadData_t threadData = { .tsfn = tsFunc };
6314    if (uv_thread_create(&newChildTid, NonBlockAndBlockNewChildThreadMuti, (void*)&threadData) != 0) {
6315        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6316    }
6317    if (uv_thread_join(&newChildTid) != 0) {
6318        GTEST_LOG_(INFO) << "uv_thread_join Failed!";
6319    }
6320
6321    int testCount = 10;
6322    for (int i = 0; i < testCount; i++) {
6323        status = napi_call_threadsafe_function(tsFunc, &g_threadDataContent3, napi_tsfn_blocking);
6324        EXPECT_EQ(status, napi_ok);
6325    }
6326
6327    for (int i = 0; i < testCount; i++) {
6328        status = napi_call_threadsafe_function(tsFunc, &g_threadDataContent3, napi_tsfn_nonblocking);
6329        EXPECT_EQ(status, napi_ok);
6330    }
6331    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
6332    EXPECT_EQ(status, napi_ok);
6333    GetFinalizeStatus();
6334    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0500 called end";
6335}
6336
6337/*
6338 * @tc.number    : ACE_Napi_Call_Threadsafe_Function_0600
6339 * @tc.name      : napi_create_threadsafe_function creates a queue and
6340 *                  calls napi_call_threadsafe_function.
6341 * @tc.desc      : 1.The environment engine is created.
6342 *                 2.napi_create_threadsafe_function creates a queue.
6343 *                 3.In the test thread, calls the napi_call_threadsafe_function function in blocking and non-blocking
6344 *                   modes.
6345 *                 4.calls the napi_call_threadsafe_function function in blocking and non-blocking modes in the created
6346 *                  child thread.
6347 */
6348HWTEST_F(NativeEngineTest, ACE_Napi_Call_Threadsafe_Function_0600, testing::ext::TestSize.Level1)
6349{
6350    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0600 called start";
6351    napi_env env = (napi_env)engine_;
6352    napi_threadsafe_function tsFunc = nullptr;
6353    napi_value resourceName = 0;
6354
6355    auto status = napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
6356    EXPECT_EQ(status, napi_ok);
6357
6358    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
6359    g_finalData.id = FINAL_CB_DATA_TEST_ID;
6360    g_callJSCallBackCount = 0;
6361    g_callFinalizeEnd = false;
6362
6363    status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 50, 1, &g_finalData,
6364        OtherFinalizeThreadCallBack, &g_jsData, CallJSCallBack, &tsFunc);
6365    EXPECT_EQ(status, napi_ok);
6366
6367    uv_thread_t newChildTid;
6368    uv_thread_t newChildTid2;
6369    ThreadData_t threadData = { .tsfn = tsFunc, .isMode = napi_tsfn_nonblocking };
6370    if (uv_thread_create(&newChildTid, NonBlockAndBlockNewChildThreadMuti, (void*)&threadData) != 0) {
6371        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6372    }
6373    if (uv_thread_join(&newChildTid) != 0) {
6374        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid) Failed!";
6375    }
6376
6377    if (uv_thread_create(&newChildTid2, NonBlockAndBlockNewChildThreadMuti, (void*)&threadData) != 0) {
6378        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6379    }
6380    if (uv_thread_join(&newChildTid2) != 0) {
6381        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid2) Failed!";
6382    }
6383    int testCount = 3;
6384    for (int i = 0; i < testCount; i++) {
6385        status = napi_call_threadsafe_function(tsFunc, &g_threadDataContent3, napi_tsfn_blocking);
6386        EXPECT_EQ(status, napi_ok);
6387    }
6388    testCount = 3;
6389    for (int i = 0; i < testCount; i++) {
6390        status = napi_call_threadsafe_function(tsFunc, &g_threadDataContent3, napi_tsfn_nonblocking);
6391        EXPECT_EQ(status, napi_ok);
6392    }
6393    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
6394    EXPECT_EQ(status, napi_ok);
6395
6396    GetFinalizeStatus();
6397    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0600 called end";
6398}
6399
6400/*
6401 * @tc.number    : ACE_Napi_Call_Threadsafe_Function_0700
6402 * @tc.name      : napi_create_threadsafe_function creates a queue and
6403 *                  calls napi_call_threadsafe_function.
6404 * @tc.desc      : 1.The environment engine is created.
6405 *                 2.napi_create_threadsafe_function creates a queue.
6406 *                 3.In the test thread, calls the napi_call_threadsafe_function function [nonblock call 10 times,
6407 *                   block call 10 times, nonblock call 10 times].
6408 *                 4.In the three child threads created, calls the napi_call_threadsafe_function
6409 *                   function[nonblock call 10 times, block call 10 times, onblock call 10 times].
6410 */
6411HWTEST_F(NativeEngineTest, ACE_Napi_Call_Threadsafe_Function_0700, testing::ext::TestSize.Level1)
6412{
6413    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0700 called start";
6414    napi_env env = (napi_env)engine_;
6415    napi_threadsafe_function tsFunc = nullptr;
6416    napi_value resourceName = 0;
6417
6418    auto status = napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
6419    EXPECT_EQ(status, napi_ok);
6420
6421    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
6422    g_finalData.id = FINAL_CB_DATA_TEST_ID;
6423    g_callJSCallBackCount = 0;
6424    g_callFinalizeEnd = false;
6425
6426    status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 200, 1, &g_finalData,
6427        MutiModeFinalizeThreadCallBack, &g_jsData, CallJSCallBack, &tsFunc);
6428    EXPECT_EQ(status, napi_ok);
6429
6430    uv_thread_t newChildTid, newChildTid2, newChildTid3;
6431    OneModeCallData_t threadData = { .tsfn = tsFunc, .mode = napi_tsfn_nonblocking, .callCount = 10 };
6432    if (uv_thread_create(&newChildTid, MutiModeCallOne, (void*)&threadData) != 0) {
6433        GTEST_LOG_(INFO) << "uv_thread_create(&newChildTid) Failed to create uv thread!";
6434    }
6435    if (uv_thread_join(&newChildTid) != 0) {
6436        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid) Failed!";
6437    }
6438    if (uv_thread_create(&newChildTid2, MutiModeCallOne, (void*)&threadData) != 0) {
6439        GTEST_LOG_(INFO) << "uv_thread_create(&newChildTid2) Failed to create uv thread!";
6440    }
6441    if (uv_thread_join(&newChildTid2) != 0) {
6442        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid2) Failed!";
6443    }
6444    if (uv_thread_create(&newChildTid3, MutiModeCallOne, (void*)&threadData) != 0) {
6445        GTEST_LOG_(INFO) << "uv_thread_create(&newChildTid3) Failed to create uv thread!";
6446    }
6447    if (uv_thread_join(&newChildTid3) != 0) {
6448        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid3) Failed!";
6449    }
6450
6451    threadData.mode = napi_tsfn_nonblocking;
6452    threadData.callCount = 10;
6453    OneModeCall(&threadData);
6454
6455    threadData.mode = napi_tsfn_blocking;
6456    OneModeCall(&threadData);
6457
6458    threadData.mode = napi_tsfn_nonblocking;
6459    OneModeCall(&threadData);
6460
6461    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
6462    EXPECT_EQ(status, napi_ok);
6463    GetFinalizeStatus();
6464    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0700 called end";
6465}
6466/*
6467 * @tc.number    : ACE_Napi_Call_Threadsafe_Function_0800
6468 * @tc.name      : napi_create_threadsafe_function creates a queue and
6469 *                  calls napi_call_threadsafe_function.
6470 * @tc.desc      : 1.The environment engine is created.
6471 *                 2.napi_create_threadsafe_function creates a queue.
6472 *                 3.In the test thread, calls the napi_call_threadsafe_function function [block call 10 times,
6473 *                   nonblock call 10 times, block call 10 times].
6474 *                 4.In the three child threads created, calls the napi_call_threadsafe_function
6475 *                   function[block call 10 times, nonblock call 10 times, block call 10 times].
6476 */
6477HWTEST_F(NativeEngineTest, ACE_Napi_Call_Threadsafe_Function_0800, testing::ext::TestSize.Level1)
6478{
6479    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0800 called start";
6480    napi_env env = (napi_env)engine_;
6481    napi_threadsafe_function tsFunc = nullptr;
6482    napi_value resourceName = 0;
6483
6484    auto status = napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
6485    EXPECT_EQ(status, napi_ok);
6486
6487    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
6488    g_finalData.id = FINAL_CB_DATA_TEST_ID;
6489    g_callJSCallBackCount = 0;
6490    g_callFinalizeEnd = false;
6491
6492    status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 200, 1, &g_finalData,
6493        MutiModeFinalizeThreadCallBack, &g_jsData, CallJSCallBack, &tsFunc);
6494    EXPECT_EQ(status, napi_ok);
6495
6496    uv_thread_t newChildTid, newChildTid2, newChildTid3;
6497    OneModeCallData_t threadData = { .tsfn = tsFunc, .mode = napi_tsfn_nonblocking, .callCount = 10 };
6498    if (uv_thread_create(&newChildTid, MutiModeCallTwo, (void*)&threadData) != 0) {
6499        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6500    }
6501    if (uv_thread_join(&newChildTid) != 0) {
6502        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid) Failed!";
6503    }
6504    if (uv_thread_create(&newChildTid2, MutiModeCallTwo, (void*)&threadData) != 0) {
6505        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6506    }
6507    if (uv_thread_join(&newChildTid2) != 0) {
6508        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid2) Failed!";
6509    }
6510    if (uv_thread_create(&newChildTid3, MutiModeCallTwo, (void*)&threadData) != 0) {
6511        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6512    }
6513    if (uv_thread_join(&newChildTid3) != 0) {
6514        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid3) Failed!";
6515    }
6516
6517    threadData.mode = napi_tsfn_blocking;
6518    threadData.callCount = 10;
6519    OneModeCall(&threadData);
6520
6521    threadData.mode = napi_tsfn_nonblocking;
6522    OneModeCall(&threadData);
6523
6524    threadData.mode = napi_tsfn_blocking;
6525    OneModeCall(&threadData);
6526
6527    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
6528    EXPECT_EQ(status, napi_ok);
6529    GetFinalizeStatus();
6530    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0800 called end";
6531}
6532
6533/*
6534 * @tc.number    : ACE_Napi_Call_Threadsafe_Function_0900
6535 * @tc.name      : napi_create_threadsafe_function creates a queue and
6536 *                  calls napi_call_threadsafe_function.
6537 * @tc.desc      : 1.The environment engine is created.
6538 *                 2.napi_create_threadsafe_function creates a queue.
6539 *                 3.In the test thread, calls the napi_call_threadsafe_function function [block call 10 times,
6540 *                   nonblock call 10 times, block call 10 times].
6541 *                 4.In the first child thread created, calls the napi_call_threadsafe_function
6542 *                   function[nonblock call 10 times, block call 10 times, nonblock call 10 times].
6543 *                 5.In the second child thread created, calls the napi_call_threadsafe_function
6544 *                   function[block call 10 times, nonblock call 10 times, block call 10 times].
6545 *                 6.In the third child thread created, calls the napi_call_threadsafe_function
6546 *                   function[nonblock call 10 times, block call 10 times, nonblock call 10 times].
6547 */
6548HWTEST_F(NativeEngineTest, ACE_Napi_Call_Threadsafe_Function_0900, testing::ext::TestSize.Level1)
6549{
6550    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0900 called start";
6551    napi_env env = (napi_env)engine_;
6552    napi_threadsafe_function tsFunc = nullptr;
6553    napi_value resourceName = 0;
6554
6555    auto status = napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
6556    EXPECT_EQ(status, napi_ok);
6557
6558    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
6559    g_finalData.id = FINAL_CB_DATA_TEST_ID;
6560    g_callJSCallBackCount = 0;
6561    g_callFinalizeEnd = false;
6562
6563    status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 200, 1, &g_finalData,
6564        MutiModeFinalizeThreadCallBack, &g_jsData, CallJSCallBack, &tsFunc);
6565    EXPECT_EQ(status, napi_ok);
6566
6567    uv_thread_t newChildTid, newChildTid2, newChildTid3;
6568    OneModeCallData_t threadData = { .tsfn = tsFunc, .mode = napi_tsfn_nonblocking, .callCount = 10 };
6569    if (uv_thread_create(&newChildTid, MutiModeCallOne, (void*)&threadData) != 0) {
6570        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6571    }
6572    if (uv_thread_join(&newChildTid) != 0) {
6573        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid) Failed!";
6574    }
6575    if (uv_thread_create(&newChildTid2, MutiModeCallTwo, (void*)&threadData) != 0) {
6576        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6577    }
6578    if (uv_thread_join(&newChildTid2) != 0) {
6579        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid2) Failed!";
6580    }
6581    if (uv_thread_create(&newChildTid3, MutiModeCallOne, (void*)&threadData) != 0) {
6582        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6583    }
6584    if (uv_thread_join(&newChildTid3) != 0) {
6585        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid3) Failed!";
6586    }
6587
6588    threadData.mode = napi_tsfn_blocking;
6589    threadData.callCount = 10;
6590    OneModeCall(&threadData);
6591
6592    threadData.mode = napi_tsfn_nonblocking;
6593    OneModeCall(&threadData);
6594
6595    threadData.mode = napi_tsfn_blocking;
6596    OneModeCall(&threadData);
6597
6598    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
6599    EXPECT_EQ(status, napi_ok);
6600
6601    GetFinalizeStatus();
6602    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_0900 called end";
6603}
6604/*
6605 * @tc.number    : ACE_Napi_Call_Threadsafe_Function_1000
6606 * @tc.name      : napi_create_threadsafe_function creates a queue and
6607 *                  calls napi_call_threadsafe_function.
6608 * @tc.desc      : 1.The environment engine is created.
6609 *                 2.napi_create_threadsafe_function creates a queue.
6610 *                 3.In the test thread, calls the napi_call_threadsafe_function function [nonblock call 30 times].
6611 *                 4.In the one child thread created, calls the napi_call_threadsafe_function
6612 *                   function[nonblock call 30 times].
6613 */
6614HWTEST_F(NativeEngineTest, ACE_Napi_Call_Threadsafe_Function_1000, testing::ext::TestSize.Level1)
6615{
6616    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_1000 called start";
6617    napi_env env = (napi_env)engine_;
6618    napi_threadsafe_function tsFunc = nullptr;
6619    napi_value resourceName = 0;
6620
6621    auto status = napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
6622    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
6623    g_finalData.id = FINAL_CB_DATA_TEST_ID;
6624    g_callJSCallBackCount = 0;
6625    g_callFinalizeEnd = false;
6626
6627    status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 200, 1, &g_finalData,
6628        MutiModeFinalizeThreadCallBack, &g_jsData, CallJSCallBack, &tsFunc);
6629    EXPECT_EQ(status, napi_ok);
6630
6631    uv_thread_t newChildTid, newChildTid2, newChildTid3;
6632    OneModeCallData_t threadData = { .tsfn = tsFunc, .mode = napi_tsfn_nonblocking, .callCount = 10 };
6633    if (uv_thread_create(&newChildTid, MutiModeCallThree, (void*)&threadData) != 0) {
6634        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6635    }
6636    if (uv_thread_join(&newChildTid) != 0) {
6637        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid) Failed!";
6638    }
6639    if (uv_thread_create(&newChildTid2, MutiModeCallThree, (void*)&threadData) != 0) {
6640        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6641    }
6642    if (uv_thread_join(&newChildTid2) != 0) {
6643        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid2) Failed!";
6644    }
6645    if (uv_thread_create(&newChildTid3, MutiModeCallThree, (void*)&threadData) != 0) {
6646        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6647    }
6648    if (uv_thread_join(&newChildTid3) != 0) {
6649        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid3) Failed!";
6650    }
6651
6652    threadData.mode = napi_tsfn_nonblocking;
6653    threadData.callCount = 30;
6654    OneModeCall(&threadData);
6655
6656    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
6657    EXPECT_EQ(status, napi_ok);
6658    GetFinalizeStatus();
6659    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_1000 called end";
6660}
6661/*
6662 * @tc.number    : ACE_Napi_Call_Threadsafe_Function_1100
6663 * @tc.name      : napi_create_threadsafe_function creates a queue and
6664 *                  calls napi_call_threadsafe_function.
6665 * @tc.desc      : 1.The environment engine is created.
6666 *                 2.napi_create_threadsafe_function creates a queue.
6667 *                 3.In the test thread, calls the napi_call_threadsafe_function function [block call 30 times].
6668 *                 4.In the three child threads created, calls the napi_call_threadsafe_function
6669 *                   function[block call 30 times].
6670 */
6671HWTEST_F(NativeEngineTest, ACE_Napi_Call_Threadsafe_Function_1100, testing::ext::TestSize.Level1)
6672{
6673    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_1100 called start";
6674    napi_env env = (napi_env)engine_;
6675    napi_threadsafe_function tsFunc = nullptr;
6676    napi_value resourceName = 0;
6677
6678    auto status = napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
6679
6680    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
6681    g_finalData.id = FINAL_CB_DATA_TEST_ID;
6682    g_callJSCallBackCount = 0;
6683    g_callFinalizeEnd = false;
6684
6685    status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 200, 1, &g_finalData,
6686        MutiModeFinalizeThreadCallBack, &g_jsData, CallJSCallBack, &tsFunc);
6687    EXPECT_EQ(status, napi_ok);
6688
6689    uv_thread_t newChildTid, newChildTid2, newChildTid3;
6690    OneModeCallData_t threadData = { .tsfn = tsFunc, .mode = napi_tsfn_nonblocking, .callCount = 10 };
6691    if (uv_thread_create(&newChildTid, MutiModeCallFour, (void*)&threadData) != 0) {
6692        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6693    }
6694    if (uv_thread_join(&newChildTid)!= 0) {
6695        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid) Failed!";
6696    }
6697    if (uv_thread_create(&newChildTid2, MutiModeCallFour, (void*)&threadData) != 0) {
6698        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6699    }
6700    if (uv_thread_join(&newChildTid2) != 0) {
6701        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid2) Failed!";
6702    }
6703    if (uv_thread_create(&newChildTid3, MutiModeCallFour, (void*)&threadData) != 0) {
6704        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6705    }
6706    if (uv_thread_join(&newChildTid3) != 0) {
6707        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid3) Failed!";
6708    }
6709
6710    threadData.mode = napi_tsfn_blocking;
6711    threadData.callCount = 30;
6712    OneModeCall(&threadData);
6713
6714    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
6715    EXPECT_EQ(status, napi_ok);
6716    GetFinalizeStatus();
6717    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_1100 called end";
6718}
6719/*
6720 * @tc.number    : ACE_Napi_Call_Threadsafe_Function_1200
6721 * @tc.name      : napi_create_threadsafe_function creates a queue and
6722 *                 test napi_call_threadsafe_function none blocking mode with the queue full .
6723 * @tc.desc      :1.The environment engine is created.
6724 *                2.napi_create_threadsafe_function creates a queue with size 10.
6725 *                3.In the child thread, calls the napi_call_threadsafe_function function in non-blocking modes for 30
6726 *                  times.
6727 *                4.Normally for each CallJSSlowCallBack takes at least 1 second,
6728 *                  the created queue would be full quickly.
6729 *                5.Check if napi_call_threadsafe_function failure happens.
6730 */
6731HWTEST_F(NativeEngineTest, ACE_Napi_Call_Threadsafe_Function_1200, testing::ext::TestSize.Level1)
6732{
6733    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_1200 called start";
6734    napi_env env = (napi_env)engine_;
6735    napi_threadsafe_function tsFunc = nullptr;
6736    napi_value resourceName = 0;
6737    g_callJSCallBackCount = 0;
6738    g_callCount = 0;
6739    g_bFailFlag = false;
6740    g_bIsFinish = false;
6741
6742    auto status = napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
6743    EXPECT_EQ(status, napi_ok);
6744
6745    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
6746    g_finalData.id = FINAL_CB_DATA_TEST_ID;
6747
6748    status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 10, 1, &g_finalData,
6749        FinalCallBack, &g_jsData, CallJSSlowCallBack, &tsFunc);
6750    EXPECT_EQ(status, napi_ok);
6751
6752    uv_thread_t newChildTid;
6753    if (uv_thread_create(&newChildTid, NewChildThreadMutiCallNoneBlocking, tsFunc) != 0) {
6754        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6755    }
6756    if (uv_thread_join(&newChildTid) != 0) {
6757        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid) Failed!";
6758    }
6759    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
6760    EXPECT_EQ(status, napi_ok);
6761
6762    WaitForFinish();
6763    EXPECT_EQ(g_bFailFlag, true);
6764    GTEST_LOG_(INFO) << "CallBack Count= " << g_callJSCallBackCount;
6765    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_1200 called end";
6766}
6767
6768/*
6769 * @tc.number    : ACE_Napi_Call_Threadsafe_Function_1300
6770 * @tc.name      : napi_create_threadsafe_function creates a queue and
6771 *                 test napi_call_threadsafe_function blocking mode with the queue full.
6772 * @tc.desc      :1.The environment engine is created.
6773 *                2.napi_create_threadsafe_function creates a queue with size 10.
6774 *                3.In the child thread, calls the napi_call_threadsafe_function
6775 *                  function in blocking mode for 20 times.
6776 *                4.Normally for each CallJSSlowCallBack takes at least 1 second, the created queue would be full
6777 *                  quickly. 5.Check if napi_call_threadsafe_function failure happens.
6778 */
6779HWTEST_F(NativeEngineTest, ACE_Napi_Call_Threadsafe_Function_1300, testing::ext::TestSize.Level1)
6780{
6781    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_1300 called start";
6782    napi_env env = (napi_env)engine_;
6783    napi_threadsafe_function tsFunc = nullptr;
6784    napi_value resourceName = 0;
6785    g_callJSCallBackCount = 0;
6786    g_callCount = 0;
6787    g_bIsFinish = false;
6788
6789    auto status = napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
6790    EXPECT_EQ(status, napi_ok);
6791
6792    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
6793    g_finalData.id = FINAL_CB_DATA_TEST_ID;
6794
6795    status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 10, 1, &g_finalData,
6796        FinalCallBack, &g_jsData, CallJSSlowCallBack, &tsFunc);
6797    EXPECT_EQ(status, napi_ok);
6798
6799    uv_thread_t newChildTid;
6800    if (uv_thread_create(&newChildTid, NewChildThreadMutiCallBlocking, tsFunc) != 0) {
6801        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
6802    }
6803    if (uv_thread_join(&newChildTid) != 0) {
6804        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid) Failed!";
6805    }
6806
6807    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
6808    EXPECT_EQ(status, napi_ok);
6809    WaitForFinish();
6810    EXPECT_EQ(g_callCount, g_callJSCallBackCount);
6811    GTEST_LOG_(INFO) << "ACE_Napi_Call_Threadsafe_Function_1300 called end";
6812}
6813
6814/*
6815 * @tc.number  : ACE_Napi_Create_Threadsafe_Function_0100
6816 * @tc.name    : If all parameters are normal, call napi_create_threadsafe_function to create a safe thread
6817 * @tc.desc    : 1.Declare each parameter correctly
6818 *               2.Call napi_create_threadsafe_function
6819 *               3.Call uv_thread_create to create the thread
6820 *               4.Jscallback is triggered by napi_call_threadsafe_function
6821 *               5.Call napi_release_threadsafe_function to free the thread
6822 *               6.Trigger Threadfinalcb
6823 */
6824HWTEST_F(NativeEngineTest, ACE_Napi_Create_Threadsafe_Function_0100, testing::ext::TestSize.Level1)
6825{
6826    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0100 start";
6827
6828    napi_env env = (napi_env)engine_;
6829    g_callFinalizeEnd = false;
6830    size_t strsize = 13;
6831    napi_value resource_name;
6832    napi_threadsafe_function result = nullptr;
6833    jsData.id = CALL_JSCB_DATA;
6834    finalData.id = FINAL_CB_DATA;
6835    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
6836    napi_status threadresult = napi_create_threadsafe_function(
6837        env, nullptr, nullptr, resource_name, 0, 1, &finalData, Threadfinalcb, &jsData, ThreadSafeCallJs, &result);
6838    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
6839    EXPECT_EQ(threadresult, napi_status::napi_ok);
6840    EXPECT_NE(result, nullptr);
6841    g_callFinalizeEnd = true;
6842    GetFinalizeStatus();
6843    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0100 end";
6844}
6845
6846/*
6847 * @tc.number  : ACE_Napi_Create_Threadsafe_Function_0200
6848 * @tc.name    : Call napi_create_threadsafe_function when the number of initial threads is the maximum
6849 * @tc.desc    : 1.Declare each parameter correctly
6850 *               2.Call napi_create_threadsafe_function when the number of initial threads is the
6851 *                  maximum
6852 *               3.Call uv_thread_create to create the thread
6853 *               4.Jscallback is triggered by napi_call_threadsafe_function
6854 *               5.Call napi_release_threadsafe_function to free the thread
6855 *               6.Trigger Threadfinalcb
6856 */
6857HWTEST_F(NativeEngineTest, ACE_Napi_Create_Threadsafe_Function_0200, testing::ext::TestSize.Level1)
6858{
6859    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0200 start";
6860
6861    napi_env env = (napi_env)engine_;
6862    g_callFinalizeEnd = false;
6863    size_t strsize = 13;
6864    napi_value resource_name;
6865    napi_threadsafe_function result = nullptr;
6866    jsData.id = CALL_JSCB_DATA;
6867    finalData.id = FINAL_CB_DATA;
6868    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
6869    napi_status threadresult = napi_create_threadsafe_function(env, nullptr, nullptr, resource_name,
6870        0, MAX_COUNT, &finalData, Threadfinalcb, &jsData, ThreadSafeCallJs, &result);
6871    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
6872    EXPECT_EQ(threadresult, napi_status::napi_ok);
6873    EXPECT_NE(result, nullptr);
6874    if (uv_thread_create(&g_uvThread, TsFuncDataSourceThread0200, result) != 0) {
6875        GTEST_LOG_(INFO) << "Failed to create uv thread!";
6876    }
6877    GetFinalizeStatus();
6878
6879    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0200 end";
6880}
6881
6882/*
6883 * @tc.number  : ACE_Napi_Create_Threadsafe_Function_0300
6884 * @tc.name    : Call napi_create_threadsafe_function when the number of initialization threads exceeds the maximum
6885 * @tc.desc    : 1.Declare each parameter correctly
6886 *               2.Call napi_create_threadsafe_function when the number of initialization threads
6887 *                  exceeds the maximum
6888 *               3.return napi_invalid_arg
6889 */
6890HWTEST_F(NativeEngineTest, ACE_Napi_Create_Threadsafe_Function_0300, testing::ext::TestSize.Level2)
6891{
6892    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0300 start";
6893
6894    napi_env env = (napi_env)engine_;
6895    size_t strsize = 13;
6896    napi_value resource_name;
6897    napi_threadsafe_function result = nullptr;
6898    jsData.id = CALL_JSCB_DATA;
6899    finalData.id = FINAL_CB_DATA;
6900    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
6901    napi_status threadresult = napi_create_threadsafe_function(env, nullptr, nullptr, resource_name, 0, OVER_MAX_COUNT,
6902        &finalData, Threadfinalcb, &jsData, ThreadSafeCallJs, &result);
6903    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
6904    EXPECT_EQ(threadresult, napi_status::napi_invalid_arg);
6905    EXPECT_EQ(result, nullptr);
6906
6907    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0300 end";
6908}
6909
6910/*
6911 * @tc.number  : ACE_Napi_Create_Threadsafe_Function_0400
6912 * @tc.name    : Call napi_create_threadsafe_function when JSCallback is nullptr
6913 * @tc.desc    : 1.Declare each parameter correctly
6914 *               2.Call napi_create_threadsafe_function when JSCallback is nullptr
6915 *               3.return napi_invalid_arg
6916 */
6917HWTEST_F(NativeEngineTest, ACE_Napi_Create_Threadsafe_Function_0400, testing::ext::TestSize.Level1)
6918{
6919    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0400 start";
6920
6921    napi_env env = (napi_env)engine_;
6922    size_t strsize = 13;
6923    napi_value resource_name;
6924    napi_threadsafe_function result = nullptr;
6925    jsData.id = CALL_JSCB_DATA;
6926    finalData.id = FINAL_CB_DATA;
6927    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
6928    napi_status threadresult = napi_create_threadsafe_function(
6929        env, nullptr, nullptr, resource_name, 0, 1, &finalData, Threadfinalcb, &jsData, nullptr, &result);
6930    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
6931    EXPECT_EQ(threadresult, napi_status::napi_invalid_arg);
6932    EXPECT_EQ(result, nullptr);
6933
6934    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0400 end";
6935}
6936
6937/*
6938 * @tc.number  : ACE_Napi_Create_Threadsafe_Function_0500
6939 * @tc.name    : Call napi_create_threadsafe_function when finalcallback is nullptr
6940 * @tc.desc    : 1.Declare each parameter correctly
6941 *               2.Call napi_create_threadsafe_function when finalcallback is nullptr
6942 *               3.Call uv_thread_create to create the thread
6943 *               4.Jscallback is triggered by napi_call_threadsafe_function
6944 *               5.Call napi_release_threadsafe_function to free the thread
6945 *               6.Trigger Threadfinalcb
6946 */
6947HWTEST_F(NativeEngineTest, ACE_Napi_Create_Threadsafe_Function_0500, testing::ext::TestSize.Level1)
6948{
6949    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0500 start";
6950
6951    napi_env env = (napi_env)engine_;
6952    size_t strsize = 13;
6953    napi_value resource_name;
6954    napi_threadsafe_function result = nullptr;
6955    jsData.id = CALL_JSCB_DATA;
6956    finalData.id = FINAL_CB_DATA;
6957    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
6958    napi_status threadresult = napi_create_threadsafe_function(
6959        env, nullptr, nullptr, resource_name, 0, 1, &finalData, nullptr, &jsData, ThreadSafeCallJs, &result);
6960    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
6961    EXPECT_EQ(threadresult, napi_status::napi_ok);
6962    EXPECT_NE(result, nullptr);
6963    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0500 end";
6964}
6965
6966/*
6967 * @tc.number  : ACE_Napi_Create_Threadsafe_Function_0600
6968 * @tc.name    : Call napi_create_threadsafe_function when JSCallback and finalcallback is nullptr
6969 * @tc.desc    : 1.Declare each parameter correctly
6970 *               2.Call napi_create_threadsafe_function when JSCallback and finalcallback is nullptr
6971 *               3.return napi_invalid_arg
6972 */
6973HWTEST_F(NativeEngineTest, ACE_Napi_Create_Threadsafe_Function_0600, testing::ext::TestSize.Level1)
6974{
6975    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0600 start";
6976
6977    napi_env env = (napi_env)engine_;
6978    size_t strsize = 13;
6979    napi_value resource_name;
6980    napi_threadsafe_function result = nullptr;
6981    jsData.id = CALL_JSCB_DATA;
6982    finalData.id = FINAL_CB_DATA;
6983    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
6984    napi_status threadresult = napi_create_threadsafe_function(
6985        env, nullptr, nullptr, resource_name, 0, 1, &finalData, nullptr, &jsData, nullptr, &result);
6986    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
6987    EXPECT_EQ(threadresult, napi_status::napi_invalid_arg);
6988    EXPECT_EQ(result, nullptr);
6989
6990    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0600 end";
6991}
6992
6993/*
6994 * @tc.number  : ACE_Napi_Create_Threadsafe_Function_0700
6995 * @tc.name    : Call napi_create_threadsafe_function when the number of initialization threads is 0
6996 * @tc.desc    : 1.Declare each parameter correctly
6997 *               2.Call napi_create_threadsafe_function when the number of initialization threads is 0
6998 *               3.return napi_invalid_arg
6999 */
7000HWTEST_F(NativeEngineTest, ACE_Napi_Create_Threadsafe_Function_0700, testing::ext::TestSize.Level2)
7001{
7002    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0700 start";
7003
7004    napi_env env = (napi_env)engine_;
7005    size_t strsize = 13;
7006    napi_value resource_name;
7007    napi_threadsafe_function result = nullptr;
7008    jsData.id = CALL_JSCB_DATA;
7009    finalData.id = FINAL_CB_DATA;
7010    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7011    napi_status threadresult = napi_create_threadsafe_function(
7012        env, nullptr, nullptr, resource_name, 0, 0, &finalData, Threadfinalcb, &jsData, ThreadSafeCallJs, &result);
7013    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
7014    EXPECT_EQ(threadresult, napi_status::napi_invalid_arg);
7015    EXPECT_EQ(result, nullptr);
7016
7017    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0700 end";
7018}
7019
7020/*
7021 * @tc.number  : ACE_Napi_Create_Threadsafe_Function_0800
7022 * @tc.name    : Call napi_create_threadsafe_function when the number of initialization threads is -1
7023 * @tc.desc    : 1.Declare each parameter correctly
7024 *               2.Call napi_create_threadsafe_function when the number of initialization threads is -1
7025 *               3.return napi_invalid_arg
7026 */
7027HWTEST_F(NativeEngineTest, ACE_Napi_Create_Threadsafe_Function_0800, testing::ext::TestSize.Level2)
7028{
7029    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0800 start";
7030
7031    napi_env env = (napi_env)engine_;
7032    size_t strsize = 13;
7033    napi_value resource_name;
7034    napi_threadsafe_function result = nullptr;
7035    jsData.id = CALL_JSCB_DATA;
7036    finalData.id = FINAL_CB_DATA;
7037    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7038    napi_status threadresult = napi_create_threadsafe_function(
7039        env, nullptr, nullptr, resource_name, 0, -1, &finalData, Threadfinalcb, &jsData, ThreadSafeCallJs, &result);
7040    EXPECT_EQ(threadresult, napi_status::napi_invalid_arg);
7041    EXPECT_EQ(result, nullptr);
7042
7043    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0800 end";
7044}
7045
7046/*
7047 * @tc.number  : ACE_Napi_Create_Threadsafe_Function_0900
7048 * @tc.name    : Call napi_create_threadsafe_function when the JS identifier name is empty
7049 * @tc.desc    : 1.Declare each parameter correctly
7050 *               2.Call napi_create_threadsafe_function when the JS identifier name is empty
7051 *               3.return napi_invalid_arg
7052 */
7053HWTEST_F(NativeEngineTest, ACE_Napi_Create_Threadsafe_Function_0900, testing::ext::TestSize.Level2)
7054{
7055    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0900 start";
7056
7057    napi_env env = (napi_env)engine_;
7058    napi_threadsafe_function result = nullptr;
7059    jsData.id = CALL_JSCB_DATA;
7060    finalData.id = FINAL_CB_DATA;
7061    napi_status threadresult = napi_create_threadsafe_function(
7062        env, nullptr, nullptr, nullptr, 0, 1, &finalData, Threadfinalcb, &jsData, ThreadSafeCallJs, &result);
7063    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
7064    EXPECT_EQ(threadresult, napi_status::napi_invalid_arg);
7065    EXPECT_EQ(result, nullptr);
7066
7067    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_0900 end";
7068}
7069
7070/*
7071 * @tc.number  : ACE_Napi_Create_Threadsafe_Function_1000
7072 * @tc.name    : Call napi_create_threadsafe_function when the output parameter result is empty
7073 * @tc.desc    : 1.Declare each parameter correctly
7074 *               2.Call napi_create_threadsafe_function when the output parameter result is empty
7075 *               3.return napi_invalid_arg
7076 */
7077HWTEST_F(NativeEngineTest, ACE_Napi_Create_Threadsafe_Function_1000, testing::ext::TestSize.Level2)
7078{
7079    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_1000 start";
7080
7081    napi_env env = (napi_env)engine_;
7082    size_t strsize = 13;
7083    napi_value resource_name;
7084    jsData.id = CALL_JSCB_DATA;
7085    finalData.id = FINAL_CB_DATA;
7086    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7087    napi_status threadresult = napi_create_threadsafe_function(
7088        env, nullptr, nullptr, resource_name, 0, 1, &finalData, Threadfinalcb, &jsData, ThreadSafeCallJs, nullptr);
7089    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
7090    EXPECT_EQ(threadresult, napi_status::napi_invalid_arg);
7091
7092    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_1000 end";
7093}
7094
7095/*
7096 * @tc.number  : ACE_Napi_Create_Threadsafe_Function_1100
7097 * @tc.name    : Call napi_create_threadsafe_function when the env environment variable is empty
7098 * @tc.desc    : 1.Declare each parameter correctly
7099 *               2.Call napi_create_threadsafe_function when the env environment variable is empty
7100 *               3.return napi_invalid_arg
7101 */
7102HWTEST_F(NativeEngineTest, ACE_Napi_Create_Threadsafe_Function_1100, testing::ext::TestSize.Level2)
7103{
7104    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_1100 start";
7105
7106    napi_env env = nullptr;
7107    size_t strsize = 13;
7108    napi_value resource_name;
7109    napi_threadsafe_function result = nullptr;
7110    jsData.id = CALL_JSCB_DATA;
7111    finalData.id = FINAL_CB_DATA;
7112    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7113    napi_status threadresult = napi_create_threadsafe_function(
7114        env, nullptr, nullptr, resource_name, 0, 1, &finalData, Threadfinalcb, &jsData, ThreadSafeCallJs, &result);
7115    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
7116    EXPECT_EQ(threadresult, napi_status::napi_invalid_arg);
7117    EXPECT_EQ(result, nullptr);
7118
7119    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Create_Threadsafe_Function_1100 end";
7120}
7121
7122/*
7123 * @tc.number  : ACE_Napi_Get_Threadsafe_Function_Context_0100
7124 * @tc.name    : Call napi_get_threadsafe_function_context to get the context value passed by creat
7125 * @tc.desc    : 1.Declare each parameter correctly
7126 *               2.Call napi_create_threadsafe_function and the value passed in context is number
7127 *               3.Call napi_get_threadsafe_function_context to get context
7128 *               4.Call napi_release_threadsafe_function to free the thread
7129 */
7130HWTEST_F(NativeEngineTest, ACE_Napi_Get_Threadsafe_Function_Context_0100, testing::ext::TestSize.Level1)
7131{
7132    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Threadsafe_Function_Context_0100 start";
7133
7134    napi_env env = (napi_env)engine_;
7135    size_t strsize = 13;
7136    napi_value resource_name;
7137    napi_threadsafe_function result = nullptr;
7138    void* contextresult = nullptr;
7139    jsData.id = CALL_JSCB_DATA;
7140    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7141    napi_status threadresult = napi_create_threadsafe_function(
7142        env, nullptr, nullptr, resource_name, 0, 1, nullptr, nullptr, &jsData, ThreadSafeCallJs, &result);
7143    EXPECT_EQ(threadresult, napi_status::napi_ok);
7144    napi_status getcontextresult = napi_get_threadsafe_function_context(result, &contextresult);
7145    EXPECT_EQ(getcontextresult, napi_status::napi_ok);
7146    CallJsCbData* cbdata = nullptr;
7147    cbdata = (CallJsCbData*)contextresult;
7148    EXPECT_EQ(cbdata->id, CALL_JSCB_DATA);
7149    napi_status releaseresult = napi_release_threadsafe_function(result, napi_tsfn_release);
7150    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
7151    EXPECT_EQ(releaseresult, napi_status::napi_ok);
7152    sleep(1);
7153
7154    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Threadsafe_Function_Context_0100 end";
7155}
7156
7157/*
7158 * @tc.number  : ACE_Napi_Get_Threadsafe_Function_Context_0200
7159 * @tc.name    : Call napi_get_threadsafe_function_context to get the context value passed by creat
7160 * @tc.desc    : 1.Declare each parameter correctly
7161 *               2.Call napi_create_threadsafe_function
7162 *               3.Call napi_get_threadsafe_function_context to get context when the contextresult is
7163 *                  nullptr
7164 *               4.return napi_invalid_arg 5.Call napi_release_threadsafe_function to free the thread
7165 */
7166HWTEST_F(NativeEngineTest, ACE_Napi_Get_Threadsafe_Function_Context_0200, testing::ext::TestSize.Level2)
7167{
7168    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Threadsafe_Function_Context_0200 start";
7169
7170    napi_env env = (napi_env)engine_;
7171    size_t strsize = 13;
7172    napi_value resource_name;
7173    napi_threadsafe_function result = nullptr;
7174    jsData.id = CALL_JSCB_DATA;
7175    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7176    napi_status threadresult = napi_create_threadsafe_function(
7177        env, nullptr, nullptr, resource_name, 0, 1, nullptr, nullptr, &jsData, ThreadSafeCallJs, &result);
7178    EXPECT_EQ(threadresult, napi_status::napi_ok);
7179    napi_status getcontextresult = napi_get_threadsafe_function_context(result, nullptr);
7180    EXPECT_EQ(getcontextresult, napi_status::napi_invalid_arg);
7181    napi_status releaseresult = napi_release_threadsafe_function(result, napi_tsfn_release);
7182    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
7183    EXPECT_EQ(releaseresult, napi_status::napi_ok);
7184    sleep(1);
7185
7186    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Threadsafe_Function_Context_0200 end";
7187}
7188
7189/*
7190 * @tc.number  : ACE_Napi_Get_Threadsafe_Function_Context_0300
7191 * @tc.name    : Call napi_get_threadsafe_function_context to get the context value passed by creat
7192 * @tc.desc    : 1.Declare each parameter correctly
7193 *               2.Call napi_create_threadsafe_function
7194 *               3.Call napi_get_threadsafe_function_context to get context when the result is nullptr
7195 *               4.return napi_invalid_arg
7196 *               5.Call napi_release_threadsafe_function to free the thread
7197 */
7198HWTEST_F(NativeEngineTest, ACE_Napi_Get_Threadsafe_Function_Context_0300, testing::ext::TestSize.Level2)
7199{
7200    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Threadsafe_Function_Context_0300 start";
7201
7202    napi_env env = (napi_env)engine_;
7203    size_t strsize = 13;
7204    napi_value resource_name;
7205    napi_threadsafe_function result = nullptr;
7206    void* contextresult = nullptr;
7207    jsData.id = CALL_JSCB_DATA;
7208    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7209    napi_status threadresult = napi_create_threadsafe_function(
7210        env, nullptr, nullptr, resource_name, 0, 1, nullptr, nullptr, &jsData, ThreadSafeCallJs, &result);
7211    EXPECT_EQ(threadresult, napi_status::napi_ok);
7212    napi_status getcontextresult = napi_get_threadsafe_function_context(nullptr, &contextresult);
7213    EXPECT_EQ(getcontextresult, napi_status::napi_invalid_arg);
7214    napi_status releaseresult = napi_release_threadsafe_function(result, napi_tsfn_release);
7215    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
7216    EXPECT_EQ(releaseresult, napi_status::napi_ok);
7217    sleep(1);
7218
7219    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Threadsafe_Function_Context_0300 end";
7220}
7221
7222/*
7223 * @tc.number  : ACE_Napi_Get_Threadsafe_Function_Context_0400
7224 * @tc.name    : Call napi_get_threadsafe_function_context to get the context value passed by creat
7225 * @tc.desc    : 1.Declare each parameter correctly
7226 *               2.Call napi_create_threadsafe_function and the value passed in context is a string
7227 *               3.Call napi_get_threadsafe_function_context to get context
7228 *               4.Call napi_release_threadsafe_function to free the thread
7229 */
7230HWTEST_F(NativeEngineTest, ACE_Napi_Get_Threadsafe_Function_Context_0400, testing::ext::TestSize.Level2)
7231{
7232    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Threadsafe_Function_Context_0400 start";
7233
7234    napi_env env = (napi_env)engine_;
7235    size_t strsize = 13;
7236    napi_value resource_name;
7237    napi_threadsafe_function result = nullptr;
7238    void* contextresult = nullptr;
7239    jsData_str.id = CALL_JSCB_DATA;
7240    if (strcpy_s(jsData_str.strdata, strlen("contextdata") + 1, "contextdata") != 0) {
7241        return;
7242    }
7243    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7244    napi_status threadresult = napi_create_threadsafe_function(
7245        env, nullptr, nullptr, resource_name, 0, 1, nullptr, nullptr, &jsData_str, ThreadSafeCallJs, &result);
7246    EXPECT_EQ(threadresult, napi_status::napi_ok);
7247    napi_status getcontextresult = napi_get_threadsafe_function_context(result, &contextresult);
7248    EXPECT_EQ(getcontextresult, napi_status::napi_ok);
7249    CallJsCbData_str* cbdata = nullptr;
7250    cbdata = (CallJsCbData_str*)contextresult;
7251    GTEST_LOG_(INFO) << "cbdata->id is " << cbdata->id;
7252    EXPECT_EQ(cbdata->id, CALL_JSCB_DATA);
7253    GTEST_LOG_(INFO) << "cbdata->strdata is " << cbdata->strdata;
7254    EXPECT_EQ(strcmp(cbdata->strdata, "contextdata"), 0);
7255    napi_status releaseresult = napi_release_threadsafe_function(result, napi_tsfn_release);
7256    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
7257    EXPECT_EQ(releaseresult, napi_status::napi_ok);
7258    sleep(1);
7259
7260    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Threadsafe_Function_Context_0400 end";
7261}
7262
7263/*
7264 * @tc.number  : ACE_Napi_Get_Threadsafe_Function_Context_0500
7265 * @tc.name    : Call napi_get_threadsafe_function_context to get the context value passed by creat
7266 * @tc.desc    : 1.Declare each parameter correctly
7267 *               2.Call napi_create_threadsafe_function and the value passed in context is a special
7268 *                  string
7269 *               3.Call napi_get_threadsafe_function_context to get context 4.Call napi_release_threadsafe_function to
7270 *                  free the thread
7271 */
7272HWTEST_F(NativeEngineTest, ACE_Napi_Get_Threadsafe_Function_Context_0500, testing::ext::TestSize.Level1)
7273{
7274    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Threadsafe_Function_Context_0500 start";
7275
7276    napi_env env = (napi_env)engine_;
7277    size_t strsize = 13;
7278    napi_value resource_name;
7279    napi_threadsafe_function result = nullptr;
7280    void* contextresult = nullptr;
7281    jsData_str.id = CALL_JSCB_DATA;
7282    if (strcpy_s(jsData_str.strdata, strlen("~!@#$%^&*( ") + 1, "~!@#$%^&*( ") != 0) {
7283        return;
7284    }
7285    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7286    napi_status threadresult = napi_create_threadsafe_function(
7287        env, nullptr, nullptr, resource_name, 0, 1, nullptr, nullptr, &jsData_str, ThreadSafeCallJs, &result);
7288    EXPECT_EQ(threadresult, napi_status::napi_ok);
7289    napi_status getcontextresult = napi_get_threadsafe_function_context(result, &contextresult);
7290    EXPECT_EQ(getcontextresult, napi_status::napi_ok);
7291    CallJsCbData_str* cbdata = nullptr;
7292    cbdata = (CallJsCbData_str*)contextresult;
7293    GTEST_LOG_(INFO) << "cbdata->id is " << cbdata->id;
7294    EXPECT_EQ(cbdata->id, CALL_JSCB_DATA);
7295    GTEST_LOG_(INFO) << "cbdata->strdata is " << cbdata->strdata;
7296    EXPECT_EQ(strcmp(cbdata->strdata, "~!@#$%^&*( "), 0);
7297    napi_status releaseresult = napi_release_threadsafe_function(result, napi_tsfn_release);
7298    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
7299    EXPECT_EQ(releaseresult, napi_status::napi_ok);
7300    sleep(1);
7301
7302    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Threadsafe_Function_Context_0500 end";
7303}
7304
7305/*
7306 * @tc.number  : ACE_Napi_Get_Threadsafe_Function_Context_0600
7307 * @tc.name    : Call napi_get_threadsafe_function_context to get the context value passed by creat
7308 * @tc.desc    : 1.Declare each parameter correctly
7309 *               2.Call napi_create_threadsafe_function and the value of the incoming context is a
7310 *                  Chinese character
7311 *               3.Call napi_get_threadsafe_function_context to get context 4.Call napi_release_threadsafe_function
7312 *                  to free the thread
7313 */
7314HWTEST_F(NativeEngineTest, ACE_Napi_Get_Threadsafe_Function_Context_0600, testing::ext::TestSize.Level1)
7315{
7316    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Threadsafe_Function_Context_0600 start";
7317
7318    napi_env env = (napi_env)engine_;
7319    size_t strsize = 13;
7320    napi_value resource_name;
7321    napi_threadsafe_function result = nullptr;
7322    void* contextresult = nullptr;
7323    jsData_str.id = CALL_JSCB_DATA;
7324    if (strcpy_s(jsData_str.strdata, strlen("大家好!!") + 1, "大家好!!") != 0) {
7325        return;
7326    }
7327    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7328    napi_status threadresult = napi_create_threadsafe_function(
7329        env, nullptr, nullptr, resource_name, 0, 1, nullptr, nullptr, &jsData_str, ThreadSafeCallJs, &result);
7330    EXPECT_EQ(threadresult, napi_status::napi_ok);
7331    napi_status getcontextresult = napi_get_threadsafe_function_context(result, &contextresult);
7332    EXPECT_EQ(getcontextresult, napi_status::napi_ok);
7333    CallJsCbData_str* cbdata = nullptr;
7334    cbdata = (CallJsCbData_str*)contextresult;
7335    GTEST_LOG_(INFO) << "cbdata->id is " << cbdata->id;
7336    EXPECT_EQ(cbdata->id, CALL_JSCB_DATA);
7337    GTEST_LOG_(INFO) << "cbdata->strdata is " << cbdata->strdata;
7338    EXPECT_EQ(strcmp(cbdata->strdata, "大家好!!"), 0);
7339    napi_status releaseresult = napi_release_threadsafe_function(result, napi_tsfn_release);
7340    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
7341    EXPECT_EQ(releaseresult, napi_status::napi_ok);
7342    sleep(1);
7343
7344    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Get_Threadsafe_Function_Context_0600 end";
7345}
7346
7347/*
7348 * @tc.number  : ACE_Napi_Acquire_Threadsafe_Function_0100
7349 * @tc.name    : Call napi_acquire_threadsafe_function after passing the parameters correctly
7350 * @tc.desc    : 1.Declare each parameter correctly
7351 *               2.Call napi_create_threadsafe_function
7352 *               3.Call napi_acquire_threadsafe_function
7353 *               4.Call twice  napi_release_threadsafe_function to free the thread
7354 */
7355HWTEST_F(NativeEngineTest, ACE_Napi_Acquire_Threadsafe_Function_0100, testing::ext::TestSize.Level1)
7356{
7357    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Acquire_Threadsafe_Function_0100 start";
7358
7359    napi_env env = (napi_env)engine_;
7360    size_t strsize = 13;
7361    napi_value resource_name;
7362    napi_threadsafe_function result = nullptr;
7363    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7364    napi_status threadresult = napi_create_threadsafe_function(
7365        env, nullptr, nullptr, resource_name, 0, 1, nullptr, nullptr, nullptr, ThreadSafeCallJs, &result);
7366    EXPECT_EQ(threadresult, napi_status::napi_ok);
7367    napi_status acquireresult = napi_acquire_threadsafe_function(result);
7368    GTEST_LOG_(INFO) << "acquireresult is " << acquireresult;
7369    EXPECT_EQ(acquireresult, napi_status::napi_ok);
7370    napi_status releaseresultone = napi_release_threadsafe_function(result, napi_tsfn_release);
7371    GTEST_LOG_(INFO) << "releaseresultone is " << releaseresultone;
7372    EXPECT_EQ(releaseresultone, napi_status::napi_ok);
7373    napi_status releaseresulttwo = napi_release_threadsafe_function(result, napi_tsfn_release);
7374    GTEST_LOG_(INFO) << "releaseresulttwo is " << releaseresulttwo;
7375    EXPECT_EQ(releaseresulttwo, napi_status::napi_ok);
7376    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
7377
7378    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Acquire_Threadsafe_Function_0100 end";
7379}
7380
7381/*
7382 * @tc.number  : ACE_Napi_Acquire_Threadsafe_Function_0200
7383 * @tc.name    : Call napi_acquire_threadsafe_function after passing parameter error
7384 * @tc.desc    : 1.Declare each parameter correctly
7385 *               2.Call napi_create_threadsafe_function
7386 *               3.Call napi_acquire_threadsafe_function after the result value is nullptr
7387 *               4.Call napi_release_threadsafe_function to free the thread
7388 */
7389HWTEST_F(NativeEngineTest, ACE_Napi_Acquire_Threadsafe_Function_0200, testing::ext::TestSize.Level2)
7390{
7391    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Acquire_Threadsafe_Function_0200 start";
7392
7393    napi_env env = (napi_env)engine_;
7394    size_t strsize = 13;
7395    napi_value resource_name;
7396    napi_threadsafe_function result = nullptr;
7397    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7398    napi_status threadresult = napi_create_threadsafe_function(
7399        env, nullptr, nullptr, resource_name, 0, 1, nullptr, nullptr, nullptr, ThreadSafeCallJs, &result);
7400    EXPECT_EQ(threadresult, napi_status::napi_ok);
7401    napi_status acquireresult = napi_acquire_threadsafe_function(nullptr);
7402    GTEST_LOG_(INFO) << "acquireresult is " << acquireresult;
7403    EXPECT_EQ(acquireresult, napi_status::napi_invalid_arg);
7404    napi_status releaseresultone = napi_release_threadsafe_function(result, napi_tsfn_release);
7405    GTEST_LOG_(INFO) << "releaseresult is " << releaseresultone;
7406    EXPECT_EQ(releaseresultone, napi_status::napi_ok);
7407    napi_status releaseresulttwo = napi_release_threadsafe_function(result, napi_tsfn_release);
7408    GTEST_LOG_(INFO) << "releaseresult is " << releaseresulttwo;
7409    EXPECT_EQ(releaseresulttwo, napi_status::napi_generic_failure);
7410    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
7411
7412    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Acquire_Threadsafe_Function_0200 end";
7413}
7414
7415/*
7416 * @tc.number  : ACE_Napi_Acquire_Threadsafe_Function_0300
7417 * @tc.name    : Call napi_acquire_threadsafe_function after passing the parameters correctly
7418 * @tc.desc    : 1.Declare each parameter correctly
7419 *               2.Call napi_create_threadsafe_function
7420 *               3.Call twice napi_acquire_threadsafe_function
7421 *               4.Call thrice napi_release_threadsafe_function to free the thread
7422 */
7423HWTEST_F(NativeEngineTest, ACE_Napi_Acquire_Threadsafe_Function_0300, testing::ext::TestSize.Level1)
7424{
7425    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Acquire_Threadsafe_Function_0300 start";
7426
7427    napi_env env = (napi_env)engine_;
7428    size_t strsize = 13;
7429    napi_value resource_name;
7430    napi_threadsafe_function result = nullptr;
7431    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7432    napi_status threadresult = napi_create_threadsafe_function(
7433        env, nullptr, nullptr, resource_name, 0, 1, nullptr, nullptr, nullptr, ThreadSafeCallJs, &result);
7434    EXPECT_EQ(threadresult, napi_status::napi_ok);
7435    napi_status acquireresultone = napi_acquire_threadsafe_function(result);
7436    GTEST_LOG_(INFO) << "acquireresult is " << acquireresultone;
7437    EXPECT_EQ(acquireresultone, napi_status::napi_ok);
7438    napi_status acquireresulttwo = napi_acquire_threadsafe_function(result);
7439    GTEST_LOG_(INFO) << "acquireresult is " << acquireresulttwo;
7440    EXPECT_EQ(acquireresulttwo, napi_status::napi_ok);
7441    napi_status releaseresultone = napi_release_threadsafe_function(result, napi_tsfn_release);
7442    GTEST_LOG_(INFO) << "releaseresultone is " << releaseresultone;
7443    EXPECT_EQ(releaseresultone, napi_status::napi_ok);
7444    napi_status releaseresulttwo = napi_release_threadsafe_function(result, napi_tsfn_release);
7445    GTEST_LOG_(INFO) << "releaseresulttwo is " << releaseresulttwo;
7446    EXPECT_EQ(releaseresulttwo, napi_status::napi_ok);
7447    napi_status releaseresultthree = napi_release_threadsafe_function(result, napi_tsfn_release);
7448    GTEST_LOG_(INFO) << "releaseresultthree is " << releaseresultthree;
7449    EXPECT_EQ(releaseresultthree, napi_status::napi_ok);
7450    GTEST_LOG_(INFO) << "napi_release_threadsafe_function finish!";
7451
7452    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Acquire_Threadsafe_Function_0300 end";
7453}
7454
7455/*
7456 * @tc.number  : ACE_Napi_Release_Threadsafe_Function_0100
7457 * @tc.name    : Call napi_release_threadsafe_function after passing the parameters correctly
7458 * @tc.desc    : 1.Declare each parameter correctly
7459 *               2.Call napi_create_threadsafe_function when the number of initial threads is one
7460 *               3.Call uv_thread_create to create thread
7461 *               4.Call napi_release_threadsafe_function
7462 */
7463HWTEST_F(NativeEngineTest, ACE_Napi_Release_Threadsafe_Function_0100, testing::ext::TestSize.Level1)
7464{
7465    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Release_Threadsafe_Function_0100 start";
7466
7467    napi_env env = (napi_env)engine_;
7468    size_t strsize = 13;
7469    napi_value resource_name;
7470    napi_threadsafe_function result = nullptr;
7471    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7472    napi_status threadresult = napi_create_threadsafe_function(
7473        env, nullptr, nullptr, resource_name, 0, 1, nullptr, nullptr, nullptr, ThreadSafeCallJs, &result);
7474    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
7475    EXPECT_EQ(threadresult, napi_status::napi_ok);
7476    EXPECT_NE(result, nullptr);
7477    if (uv_thread_create(&g_uvThread, TsFuncreleaseThread, result) != 0) {
7478        GTEST_LOG_(INFO) << "Failed to create uv thread!";
7479    }
7480    sleep(1);
7481
7482    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Release_Threadsafe_Function_0100 end";
7483}
7484
7485/*
7486 * @tc.number  : ACE_Napi_Release_Threadsafe_Function_0200
7487 * @tc.name    : Call napi_release_threadsafe_function after passing parameter error
7488 * @tc.desc    : 1.Declare each parameter correctly
7489 *               2.Call napi_create_threadsafe_function when the number of initial threads is one
7490 *               3.Call uv_thread_create to create thread
7491 *               4.Call napi_release_threadsafe_function when the incoming result is nullptr
7492 *               5.return napi_invalid_arg
7493 */
7494HWTEST_F(NativeEngineTest, ACE_Napi_Release_Threadsafe_Function_0200, testing::ext::TestSize.Level2)
7495{
7496    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Release_Threadsafe_Function_0200 start";
7497
7498    napi_env env = (napi_env)engine_;
7499    size_t strsize = 13;
7500    napi_value resource_name;
7501    napi_threadsafe_function result = nullptr;
7502    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7503    napi_status threadresult = napi_create_threadsafe_function(
7504        env, nullptr, nullptr, resource_name, 0, 1, nullptr, nullptr, nullptr, ThreadSafeCallJs, &result);
7505    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
7506    EXPECT_EQ(threadresult, napi_status::napi_ok);
7507    EXPECT_NE(result, nullptr);
7508    if (uv_thread_create(&g_uvThread, TsFuncErrReleaseThread, result) != 0) {
7509        GTEST_LOG_(INFO) << "Failed to create uv thread!";
7510    }
7511    sleep(1);
7512    napi_status releaselastresult = napi_release_threadsafe_function(result, napi_tsfn_release);
7513    GTEST_LOG_(INFO) << "releaseresultthree is " << releaselastresult;
7514    EXPECT_EQ(releaselastresult, napi_status::napi_ok);
7515
7516    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Release_Threadsafe_Function_0200 end";
7517}
7518
7519/*
7520 * @tc.number  : ACE_Napi_Release_Threadsafe_Function_0300
7521 * @tc.name    : Call napi_release_threadsafe_function after passing the parameters correctly
7522 * @tc.desc    : 1.Declare each parameter correctly
7523 *               2.Call napi_create_threadsafe_function when the number of initial threads is five
7524 *               3.Call uv_thread_create to create thread
7525 *               4.Call Five times napi_release_threadsafe_function
7526 */
7527HWTEST_F(NativeEngineTest, ACE_Napi_Release_Threadsafe_Function_0300, testing::ext::TestSize.Level1)
7528{
7529    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Release_Threadsafe_Function_0300 start";
7530
7531    napi_env env = (napi_env)engine_;
7532    size_t strsize = 13;
7533    napi_value resource_name;
7534    napi_threadsafe_function result = nullptr;
7535    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7536    napi_status threadresult = napi_create_threadsafe_function(
7537        env, nullptr, nullptr, resource_name, 0, 5, nullptr, nullptr, nullptr, ThreadSafeCallJs, &result);
7538    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
7539    EXPECT_EQ(threadresult, napi_status::napi_ok);
7540    EXPECT_NE(result, nullptr);
7541    if (uv_thread_create(&g_uvThread, TsFuncreleasefiveThread, result) != 0) {
7542        GTEST_LOG_(INFO) << "Failed to create uv thread!";
7543    }
7544    sleep(1);
7545
7546    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Release_Threadsafe_Function_0300 end";
7547}
7548
7549/*
7550 * @tc.number  : ACE_Napi_Release_Threadsafe_Function_0400
7551 * @tc.name    : Call napi_release_threadsafe_function after passing the parameters correctly
7552 * @tc.desc    : 1.Declare each parameter correctly
7553 *               2.Call napi_create_threadsafe_function when the number of initial threads is two
7554 *               3.Call uv_thread_create to create thread
7555 *               4.Call napi_release_threadsafe_function when the incoming mode is napi_tsfn_abort
7556 *               5.Call uv_thread_create to create thread return napi_closing
7557 */
7558HWTEST_F(NativeEngineTest, ACE_Napi_Release_Threadsafe_Function_0400, testing::ext::TestSize.Level1)
7559{
7560    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Release_Threadsafe_Function_0400 start";
7561
7562    napi_env env = (napi_env)engine_;
7563    g_callFinalizeEnd = false;
7564    size_t strsize = 13;
7565    napi_value resource_name;
7566    napi_threadsafe_function result = nullptr;
7567    jsData.id = CALL_JSCB_DATA;
7568    finalData.id = FINAL_CB_DATA;
7569    napi_create_string_utf8(env, "JSstringTest", strsize, &resource_name);
7570    napi_status threadresult = napi_create_threadsafe_function(
7571        env, nullptr, nullptr, resource_name, 0, 2, &finalData, Threadfinalcb, &jsData, ThreadSafeCallJs, &result);
7572    GTEST_LOG_(INFO) << "threadresult is " << threadresult;
7573    EXPECT_EQ(threadresult, napi_status::napi_ok);
7574    EXPECT_NE(result, nullptr);
7575    if (uv_thread_create(&g_uvThread, TsFuncabortThread, result) != 0) {
7576        GTEST_LOG_(INFO) << "Failed to create uv thread!";
7577    }
7578    GetFinalizeStatus();
7579
7580    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Release_Threadsafe_Function_0400 end";
7581}
7582
7583static void Cleanup(void* arg)
7584{
7585    GTEST_LOG_(INFO) << "Cleanup(void* arg) start";
7586
7587    HOOK_TAG += INT_ONE;
7588    if (arg != nullptr) {
7589        GTEST_LOG_(INFO) << "cleanup(" << *(int*)(arg) << ")";
7590    }
7591    GTEST_LOG_(INFO) << "Cleanup(void* arg) end";
7592}
7593
7594static void CleanupCopy(void* arg)
7595{
7596    GTEST_LOG_(INFO) << "CleanupCopy(void* arg) start";
7597
7598    HOOK_TAGCP += INT_ONE;
7599    if (arg != nullptr) {
7600        GTEST_LOG_(INFO) << "CleanupCopy(" << *(int*)(arg) << ")";
7601    }
7602    GTEST_LOG_(INFO) << "CleanupCopy(void* arg) end";
7603}
7604
7605/*
7606 * @tc.number    : ACE_Napi_Add_Env_Cleanup_Hook_0100
7607 * @tc.name      : Tests whether napi_add_env_cleanup_hook is called properly when the environment exits
7608 * @tc.desc      : 1.The environment engine is created
7609 *                 2.Set test variables
7610 *                 3.The function of napi_add_env_cleanup_hook is called
7611 *                 4.Return value of function is napi_ok
7612 *                 5.Call RunCleanup to trigger napi_add_env_cleanup_hook
7613 */
7614HWTEST_F(NativeEngineTest, ACE_Napi_Add_Env_Cleanup_Hook_0100, testing::ext::TestSize.Level1)
7615{
7616    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0100 start";
7617    napi_env env = (napi_env)engine_;
7618    HOOK_TAG = INT_ZERO;
7619    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7620    engine_->RunCleanup();
7621    EXPECT_EQ(HOOK_TAG, INT_ONE);
7622    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0100 end";
7623}
7624
7625/*
7626 * @tc.number    : ACE_Napi_Add_Env_Cleanup_Hook_0200
7627 * @tc.name      : Test napi_add_env_cleanup_hook if the arg parameter is null
7628 * @tc.desc      : 1.The environment engine is created
7629 *                 2.Set test variables
7630 *                 3.The function of napi_add_env_cleanup_hook is called
7631 *                 4.Return value of function is napi_ok
7632 *                 5.Call RunCleanup to trigger napi_add_env_cleanup_hook
7633 */
7634HWTEST_F(NativeEngineTest, ACE_Napi_Add_Env_Cleanup_Hook_0200, testing::ext::TestSize.Level2)
7635{
7636    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0200 start";
7637    napi_env env = (napi_env)engine_;
7638    napi_status ret = napi_invalid_arg;
7639    ret = napi_add_env_cleanup_hook(env, Cleanup, nullptr);
7640    engine_->RunCleanup();
7641    EXPECT_EQ(ret, napi_ok);
7642    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0200 end";
7643}
7644
7645/*
7646 * @tc.number    : ACE_Napi_Add_Env_Cleanup_Hook_0300
7647 * @tc.name      : Invalid registered function for napi_add_env_cleanup_hook test
7648 * @tc.desc      : 1.The environment engine is created
7649 *                 2.Set test variables
7650 *                 3.The function of napi_add_env_cleanup_hook is called
7651 *                 4.Return value of function is napi_invalid_arg
7652 */
7653HWTEST_F(NativeEngineTest, ACE_Napi_Add_Env_Cleanup_Hook_0300, testing::ext::TestSize.Level2)
7654{
7655    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0300 start";
7656    napi_env env = (napi_env)engine_;
7657    napi_status ret = napi_ok;
7658    ret = napi_add_env_cleanup_hook(env, nullptr, &HOOK_ARG_ONE);
7659
7660    EXPECT_EQ(ret, napi_invalid_arg);
7661    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0300 end";
7662}
7663
7664/*
7665 * @tc.number    : ACE_Napi_Add_Env_Cleanup_Hook_0400
7666 * @tc.name      : Test napi_add_env_cleanup_hook passing an invalid env
7667 * @tc.desc      : 1.The environment engine is created
7668 *                 2.Set test variables
7669 *                 3.The function of napi_add_env_cleanup_hook is called
7670 *                 4.Return value of function is napi_invalid_arg
7671 */
7672HWTEST_F(NativeEngineTest, ACE_Napi_Add_Env_Cleanup_Hook_0400, testing::ext::TestSize.Level2)
7673{
7674    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0400 start";
7675    napi_status ret = napi_ok;
7676    ret = napi_add_env_cleanup_hook(nullptr, Cleanup, &HOOK_ARG_ONE);
7677    engine_->RunCleanup();
7678    EXPECT_EQ(ret, napi_invalid_arg);
7679    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0400 end";
7680}
7681
7682/*
7683 * @tc.number    : ACE_Napi_Add_Env_Cleanup_Hook_0500
7684 * @tc.name      : Release after testing napi_add_env_cleanup_hook call, call again
7685 * @tc.desc      : 1.The environment engine is created
7686 *                 2.Set test variables
7687 *                 3.The function of napi_add_env_cleanup_hook is called
7688 *                 4.Return value of function is napi_ok
7689 *                 5.The function of napi_remove_env_cleanup_hook is called
7690 *                 6.Release napi_add_env_cleanup_hook
7691 *                 7.The function of napi_add_env_cleanup_hook is called
7692 *                 8.Return value of function is napi_ok
7693 */
7694HWTEST_F(NativeEngineTest, ACE_Napi_Add_Env_Cleanup_Hook_0500, testing::ext::TestSize.Level1)
7695{
7696    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0500 start";
7697    napi_env env = (napi_env)engine_;
7698    HOOK_TAG = INT_ZERO;
7699    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7700    ExpectCheckCall(napi_remove_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7701    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7702    engine_->RunCleanup();
7703    EXPECT_EQ(HOOK_TAG, INT_ONE);
7704    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0500 end";
7705}
7706
7707/*
7708 * @tc.number    : ACE_Napi_Add_Env_Cleanup_Hook_0600
7709 * @tc.name      : Test the normal operation of napi_add_env_cleanup_hook
7710 * @tc.desc      : 1.The environment engine is created
7711 *                 2.Set test variables
7712 *                 3.The function of napi_add_env_cleanup_hook is called
7713 *                 4.Return value of function is napi_ok
7714 *                 5.Then call the function of napi_add_env_cleanup_hook again
7715 */
7716HWTEST_F(NativeEngineTest, ACE_Napi_Add_Env_Cleanup_Hook_0600, testing::ext::TestSize.Level1)
7717{
7718    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0600 start";
7719    HOOK_TAG = INT_ZERO;
7720    napi_env env = (napi_env)engine_;
7721    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7722    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_TWO));
7723    engine_->RunCleanup();
7724    EXPECT_EQ(HOOK_TAG, INT_TWO);
7725    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0600 end";
7726}
7727
7728/*
7729 * @tc.number    : ACE_Napi_Add_Env_Cleanup_Hook_0700
7730 * @tc.name      : Test whether an exception is returned when the parameters of
7731 *                 napi_add_env_cleanup_hook are the same
7732 * @tc.desc      : 1.The environment engine is created
7733 *                 2.Set test variables
7734 *                 3.The function of napi_add_env_cleanup_hook is called
7735 *                 4.Return value of function is napi_ok
7736 */
7737HWTEST_F(NativeEngineTest, ACE_Napi_Add_Env_Cleanup_Hook_0700, testing::ext::TestSize.Level2)
7738{
7739    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0700 start";
7740    napi_env env = (napi_env)engine_;
7741    HOOK_TAG = INT_ZERO;
7742    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7743    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7744    engine_->RunCleanup();
7745    EXPECT_EQ(HOOK_TAG, INT_ONE);
7746    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0700 end";
7747}
7748
7749/*
7750 * @tc.number    : ACE_Napi_Add_Env_Cleanup_Hook_0800
7751 * @tc.name      : Test the normal operation of napi_add_env_cleanup_hook
7752 * @tc.desc      : 1.The environment engine is created
7753 *                 2.Set test variables
7754 *                 3.The function of napi_add_env_cleanup_hook is called
7755 *                 4.Return value of function is napi_ok
7756 */
7757HWTEST_F(NativeEngineTest, ACE_Napi_Add_Env_Cleanup_Hook_0800, testing::ext::TestSize.Level1)
7758{
7759    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0800 start";
7760    napi_env env = (napi_env)engine_;
7761    HOOK_TAG = INT_ZERO;
7762    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7763    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_TWO));
7764    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_THREE));
7765    engine_->RunCleanup();
7766    EXPECT_EQ(HOOK_TAG, INT_THREE);
7767    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Env_Cleanup_Hook_0800 end";
7768}
7769
7770/*
7771 * @tc.number    : ACE_Napi_Remove_Env_Cleanup_Hook_0100
7772 * @tc.name      : Test napi_remove_env_cleanup_hook Delete napi_add_env_cleanup_hook
7773 * @tc.desc      : 1.The environment engine is created
7774 *                 2.Set test variables
7775 *                 3.The function of napi_add_env_cleanup_hook is called
7776 *                 4.Return value of function is napi_ok
7777 *                 5.Call RunCleanup to trigger napi_add_env_cleanup_hook
7778 */
7779HWTEST_F(NativeEngineTest, ACE_Napi_Remove_Env_Cleanup_Hook_0100, testing::ext::TestSize.Level1)
7780{
7781    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Env_Cleanup_Hook_0100 start";
7782    napi_env env = (napi_env)engine_;
7783    HOOK_TAG = INT_ZERO;
7784    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7785    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_TWO));
7786    ExpectCheckCall(napi_remove_env_cleanup_hook(env, Cleanup, &HOOK_ARG_TWO));
7787    engine_->RunCleanup();
7788    EXPECT_EQ(HOOK_TAG, INT_ONE);
7789    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Env_Cleanup_Hook_0100 end";
7790}
7791
7792/*
7793 * @tc.number    : ACE_Napi_Remove_Env_Cleanup_Hook_0200
7794 * @tc.name      : Test napi_remove_env_cleanup_hook  the arg parameter is null
7795 * @tc.desc      : 1.The environment engine is created
7796 *                 2.Set test variables
7797 *                 3.The function of napi_remove_env_cleanup_hook is called
7798 *                 4.Return value of function is napi_invalid_arg
7799 */
7800HWTEST_F(NativeEngineTest, ACE_Napi_Remove_Env_Cleanup_Hook_0200, testing::ext::TestSize.Level2)
7801{
7802    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Env_Cleanup_Hook_0200 start";
7803    napi_env env = (napi_env)engine_;
7804    HOOK_TAG = INT_ZERO;
7805    napi_status ret = napi_invalid_arg;
7806    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7807    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_TWO));
7808    ret = napi_remove_env_cleanup_hook(env, Cleanup, nullptr);
7809    engine_->RunCleanup();
7810    EXPECT_EQ(HOOK_TAG, INT_TWO);
7811    EXPECT_EQ(ret, napi_ok);
7812    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Env_Cleanup_Hook_0200 end";
7813}
7814
7815/*
7816 * @tc.number    : ACE_Napi_Remove_Env_Cleanup_Hook_0300
7817 * @tc.name      : Test Invalid registered function for napi_remove_env_cleanup_hook
7818 * @tc.desc      : 1.The environment engine is created
7819 *                 2.Set test variables
7820 *                 3.The function of napi_remove_env_cleanup_hook is called
7821 *                 4.Return value of function is napi_invalid_arg
7822 */
7823HWTEST_F(NativeEngineTest, ACE_Napi_Remove_Env_Cleanup_Hook_0300, testing::ext::TestSize.Level2)
7824{
7825    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Env_Cleanup_Hook_0300 start";
7826    napi_env env = (napi_env)engine_;
7827    HOOK_TAG = INT_ZERO;
7828    napi_status ret = napi_ok;
7829    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7830    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_TWO));
7831    ret = napi_remove_env_cleanup_hook(env, nullptr, &HOOK_ARG_TWO);
7832    engine_->RunCleanup();
7833    EXPECT_EQ(HOOK_TAG, INT_TWO);
7834    EXPECT_EQ(ret, napi_invalid_arg);
7835    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Env_Cleanup_Hook_0300 end";
7836}
7837
7838/*
7839 * @tc.number    : ACE_Napi_Remove_Env_Cleanup_Hook_0400
7840 * @tc.name      : Test napi_remove_env_cleanup_hook passing an invalid env
7841 * @tc.desc      : 1.The environment engine is created
7842 *                 2.Set test variables
7843 *                 3.The function of napi_remove_env_cleanup_hook is called
7844 *                 4.Return value of function is napi_invalid_arg
7845 */
7846HWTEST_F(NativeEngineTest, ACE_Napi_Remove_Env_Cleanup_Hook_0400, testing::ext::TestSize.Level2)
7847{
7848    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Env_Cleanup_Hook_0400 start";
7849    napi_env env = (napi_env)engine_;
7850    HOOK_TAG = INT_ZERO;
7851    napi_status ret = napi_ok;
7852    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7853    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_TWO));
7854    ret = napi_remove_env_cleanup_hook(nullptr, Cleanup, &HOOK_ARG_TWO);
7855    engine_->RunCleanup();
7856    EXPECT_EQ(HOOK_TAG, INT_TWO);
7857    EXPECT_EQ(ret, napi_invalid_arg);
7858    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Env_Cleanup_Hook_0400 end";
7859}
7860
7861/*
7862 * @tc.number    : ACE_Napi_Remove_Env_Cleanup_Hook_0500
7863 * @tc.name      : Test napi_remove_env_cleanup_hook Delete
7864 *                 napi_add_env_cleanup_hook abnormal parameter transmission
7865 * @tc.desc      : 1.The environment engine is created
7866 *                 2.Set test variables
7867 *                 3.The function of napi_add_env_cleanup_hook is called
7868 *                 4.Return value of function is napi_ok
7869 *                 5.Call RunCleanup to trigger napi_add_env_cleanup_hook
7870 */
7871HWTEST_F(NativeEngineTest, ACE_Napi_Remove_Env_Cleanup_Hook_0500, testing::ext::TestSize.Level2)
7872{
7873    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Env_Cleanup_Hook_0500 start";
7874    napi_env env = (napi_env)engine_;
7875    HOOK_TAG = INT_ZERO;
7876    HOOK_TAGCP = INT_ZERO;
7877    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7878    ExpectCheckCall(napi_add_env_cleanup_hook(env, CleanupCopy, &HOOK_ARG_TWO));
7879    ExpectCheckCall(napi_remove_env_cleanup_hook(env, Cleanup, &HOOK_ARG_TWO));
7880    ExpectCheckCall(napi_remove_env_cleanup_hook(env, CleanupCopy, &HOOK_ARG_ONE));
7881    engine_->RunCleanup();
7882    EXPECT_EQ(HOOK_TAG, INT_ONE);
7883    EXPECT_EQ(HOOK_TAGCP, INT_ONE);
7884    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Env_Cleanup_Hook_0500 end";
7885}
7886
7887/*
7888 * @tc.number    : ACE_Napi_Remove_Env_Cleanup_Hook_0600
7889 * @tc.name      : Test napi_remove_env_cleanup_hook Delete napi_add_env_cleanup_hook
7890 * @tc.desc      : 1.The environment engine is created
7891 *                 2.Set test variables
7892 *                 3.The function of napi_add_env_cleanup_hook is called
7893 *                 4.Return value of function is napi_ok
7894 *                 5.Call RunCleanup to trigger napi_add_env_cleanup_hook
7895 */
7896HWTEST_F(NativeEngineTest, ACE_Napi_Remove_Env_Cleanup_Hook_0600, testing::ext::TestSize.Level1)
7897{
7898    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Env_Cleanup_Hook_0600 start";
7899    napi_env env = (napi_env)engine_;
7900    HOOK_TAG = INT_ZERO;
7901    HOOK_TAGCP = INT_ZERO;
7902    ExpectCheckCall(napi_add_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7903    ExpectCheckCall(napi_add_env_cleanup_hook(env, CleanupCopy, &HOOK_ARG_TWO));
7904    ExpectCheckCall(napi_remove_env_cleanup_hook(env, Cleanup, &HOOK_ARG_ONE));
7905    ExpectCheckCall(napi_remove_env_cleanup_hook(env, CleanupCopy, &HOOK_ARG_TWO));
7906    engine_->RunCleanup();
7907    EXPECT_EQ(HOOK_TAG, INT_ZERO);
7908    EXPECT_EQ(HOOK_TAGCP, INT_ZERO);
7909    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Env_Cleanup_Hook_0600 end";
7910}
7911
7912static void MustNotCall(napi_async_cleanup_hook_handle hook, void* arg)
7913{
7914    EXPECT_EQ(1, 0);
7915}
7916
7917struct AsyncData {
7918    uv_async_t async;
7919    napi_env env;
7920    napi_async_cleanup_hook_handle handle;
7921};
7922
7923static struct AsyncData* CreateAsyncData()
7924{
7925    GTEST_LOG_(INFO) << "CreateAsyncData";
7926    struct AsyncData* data = (struct AsyncData*)malloc(sizeof(struct AsyncData));
7927    if (data == nullptr) {
7928        return nullptr;
7929    }
7930    data->handle = nullptr;
7931    return data;
7932}
7933
7934static void AfterCleanupHookTwo(uv_handle_t* handle)
7935{
7936    GTEST_LOG_(INFO) << "AfterCleanupHookTwo start";
7937    struct AsyncData* data = (struct AsyncData*)handle->data;
7938    ExpectCheckCall(napi_remove_async_cleanup_hook(data->handle));
7939    HOOK_TAG += INT_ONE;
7940    free(data);
7941    GTEST_LOG_(INFO) << "AfterCleanupHookTwo end";
7942}
7943
7944static void AfterCleanupHookOne(uv_async_t* async)
7945{
7946    GTEST_LOG_(INFO) << "AfterCleanupHookOne start";
7947    uv_close((uv_handle_t*)async, AfterCleanupHookTwo);
7948    GTEST_LOG_(INFO) << "AfterCleanupHookOne end";
7949}
7950
7951static void AsyncCleanupHook(napi_async_cleanup_hook_handle handle, void* arg)
7952{
7953    GTEST_LOG_(INFO) << "AsyncCleanupHook start";
7954    struct AsyncData* data = (struct AsyncData*)arg;
7955    uv_loop_t* loop;
7956    ExpectCheckCall(napi_get_uv_event_loop(data->env, &loop));
7957    int err = uv_async_init(loop, &data->async, AfterCleanupHookOne);
7958    EXPECT_EQ(err, 0);
7959
7960    data->async.data = data;
7961    data->handle = handle;
7962    uv_async_send(&data->async);
7963    GTEST_LOG_(INFO) << "AsyncCleanupHook end";
7964    sleep(1);
7965}
7966
7967/*
7968 * @tc.number    : ACE_Napi_Add_Async_Cleanup_Hook_0100
7969 * @tc.name      : Test napi_add_async_cleanup_hook to pass the normal environment
7970 * @tc.desc      : 1.The environment engine is created
7971 *                 2.Set test variables
7972 *                 3.The function of napi_add_async_cleanup_hook is called
7973 *                 4.Return value of function is napi_ok
7974 *                 5.Call the incoming function normally after the environment exits
7975 */
7976HWTEST_F(NativeEngineTest, ACE_Napi_Add_Async_Cleanup_Hook_0100, testing::ext::TestSize.Level1)
7977{
7978    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0100 start";
7979
7980    napi_env env = (napi_env)engine_;
7981    struct AsyncData* data = CreateAsyncData();
7982    if (data == nullptr) {
7983        return;
7984    }
7985    HOOK_TAG = INT_ZERO;
7986    data->env = env;
7987    napi_status ret = napi_add_async_cleanup_hook(env, AsyncCleanupHook, data, &data->handle);
7988    engine_->RunCleanup();
7989    EXPECT_EQ(ret, napi_ok);
7990    EXPECT_EQ(HOOK_TAG, INT_ONE);
7991    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0100 end";
7992    sleep(1);
7993}
7994
7995/*
7996 * @tc.number    : ACE_Napi_Add_Async_Cleanup_Hook_0200
7997 * @tc.name      : Test napi_remove_env_cleanup_hook passing an invalid remove_handle
7998 * @tc.desc      : 1.The environment engine is created
7999 *                 2.Set test variables
8000 *                 3.The function of napi_add_async_cleanup_hook is called
8001 *                 4.Return value of function is napi_ok
8002 *                 5.Call the incoming function normally after the environment exits
8003 */
8004HWTEST_F(NativeEngineTest, ACE_Napi_Add_Async_Cleanup_Hook_0200, testing::ext::TestSize.Level1)
8005{
8006    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0200 start";
8007
8008    napi_env env = (napi_env)engine_;
8009    struct AsyncData* data = CreateAsyncData();
8010    if (data == nullptr) {
8011        return;
8012    }
8013    HOOK_TAG = INT_ZERO;
8014    data->env = env;
8015    napi_status ret = napi_add_async_cleanup_hook(env, AsyncCleanupHook, data, nullptr);
8016    engine_->RunCleanup();
8017    EXPECT_EQ(HOOK_TAG, INT_ONE);
8018    EXPECT_EQ(ret, napi_ok);
8019    sleep(1);
8020    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0200 end";
8021}
8022
8023/*
8024 * @tc.number    : ACE_Napi_Add_Async_Cleanup_Hook_0300
8025 * @tc.name      : Test napi_add_async_cleanup_hook passing an invalid arg
8026 * @tc.desc      : 1.The environment engine is created
8027 *                 2.Set test variables
8028 *                 3.The function of napi_add_async_cleanup_hook is called
8029 *                 4.Return value of function is napi_ok
8030 *                 5.Call the incoming function normally after the environment exits
8031 *                 6.The function of napi_remove_async_cleanup_hook is called
8032 *                 7.Return value of function is napi_ok
8033 */
8034HWTEST_F(NativeEngineTest, ACE_Napi_Add_Async_Cleanup_Hook_0300, testing::ext::TestSize.Level2)
8035{
8036    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0300 start";
8037
8038    napi_env env = (napi_env)engine_;
8039    napi_async_cleanup_hook_handle must_not_call_handle;
8040    HOOK_TAG = INT_ZERO;
8041    ExpectCheckCall(napi_add_async_cleanup_hook(env, MustNotCall, nullptr, &must_not_call_handle));
8042    ExpectCheckCall(napi_remove_async_cleanup_hook(must_not_call_handle));
8043    engine_->RunCleanup();
8044    EXPECT_EQ(HOOK_TAG, INT_ZERO);
8045    sleep(1);
8046    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0300 start";
8047}
8048
8049/*
8050 * @tc.number    : ACE_Napi_Add_Async_Cleanup_Hook_0400
8051 * @tc.name      : Test napi_add_async_cleanup_hook passing an invalid env
8052 * @tc.desc      : 1.The environment engine is created
8053 *                 2.Set test variables
8054 *                 3.The function of napi_add_async_cleanup_hook is called
8055 *                 4.Return value of function is napi_invalid_arg
8056 */
8057HWTEST_F(NativeEngineTest, ACE_Napi_Add_Async_Cleanup_Hook_0400, testing::ext::TestSize.Level2)
8058{
8059    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0400 start";
8060
8061    napi_status ret = napi_ok;
8062    napi_async_cleanup_hook_handle must_not_call_handle;
8063    HOOK_TAG = INT_ZERO;
8064    ret = napi_add_async_cleanup_hook(nullptr, MustNotCall, nullptr, &must_not_call_handle);
8065    engine_->RunCleanup();
8066    EXPECT_EQ(ret, napi_invalid_arg);
8067    sleep(1);
8068    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0400 start";
8069}
8070
8071/*
8072 * @tc.number    : ACE_Napi_Add_Async_Cleanup_Hook_0500
8073 * @tc.name      : Test napi_add_async_cleanup_hook passing an invalid hook
8074 * @tc.desc      : 1.The environment engine is created
8075 *                 2.Set test variables
8076 *                 3.The function of napi_add_async_cleanup_hook is called
8077 *                 4.Return value of function is napi_invalid_arg
8078 */
8079HWTEST_F(NativeEngineTest, ACE_Napi_Add_Async_Cleanup_Hook_0500, testing::ext::TestSize.Level2)
8080{
8081    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0500 start";
8082
8083    napi_env env = (napi_env)engine_;
8084    napi_status ret = napi_ok;
8085    napi_async_cleanup_hook_handle must_not_call_handle;
8086    ret = napi_add_async_cleanup_hook(env, nullptr, nullptr, &must_not_call_handle);
8087    engine_->RunCleanup();
8088    EXPECT_EQ(ret, napi_invalid_arg);
8089    sleep(1);
8090    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0500 start";
8091}
8092
8093/*
8094 * @tc.number    : ACE_Napi_Add_Async_Cleanup_Hook_0600
8095 * @tc.name      : Test napi_add_async_cleanup_hook, after registering the function,
8096 *                 call remove to delete the registered function, and then re-register the function.
8097 * @tc.desc      : 1.The environment engine is created
8098 *                 2.Set test variables
8099 *                 3.The function of napi_add_async_cleanup_hook is called
8100 *                 4.Return value of function is napi_ok
8101 *                 5.Call the incoming function normally after the environment exits
8102 */
8103HWTEST_F(NativeEngineTest, ACE_Napi_Add_Async_Cleanup_Hook_0600, testing::ext::TestSize.Level1)
8104{
8105    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0600 start";
8106
8107    napi_env env = (napi_env)engine_;
8108    struct AsyncData* data = CreateAsyncData();
8109    if (data == nullptr) {
8110        return;
8111    }
8112    data->env = env;
8113    HOOK_TAG = INT_ZERO;
8114    napi_status ret = napi_invalid_arg;
8115    ret = napi_add_async_cleanup_hook(env, AsyncCleanupHook, data, &data->handle);
8116    ASSERT_EQ(ret, napi_ok);
8117    ret = napi_remove_async_cleanup_hook(data->handle);
8118    ASSERT_EQ(ret, napi_ok);
8119    ret = napi_add_async_cleanup_hook(env, AsyncCleanupHook, data, &data->handle);
8120    ASSERT_EQ(ret, napi_ok);
8121    engine_->RunCleanup();
8122    EXPECT_EQ(HOOK_TAG, INT_ONE);
8123    EXPECT_EQ(ret, napi_ok);
8124    sleep(1);
8125    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0600 end";
8126}
8127
8128/*
8129 * @tc.number    : ACE_Napi_Add_Async_Cleanup_Hook_0700
8130 * @tc.name      : Test napi_add_async_cleanup_hook to pass the normal environment
8131 * @tc.desc      : 1.The environment engine is created
8132 *                 2.Set test variables
8133 *                 3.The function of napi_add_async_cleanup_hook is called
8134 *                 4.Return value of function is napi_ok
8135 *                 5.Call the incoming function normally after the environment exits
8136 */
8137HWTEST_F(NativeEngineTest, ACE_Napi_Add_Async_Cleanup_Hook_0700, testing::ext::TestSize.Level1)
8138{
8139    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0700 start";
8140
8141    napi_env env = (napi_env)engine_;
8142    napi_env envtwo = (napi_env)engine_;
8143    HOOK_TAG = INT_ZERO;
8144    struct AsyncData* data = CreateAsyncData();
8145    if (data == nullptr) {
8146        return;
8147    }
8148    data->env = env;
8149    napi_status ret = napi_invalid_arg;
8150    ret = napi_add_async_cleanup_hook(env, AsyncCleanupHook, data, &data->handle);
8151    EXPECT_EQ(ret, napi_ok);
8152    struct AsyncData* datatwo = CreateAsyncData();
8153    if (datatwo == nullptr) {
8154        return;
8155    }
8156    datatwo->env = envtwo;
8157    ret = napi_add_async_cleanup_hook(env, AsyncCleanupHook, datatwo, &datatwo->handle);
8158    EXPECT_EQ(ret, napi_ok);
8159    engine_->RunCleanup();
8160    EXPECT_EQ(HOOK_TAG, INT_TWO);
8161    sleep(1);
8162    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0700 end";
8163}
8164
8165/*
8166 * @tc.number    : ACE_Napi_Add_Async_Cleanup_Hook_0800
8167 * @tc.name      : Test napi_add_async_cleanup_hook to pass the normal environment
8168 * @tc.desc      : 1.The environment engine is created
8169 *                 2.Set test variables
8170 *                 3.The function of napi_add_async_cleanup_hook is called
8171 *                 4.Return value of function is napi_ok
8172 *                 5.Call the incoming function normally after the environment exits
8173 */
8174HWTEST_F(NativeEngineTest, ACE_Napi_Add_Async_Cleanup_Hook_0800, testing::ext::TestSize.Level1)
8175{
8176    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0800 start";
8177
8178    napi_env env = (napi_env)engine_;
8179    napi_env envtwo = (napi_env)engine_;
8180    napi_env envthree = (napi_env)engine_;
8181    struct AsyncData* data = CreateAsyncData();
8182    if (data == nullptr) {
8183        return;
8184    }
8185    HOOK_TAG = INT_ZERO;
8186    data->env = env;
8187    napi_status ret = napi_invalid_arg;
8188    ret = napi_add_async_cleanup_hook(env, AsyncCleanupHook, data, &data->handle);
8189    EXPECT_EQ(ret, napi_ok);
8190
8191    struct AsyncData* datatwo = CreateAsyncData();
8192    if (datatwo == nullptr) {
8193        return;
8194    }
8195    datatwo->env = envtwo;
8196    ret = napi_add_async_cleanup_hook(env, AsyncCleanupHook, datatwo, &datatwo->handle);
8197    EXPECT_EQ(ret, napi_ok);
8198
8199    struct AsyncData* datathree = CreateAsyncData();
8200    if (datathree == nullptr) {
8201        return;
8202    }
8203    datathree->env = envthree;
8204    ret = napi_add_async_cleanup_hook(env, AsyncCleanupHook, datathree, &datathree->handle);
8205    EXPECT_EQ(ret, napi_ok);
8206    engine_->RunCleanup();
8207    EXPECT_EQ(HOOK_TAG, INT_THREE);
8208    sleep(2);
8209    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Add_Async_Cleanup_Hook_0800 end";
8210}
8211
8212/*
8213 * @tc.number    : ACE_Napi_Remove_Async_Cleanup_Hook_0100
8214 * @tc.name      : Test the normal call of napi_remove_async_cleanup_hook
8215 * @tc.desc      : 1.The environment engine is created
8216 *                 2.Set test variables
8217 *                 3.The function of napi_add_async_cleanup_hook is called
8218 *                 4.Return value of function is napi_ok
8219 *                 5.The function of napi_remove_async_cleanup_hook is called
8220 *                 6.Return value of function is napi_ok
8221 */
8222HWTEST_F(NativeEngineTest, ACE_Napi_Remove_Async_Cleanup_Hook_0100, testing::ext::TestSize.Level1)
8223{
8224    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Async_Cleanup_Hook_0100 start";
8225
8226    napi_env env = (napi_env)engine_;
8227    struct AsyncData* data = CreateAsyncData();
8228    if (data == nullptr) {
8229        return;
8230    }
8231    napi_status ret = napi_invalid_arg;
8232    HOOK_TAG = INT_ZERO;
8233    data->env = env;
8234    ret = napi_add_async_cleanup_hook(env, AsyncCleanupHook, data, &data->handle);
8235    EXPECT_EQ(ret, napi_ok);
8236    ret = napi_remove_async_cleanup_hook(data->handle);
8237    EXPECT_EQ(ret, napi_ok);
8238    engine_->RunCleanup();
8239    EXPECT_EQ(HOOK_TAG, INT_ZERO);
8240    sleep(1);
8241    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Async_Cleanup_Hook_0100 end";
8242}
8243
8244/*
8245 * @tc.number    : ACE_Napi_Remove_Async_Cleanup_Hook_0200
8246 * @tc.name      : Test napi_remove_async_cleanup_hook passing an invalid remove_handle
8247 * @tc.desc      : 1.The environment engine is created
8248 *                 2.Set test variables
8249 *                 3.The function of napi_remove_async_cleanup_hook is called
8250 *                 4.Return value of function is napi_invalid_arg
8251 */
8252HWTEST_F(NativeEngineTest, ACE_Napi_Remove_Async_Cleanup_Hook_0200, testing::ext::TestSize.Level2)
8253{
8254    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Async_Cleanup_Hook_0200 start";
8255
8256    napi_status ret = napi_ok;
8257    ret = napi_remove_async_cleanup_hook(nullptr);
8258    EXPECT_EQ(ret, napi_invalid_arg);
8259
8260    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Async_Cleanup_Hook_0200 end";
8261}
8262
8263/*
8264 * @tc.number    : ACE_Napi_Remove_Async_Cleanup_Hook_0300
8265 * @tc.name      : Test that napi_add_async_cleanup_hook is registered twice,
8266 *                 release one of them, and the other is triggered normally
8267 * @tc.desc      : 1.The environment engine is created
8268 *                 2.Set test variables
8269 *                 3.The function of napi_add_async_cleanup_hook is called
8270 *                 4.Return value of function is napi_ok
8271 *                 5.The function of napi_remove_async_cleanup_hook is called
8272 *                 6.Return value of function is napi_ok
8273 */
8274HWTEST_F(NativeEngineTest, ACE_Napi_Remove_Async_Cleanup_Hook_0300, testing::ext::TestSize.Level2)
8275{
8276    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Async_Cleanup_Hook_0300 start";
8277
8278    napi_env env = (napi_env)engine_;
8279    napi_env envtwo = (napi_env)engine_;
8280    struct AsyncData* data = CreateAsyncData();
8281    if (data == nullptr) {
8282        return;
8283    }
8284    napi_status ret = napi_invalid_arg;
8285    data->env = env;
8286    ret = napi_add_async_cleanup_hook(env, AsyncCleanupHook, data, nullptr);
8287    EXPECT_EQ(ret, napi_ok);
8288    struct AsyncData* datatwo = CreateAsyncData();
8289    if (datatwo == nullptr) {
8290        return;
8291    }
8292    datatwo->env = envtwo;
8293    ret = napi_add_async_cleanup_hook(env, AsyncCleanupHook, datatwo, &datatwo->handle);
8294    EXPECT_EQ(ret, napi_ok);
8295    ret = napi_remove_async_cleanup_hook(datatwo->handle);
8296    EXPECT_EQ(ret, napi_ok);
8297    engine_->RunCleanup();
8298    sleep(1);
8299    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Remove_Async_Cleanup_Hook_0300 end";
8300}
8301
8302/*
8303 * @tc.number    : ACE_Napi_Async_Init_0100
8304 * @tc.name      : The parameter is valid, the parameter async_resource input the defined date,
8305 *                 the parameter async_resource_name input string, the parameter result input result.
8306 * @tc.desc      : 1.Valid environment variable env
8307 *                 2.parameter async_resource input defined date
8308 *                 3.parameter async_resource_name input string
8309 *                 4.parameter result input result
8310 */
8311HWTEST_F(NativeEngineTest, ACE_Napi_Async_Init_0100, testing::ext::TestSize.Level1)
8312{
8313    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Init_0100 start";
8314
8315    napi_env env = (napi_env)engine_;
8316    napi_value asyncResource = nullptr;
8317    double time = 2731123.12;
8318    napi_value asyncResourceName = nullptr;
8319    napi_async_context result = nullptr;
8320
8321    napi_status status = napi_create_date(env, time, &asyncResource);
8322    EXPECT_EQ(status, napi_ok);
8323
8324    status = napi_create_string_utf8(env, "ACE_Napi_Async_Init_0100", NAPI_AUTO_LENGTH, &asyncResourceName);
8325    EXPECT_EQ(status, napi_ok);
8326
8327    napi_status ret = napi_async_init(env, asyncResource, asyncResourceName, &result);
8328
8329    EXPECT_EQ(ret, napi_ok);
8330    EXPECT_NE(result, nullptr);
8331
8332    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Init_0100 end";
8333}
8334
8335/*
8336 * @tc.number    : ACE_Napi_Async_Init_0200
8337 * @tc.name      : The parameter is valid, the parameter async_resource is empty,
8338 *                 the parameter async_resource_name is string,
8339 *                 and the parameter result is result.
8340 * @tc.desc      : 1.Valid environment variable env.
8341 *                 2.the parameter async_resource is empty.
8342 *                 3.the parameter async_resource_name is string.
8343 *                 4.the parameter result is result.
8344 */
8345HWTEST_F(NativeEngineTest, ACE_Napi_Async_Init_0200, testing::ext::TestSize.Level1)
8346{
8347    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Init_0200 start";
8348
8349    napi_env env = (napi_env)engine_;
8350    napi_value asyncResource = nullptr;
8351    napi_value asyncResourceName = nullptr;
8352    napi_async_context result = nullptr;
8353
8354    napi_status status = napi_create_string_utf8(env, "ACE_Napi_Async_Init_0200", NAPI_AUTO_LENGTH, &asyncResourceName);
8355    EXPECT_EQ(status, napi_ok);
8356
8357    napi_status ret = napi_async_init(env, asyncResource, asyncResourceName, &result);
8358    EXPECT_EQ(ret, napi_ok);
8359
8360    EXPECT_NE(result, nullptr);
8361
8362    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Init_0200 end";
8363}
8364
8365/*
8366 * @tc.number    : ACE_Napi_Async_Init_0300
8367 * @tc.name      : The parameter is invalid, env is empty, the parameter async_resource enters the defined date,
8368 *                 the parameter async_resource_name enters string, and the parameter result enters result.
8369 * @tc.desc      : 1.Invalid environment variable env.
8370 *                 2.parameter async_resource input defined date.
8371 *                 3.parameter async_resource_name input string.
8372 *                 4.parameter result input result.
8373 */
8374HWTEST_F(NativeEngineTest, ACE_Napi_Async_Init_0300, testing::ext::TestSize.Level2)
8375{
8376    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Init_0300 start";
8377
8378    napi_env env = (napi_env)engine_;
8379    napi_value asyncResource = nullptr;
8380    double time = 2731123.12;
8381    napi_value asyncResourceName = nullptr;
8382    napi_async_context result = nullptr;
8383
8384    napi_status status = napi_create_date(env, time, &asyncResource);
8385    EXPECT_EQ(status, napi_ok);
8386
8387    status = napi_create_string_utf8(env, "ACE_Napi_Async_Init_0300", NAPI_AUTO_LENGTH, &asyncResourceName);
8388    EXPECT_EQ(status, napi_ok);
8389
8390    napi_status ret = napi_async_init(nullptr, asyncResource, asyncResourceName, &result);
8391    EXPECT_EQ(ret, napi_invalid_arg);
8392
8393    EXPECT_EQ(result, nullptr);
8394
8395    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Init_0300 end";
8396}
8397
8398/*
8399 * @tc.number    : ACE_Napi_Async_Init_0400
8400 * @tc.name      : The parameter is invalid, the parameter async_resource enters the defined date,
8401 *                 the parameter async_resource_name enters empty,
8402 *                 the parameter result enters result.
8403 * @tc.desc      : 1.Valid environment variable env.
8404 *                 2.the parameter async_resource enters the defined date.
8405 *                 3.the parameter async_resource_name enters empty.
8406 *                 4.the parameter result enters result.
8407 */
8408HWTEST_F(NativeEngineTest, ACE_Napi_Async_Init_0400, testing::ext::TestSize.Level2)
8409{
8410    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Init_0400 start";
8411
8412    napi_env env = (napi_env)engine_;
8413    napi_value asyncResource = nullptr;
8414    double time = 2731123.12;
8415    napi_async_context result = nullptr;
8416
8417    napi_status status = napi_create_date(env, time, &asyncResource);
8418    EXPECT_EQ(status, napi_ok);
8419
8420    napi_status ret = napi_async_init(env, asyncResource, nullptr, &result);
8421    EXPECT_EQ(ret, napi_invalid_arg);
8422    EXPECT_EQ(result, nullptr);
8423
8424    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Init_0400 end";
8425}
8426
8427/*
8428 * @tc.number    : ACE_Napi_Async_Init_0500
8429 * @tc.name      : The parameter is invalid, the parameter async_resource input the defined date,
8430 *                 the parameter async_resource_name input string,the parameter result input is empty.
8431 * @tc.desc      : 1.Valid environment variable env.
8432 *                 2.the parameter async_resource enters the defined date.
8433 *                 3.the parameter async_resource_name input string.
8434 *                 4.the parameter result input is empty.
8435 */
8436HWTEST_F(NativeEngineTest, ACE_Napi_Async_Init_0500, testing::ext::TestSize.Level2)
8437{
8438    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Init_0500 start";
8439
8440    napi_env env = (napi_env)engine_;
8441    napi_value asyncResource = nullptr;
8442    double time = 2731123.12;
8443    napi_value asyncResourceName = nullptr;
8444
8445    napi_status status = napi_create_date(env, time, &asyncResource);
8446    EXPECT_EQ(status, napi_ok);
8447
8448    status = napi_create_string_utf8(env, "ACE_Napi_Async_Init_0500", NAPI_AUTO_LENGTH, &asyncResourceName);
8449    EXPECT_EQ(status, napi_ok);
8450
8451    napi_status ret = napi_async_init(env, asyncResource, asyncResourceName, nullptr);
8452    EXPECT_EQ(ret, napi_invalid_arg);
8453
8454    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Init_0500 end";
8455}
8456
8457/*
8458 * @tc.number    : ACE_Napi_Async_Destroy_0100
8459 * @tc.name      : The parameter is valid, and the parameter async_context enters the initialized object.
8460 * @tc.desc      : 1.Valid environment variable env.
8461 *                 2.parameter async_context input initialized object.
8462 */
8463HWTEST_F(NativeEngineTest, ACE_Napi_Async_Destroy_0100, testing::ext::TestSize.Level1)
8464{
8465    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Destroy_0100 start";
8466
8467    napi_env env = (napi_env)engine_;
8468    void* arrayBufferPtr = nullptr;
8469    napi_value arrayBuffer = nullptr;
8470    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
8471    napi_value asyncResourceName = nullptr;
8472    napi_async_context result = nullptr;
8473
8474    napi_status status = napi_create_string_utf8(env, "ACE_Napi_Async_Destroy_0100",
8475        NAPI_AUTO_LENGTH, &asyncResourceName);
8476    EXPECT_EQ(status, napi_ok);
8477
8478    napi_status verification = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
8479
8480    EXPECT_EQ(verification, napi_ok);
8481
8482    napi_status ret = napi_async_init(env, arrayBuffer, asyncResourceName, &result);
8483
8484    EXPECT_EQ(ret, napi_ok);
8485    EXPECT_NE(result, nullptr);
8486
8487    napi_status out = napi_async_destroy(env, result);
8488    EXPECT_EQ(out, napi_ok);
8489
8490    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Destroy_0100 end";
8491}
8492
8493/*
8494 * @tc.number    : ACE_Napi_Async_Destroy_0200
8495 * @tc.name      : The parameter is invalid, the parameter async_context input is empty.
8496 * @tc.desc      : 1.Valid environment variable env.
8497 *                 2.parameter async_context input is empty.
8498 */
8499HWTEST_F(NativeEngineTest, ACE_Napi_Async_Destroy_0200, testing::ext::TestSize.Level2)
8500{
8501    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Destroy_0200 start";
8502
8503    napi_env env = (napi_env)engine_;
8504    napi_async_context result = nullptr;
8505
8506    napi_status out = napi_async_destroy(env, result);
8507    EXPECT_EQ(out, napi_invalid_arg);
8508
8509    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Destroy_0200 end";
8510}
8511
8512/*
8513 * @tc.number    : ACE_Napi_Async_Destroy_0300
8514 * @tc.name      : The parameter is invalid, the parameter async_context input is empty.
8515 * @tc.desc      : 1.Invalid environment variable env.
8516 *                 2.parameter async_context input initialized object.
8517 */
8518HWTEST_F(NativeEngineTest, ACE_Napi_Async_Destroy_0300, testing::ext::TestSize.Level2)
8519{
8520    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Destroy_0300 start";
8521
8522    napi_env env = (napi_env)engine_;
8523    void* arrayBufferPtr = nullptr;
8524    napi_value arrayBuffer = nullptr;
8525    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
8526    napi_value asyncResourceName = nullptr;
8527    napi_async_context result = nullptr;
8528
8529    napi_status status = napi_create_string_utf8(env, "ACE_Napi_Async_Destroy_0300",
8530        NAPI_AUTO_LENGTH, &asyncResourceName);
8531    EXPECT_EQ(status, napi_ok);
8532
8533    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Destroy_0300 napi_create_string_utf8 successful";
8534
8535    napi_status verification = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
8536
8537    EXPECT_EQ(verification, napi_ok);
8538    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Destroy_0300 napi_create_arraybuffer successful";
8539
8540    napi_status ret = napi_async_init(env, arrayBuffer, asyncResourceName, &result);
8541    EXPECT_EQ(ret, napi_ok);
8542    EXPECT_NE(result, nullptr);
8543    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Destroy_0300 napi_async_init successful";
8544
8545    napi_status out = napi_async_destroy(nullptr, result);
8546
8547    EXPECT_EQ(out, napi_invalid_arg);
8548    EXPECT_NE(result, nullptr);
8549
8550    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Destroy_0300 end";
8551}
8552
8553/*
8554 * @tc.number    : ACE_Napi_Async_Destroy_0400
8555 * @tc.name      : The parameter is valid, env is empty, and the parameter async_context input is empty
8556 * @tc.desc      : 1.Invalid environment variable env
8557 *                 2.parameter async_context input is empty
8558 */
8559HWTEST_F(NativeEngineTest, ACE_Napi_Async_Destroy_0400, testing::ext::TestSize.Level2)
8560{
8561    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Destroy_0400 start";
8562
8563    napi_async_context result = nullptr;
8564
8565    napi_status out = napi_async_destroy(nullptr, result);
8566    EXPECT_EQ(out, napi_invalid_arg);
8567
8568    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Async_Destroy_0400 end";
8569}
8570
8571/*
8572 * @tc.number    : ACE_Napi_Open_callback_Scope_0100
8573 * @tc.name      : The parameter is valid, the resource_object object enters a valid arrayBuffer object,
8574 *                 the parameter context enters a valid parameter connext,
8575 *                 the parameter result enters a valid parameter, and the test is confirmed
8576 * @tc.desc      : 1.Valid environment variable env.
8577 *                 2.resource_object object input valid arrayBuffer object.
8578 *                 3.parameter context input valid parameter connext.
8579 *                 4.parameter result input valid parameter.
8580 */
8581HWTEST_F(NativeEngineTest, ACE_Napi_Open_callback_Scope_0100, testing::ext::TestSize.Level1)
8582{
8583    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Open_callback_Scope_0100 start";
8584
8585    napi_env env = (napi_env)engine_;
8586    void* arrayBufferPtr = nullptr;
8587    napi_value arrayBuffer = nullptr;
8588    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
8589    napi_async_context connext = nullptr;
8590    napi_value asyncResourceName = nullptr;
8591    napi_callback_scope result = nullptr;
8592
8593    napi_status status = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
8594    EXPECT_EQ(status, napi_ok);
8595
8596    status = napi_create_string_utf8(env, "ACE_Napi_Open_callback_Scope_0100", NAPI_AUTO_LENGTH, &asyncResourceName);
8597    EXPECT_EQ(status, napi_ok);
8598
8599    napi_status ret = napi_async_init(env, arrayBuffer, asyncResourceName, &connext);
8600    EXPECT_EQ(ret, napi_ok);
8601
8602    napi_status out = napi_open_callback_scope(env, arrayBuffer, connext, &result);
8603    EXPECT_EQ(out, napi_ok);
8604    EXPECT_NE(result, nullptr);
8605
8606    status = napi_async_destroy(env, connext);
8607    EXPECT_EQ(status, napi_ok);
8608
8609    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Open_callback_Scope_0100 end";
8610}
8611
8612/*
8613 * @tc.number    : ACE_Napi_Open_callback_Scope_0200
8614 * @tc.name      : The parameter is invalid, the resource_object object is input a valid arrayBuffer object,
8615 *                 the parameter context is input the valid parameter connext,
8616 *                 the parameter result is empty, and the test is confirmed.
8617 * @tc.desc      : 1.Valid environment variable env.
8618 *                 2.the resource_object object is input a valid arrayBuffer object.
8619 *                 3.parameter context input valid parameter connext.
8620 *                 4.parameter result input valid parameter.
8621 */
8622HWTEST_F(NativeEngineTest, ACE_Napi_Open_callback_Scope_0200, testing::ext::TestSize.Level2)
8623{
8624    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Open_callback_Scope_0200 start";
8625
8626    napi_env env = (napi_env)engine_;
8627    void* arrayBufferPtr = nullptr;
8628    napi_value arrayBuffer = nullptr;
8629    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
8630    napi_async_context connext = nullptr;
8631    napi_value asyncResourceName = nullptr;
8632
8633    napi_status status = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
8634    EXPECT_EQ(status, napi_ok);
8635
8636    status = napi_create_string_utf8(env, "ACE_Napi_Open_callback_Scope_0200", NAPI_AUTO_LENGTH, &asyncResourceName);
8637    EXPECT_EQ(status, napi_ok);
8638
8639    napi_status ret = napi_async_init(env, arrayBuffer, asyncResourceName, &connext);
8640    EXPECT_EQ(ret, napi_ok);
8641
8642    napi_status out = napi_open_callback_scope(env, arrayBuffer, connext, nullptr);
8643    EXPECT_EQ(out, napi_invalid_arg);
8644
8645    status = napi_async_destroy(env, connext);
8646    EXPECT_EQ(status, napi_ok);
8647
8648    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Open_callback_Scope_0200 end";
8649}
8650
8651/*
8652 * @tc.number    : ACE_Napi_Open_callback_Scope_0300
8653 * @tc.name      : The parameter is invalid,  the resource_object object enters a valid arrayBuffer object,
8654 *                 the parameter context enters a valid parameter connext,
8655 *                 the parameter result enters a valid parameter, and the test is confirmed.
8656 * @tc.desc      : 1.Invalid environment variable env.
8657 *                 2.resource_object object input valid arrayBuffer object.
8658 *                 3.parameter context input valid parameter connext.
8659 *                 4.parameter result input valid parameter.
8660 */
8661HWTEST_F(NativeEngineTest, ACE_Napi_Open_callback_Scope_0300, testing::ext::TestSize.Level2)
8662{
8663    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Open_callback_Scope_0300 start";
8664
8665    napi_env env = (napi_env)engine_;
8666    void* arrayBufferPtr = nullptr;
8667    napi_value arrayBuffer = nullptr;
8668    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
8669    napi_async_context connext = nullptr;
8670    napi_value asyncResourceName = nullptr;
8671    napi_callback_scope result = nullptr;
8672
8673    napi_status status = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
8674    EXPECT_EQ(status, napi_ok);
8675
8676    status = napi_create_string_utf8(env, "ACE_Napi_Open_callback_Scope_0300", NAPI_AUTO_LENGTH, &asyncResourceName);
8677    EXPECT_EQ(status, napi_ok);
8678
8679    napi_status ret = napi_async_init(env, arrayBuffer, asyncResourceName, &connext);
8680
8681    EXPECT_EQ(ret, napi_ok);
8682
8683    napi_status out = napi_open_callback_scope(nullptr, arrayBuffer, connext, &result);
8684    EXPECT_EQ(out, napi_invalid_arg);
8685    EXPECT_EQ(result, nullptr);
8686
8687    status = napi_async_destroy(env, connext);
8688    EXPECT_EQ(status, napi_ok);
8689
8690    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Open_callback_Scope_0300 end";
8691}
8692
8693/*
8694 * @tc.number    : ACE_Napi_Open_callback_Scope_0400
8695 * @tc.name      : The parameter is invalid, the resource_object object input is empty,
8696 *                 the parameter context input valid parameter connext,
8697 *                 the parameter result input valid parameter, and the test is confirmed.
8698 * @tc.desc      : 1.Valid environment variable env.
8699 *                 2.the resource_object object input is empty.
8700 *                 3.parameter context input valid parameter connext.
8701 *                 4.parameter result input valid parameter.
8702 */
8703HWTEST_F(NativeEngineTest, ACE_Napi_Open_callback_Scope_0400, testing::ext::TestSize.Level1)
8704{
8705    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Open_callback_Scope_0400 start";
8706
8707    napi_env env = (napi_env)engine_;
8708    void* arrayBufferPtr = nullptr;
8709    napi_value arrayBuffer = nullptr;
8710    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
8711    napi_async_context connext = nullptr;
8712    napi_value asyncResourceName = nullptr;
8713    napi_callback_scope result = nullptr;
8714
8715    napi_status status = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
8716    EXPECT_EQ(status, napi_ok);
8717
8718    status = napi_create_string_utf8(env, "ACE_Napi_Open_callback_Scope_0400", NAPI_AUTO_LENGTH, &asyncResourceName);
8719    EXPECT_EQ(status, napi_ok);
8720
8721    napi_status ret = napi_async_init(env, arrayBuffer, asyncResourceName, &connext);
8722    EXPECT_EQ(ret, napi_ok);
8723
8724    napi_status out = napi_open_callback_scope(env, nullptr, connext, &result);
8725    EXPECT_EQ(out, napi_ok);
8726    EXPECT_NE(result, nullptr);
8727
8728    status = napi_async_destroy(env, connext);
8729    EXPECT_EQ(status, napi_ok);
8730
8731    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Open_callback_Scope_0400 end";
8732}
8733
8734/*
8735 * @tc.number    : ACE_Napi_Open_callback_Scope_0500
8736 * @tc.name      : The parameter is invalid, the resource_object object is input a valid arrayBuffer object,
8737 *                 the parameter context is empty, and the parameter result is a valid parameter,
8738 *                 and the test is confirmed.
8739 * @tc.desc      : 1.Valid environment variable env.
8740 *                 2.resource_object object input valid arrayBuffer object.
8741 *                 3.the parameter result is a valid parameter.
8742 *                 4.parameter result input valid parameter.
8743 */
8744HWTEST_F(NativeEngineTest, ACE_Napi_Open_callback_Scope_0500, testing::ext::TestSize.Level1)
8745{
8746    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Open_callback_Scope_0500 start";
8747
8748    napi_env env = (napi_env)engine_;
8749    void* arrayBufferPtr = nullptr;
8750    napi_value arrayBuffer = nullptr;
8751    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
8752    napi_async_context connext = nullptr;
8753    napi_value asyncResourceName = nullptr;
8754    napi_callback_scope result = nullptr;
8755
8756    napi_status status = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
8757    EXPECT_EQ(status, napi_ok);
8758
8759    status = napi_create_string_utf8(env, "ACE_Napi_Open_callback_Scope_0500", NAPI_AUTO_LENGTH, &asyncResourceName);
8760    EXPECT_EQ(status, napi_ok);
8761
8762    napi_status ret = napi_async_init(env, arrayBuffer, asyncResourceName, &connext);
8763    EXPECT_EQ(ret, napi_ok);
8764
8765    napi_status out = napi_open_callback_scope(env, arrayBuffer, nullptr, &result);
8766    EXPECT_EQ(out, napi_ok);
8767    EXPECT_NE(result, nullptr);
8768
8769    status = napi_async_destroy(env, connext);
8770    EXPECT_EQ(status, napi_ok);
8771
8772    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Open_callback_Scope_0500 end";
8773}
8774
8775/*
8776 * @tc.number    : ACE_Napi_Close_callback_Scope_0100
8777 * @tc.name      : The parameter is valid, and the scope object enters the newly created associated scope.
8778 * @tc.desc      : 1.Valid environment variable env.
8779 *                 2.scope object enters the newly created associated scope.
8780 */
8781HWTEST_F(NativeEngineTest, ACE_Napi_Close_callback_Scope_0100, testing::ext::TestSize.Level1)
8782{
8783    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Close_callback_Scope_0100 start";
8784
8785    napi_env env = (napi_env)engine_;
8786    void* arrayBufferPtr = nullptr;
8787    napi_value arrayBuffer = nullptr;
8788    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
8789    napi_async_context connext = nullptr;
8790    napi_value asyncResourceName = nullptr;
8791    napi_callback_scope result = nullptr;
8792
8793    napi_status status = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
8794    EXPECT_EQ(status, napi_ok);
8795
8796    status = napi_create_string_utf8(env, "ACE_Napi_Close_callback_Scope_0100", NAPI_AUTO_LENGTH, &asyncResourceName);
8797    EXPECT_EQ(status, napi_ok);
8798
8799    napi_status ret = napi_async_init(env, arrayBuffer, asyncResourceName, &connext);
8800    EXPECT_EQ(ret, napi_ok);
8801
8802    napi_status out = napi_open_callback_scope(env, arrayBuffer, connext, &result);
8803    EXPECT_EQ(out, napi_ok);
8804    EXPECT_NE(result, nullptr);
8805
8806    napi_status output = napi_close_callback_scope(env, result);
8807    EXPECT_EQ(output, napi_ok);
8808
8809    status = napi_async_destroy(env, connext);
8810    EXPECT_EQ(status, napi_ok);
8811
8812    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Close_callback_Scope_0100 end";
8813}
8814
8815/*
8816 * @tc.number    : ACE_Napi_Close_callback_Scope_0200
8817 * @tc.name      : The parameter is invalid, the scope object input is empty.
8818 * @tc.desc      : 1.Valid environment variable env.
8819 *                 2.scope object input is empty.
8820 */
8821HWTEST_F(NativeEngineTest, ACE_Napi_Close_callback_Scope_0200, testing::ext::TestSize.Level2)
8822{
8823    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Close_callback_Scope_0200 start";
8824
8825    napi_env env = (napi_env)engine_;
8826
8827    napi_callback_scope result = nullptr;
8828
8829    napi_status output = napi_close_callback_scope(env, result);
8830    EXPECT_EQ(output, napi_invalid_arg);
8831
8832    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Close_callback_Scope_0200 end";
8833}
8834
8835/*
8836 * @tc.number    : ACE_Napi_Close_callback_Scope_0300
8837 * @tc.name      : The parameter is invalid, env is empty, and the scope object enters the newly created associated
8838 *                  scope.
8839 * @tc.desc      : 1.Invalid environment variable env.
8840 *                 2.scope object enters the newly created associated scope.
8841 */
8842HWTEST_F(NativeEngineTest, ACE_Napi_Close_callback_Scope_0300, testing::ext::TestSize.Level2)
8843{
8844    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Close_callback_Scope_0300 start";
8845
8846    napi_env env = (napi_env)engine_;
8847    void* arrayBufferPtr = nullptr;
8848    napi_value arrayBuffer = nullptr;
8849    size_t arrayBufferSize = ARRAYBUFFER_SIZE;
8850    napi_async_context connext = nullptr;
8851    napi_value asyncResourceName = nullptr;
8852    napi_callback_scope result = nullptr;
8853
8854    napi_status status = napi_create_arraybuffer(env, arrayBufferSize, &arrayBufferPtr, &arrayBuffer);
8855    EXPECT_EQ(status, napi_ok);
8856
8857    status = napi_create_string_utf8(env, "ACE_Napi_Close_callback_Scope_0300", NAPI_AUTO_LENGTH, &asyncResourceName);
8858    EXPECT_EQ(status, napi_ok);
8859
8860    napi_status ret = napi_async_init(env, arrayBuffer, asyncResourceName, &connext);
8861
8862    EXPECT_EQ(ret, napi_ok);
8863
8864    napi_status out = napi_open_callback_scope(env, arrayBuffer, connext, &result);
8865    EXPECT_EQ(out, napi_ok);
8866    EXPECT_NE(result, nullptr);
8867
8868    napi_status output = napi_close_callback_scope(nullptr, result);
8869    EXPECT_EQ(output, napi_invalid_arg);
8870
8871    status = napi_async_destroy(env, connext);
8872    EXPECT_EQ(status, napi_ok);
8873
8874    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Close_callback_Scope_0300 end";
8875}
8876
8877/*
8878 * @tc.number    : ACE_Napi_Close_callback_Scope_0400
8879 * @tc.name      : The parameter is invalid, env is empty, scope object input is empty.
8880 * @tc.desc      : 1.Invalid environment variable env
8881 *                 2.scope object input is empty
8882 */
8883HWTEST_F(NativeEngineTest, ACE_Napi_Close_callback_Scope_0400, testing::ext::TestSize.Level2)
8884{
8885    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Close_callback_Scope_0400 start";
8886
8887    napi_status output = napi_close_callback_scope(nullptr, nullptr);
8888    EXPECT_EQ(output, napi_invalid_arg);
8889
8890    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Close_callback_Scope_0400 end";
8891}
8892
8893/*
8894 * @tc.number    : ACE_Napi_Fatal_Exception_0700
8895 * @tc.name      : napi_fatal_exception is passed to the JS uncaughtException error message is invalid nullptr,
8896 *                 triggering uncaughtException exception failure.
8897 * @tc.desc      : 1.The environment engine is created.
8898 *                 2.Set test variables.
8899 *                 3.The function of napi_fatal_exception is called.
8900 *                 4.Return value of function is napi_invalid_arg.
8901 */
8902HWTEST_F(NativeEngineTest, ACE_Napi_Fatal_Exception_0700, testing::ext::TestSize.Level2)
8903{
8904    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Fatal_Exception_0700 start";
8905
8906    napi_env env = (napi_env)engine_;
8907
8908    napi_status output = napi_fatal_exception(env, nullptr);
8909
8910    EXPECT_EQ(output, napi_invalid_arg);
8911
8912    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Fatal_Exception_0700 end";
8913}
8914
8915/*
8916 * @tc.number    : ACE_Napi_Fatal_Exception_0800
8917 * @tc.name      : The environment parameter of napi_fatal_exception nullptr,
8918 *                 triggering uncaughtException failed.
8919 * @tc.desc      : 1.The environment engine is created
8920 *                 2.Set test variables.
8921 *                 3.The function of napi_fatal_exception is called.
8922 *                 4.Return value of function is napi_invalid_arg.
8923 */
8924HWTEST_F(NativeEngineTest, ACE_Napi_Fatal_Exception_0800, testing::ext::TestSize.Level2)
8925{
8926    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Fatal_Exception_0800 start";
8927
8928    napi_env env = (napi_env)engine_;
8929
8930    napi_value err = nullptr;
8931    size_t sizeLen = sizeof("uncaughtException");
8932    napi_status verification = napi_create_string_utf8(env, "uncaughtException", sizeLen, &err);
8933
8934    EXPECT_EQ(verification, napi_ok);
8935    napi_status output = napi_fatal_exception(nullptr, err);
8936
8937    EXPECT_EQ(output, napi_invalid_arg);
8938
8939    GTEST_LOG_(INFO) << "NativeEngineTest ACE_Napi_Fatal_Exception_0800 end";
8940}
8941
8942/*
8943 * @tc.number    : ACE_Napi_Ref_Threadsafe_Function_0100
8944 * @tc.name      : napi_create_threadsafe_function creates a queue and
8945 *                 test napi_call_threadsafe_function none blocking mode with the queue full.
8946 * @tc.desc      :1.The environment engine is created.
8947 *                2.napi_create_threadsafe_function creates a queue
8948 *                3.Call napi_ref_threadsafe_function to set ref flag
8949 *                4.Call uv_has_ref to check if ref flag hasbeen set.
8950 */
8951HWTEST_F(NativeEngineTest, ACE_Napi_Ref_Threadsafe_Function_0100, testing::ext::TestSize.Level1)
8952{
8953    GTEST_LOG_(INFO) << "ACE_Napi_Ref_Threadsafe_Function_0100 called start";
8954    napi_env env = (napi_env)engine_;
8955    napi_threadsafe_function tsFunc = nullptr;
8956    napi_value resourceName = 0;
8957
8958    napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
8959    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
8960    g_finalData.id = FINAL_CB_DATA_TEST_ID;
8961    g_bIsFinish = false;
8962
8963    auto status = napi_create_threadsafe_function(env, nullptr, nullptr, resourceName,
8964        0, 1, &g_finalData, FinalCallBack, &g_jsData, CallJSSlowCallBack, &tsFunc);
8965    EXPECT_EQ(status, napi_ok);
8966
8967    status = napi_ref_threadsafe_function(env, tsFunc);
8968    EXPECT_EQ(status, napi_ok);
8969
8970    auto safeAsyncWork = reinterpret_cast<NativeSafeAsyncWork*>(tsFunc);
8971
8972    auto ret = uv_has_ref(reinterpret_cast<uv_handle_t*>(&(safeAsyncWork->asyncHandler_)));
8973    EXPECT_EQ(ret, 1);
8974
8975    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
8976    EXPECT_EQ(status, napi_ok);
8977    WaitForFinish();
8978
8979    GTEST_LOG_(INFO) << "ACE_Napi_Ref_Threadsafe_Function_0100 called end";
8980}
8981
8982/*
8983 * @tc.number    : ACE_Napi_Ref_Threadsafe_Function_0200
8984 * @tc.name      : napi_create_threadsafe_function creates a queue and
8985 *                 test napi_call_threadsafe_function none blocking mode with the queue full.
8986 * @tc.desc      :1.The environment engine is created.
8987 *                2.napi_create_threadsafe_function creates a queue
8988 *                3.Call napi_ref_threadsafe_function with invalid param
8989 *                4.Check if napi_ref_threadsafe_function fails
8990 */
8991HWTEST_F(NativeEngineTest, ACE_Napi_Ref_Threadsafe_Function_0200, testing::ext::TestSize.Level2)
8992{
8993    GTEST_LOG_(INFO) << "ACE_Napi_Ref_Threadsafe_Function_0200 called start";
8994    napi_env env = (napi_env)engine_;
8995    napi_threadsafe_function tsFunc = nullptr;
8996    napi_value resourceName = 0;
8997
8998    napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
8999    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
9000    g_finalData.id = FINAL_CB_DATA_TEST_ID;
9001    g_bIsFinish = false;
9002
9003    auto status = napi_create_threadsafe_function(env, nullptr, nullptr,
9004        resourceName, 0, 1, &g_finalData, FinalCallBack, &g_jsData, CallJSSlowCallBack, &tsFunc);
9005    EXPECT_EQ(status, napi_ok);
9006
9007    status = napi_ref_threadsafe_function(env, nullptr);
9008    EXPECT_NE(status, napi_ok);
9009
9010    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
9011    EXPECT_EQ(status, napi_ok);
9012    WaitForFinish();
9013
9014    GTEST_LOG_(INFO) << "ACE_Napi_Ref_Threadsafe_Function_0200 called end";
9015}
9016
9017/*
9018 * @tc.number    : ACE_Napi_Ref_Threadsafe_Function_0300
9019 * @tc.name      : napi_create_threadsafe_function creates a queue and
9020 *                 test napi_call_threadsafe_function none blocking mode with the queue full.
9021 * @tc.desc      :1.The environment engine is created.
9022 *                2.napi_create_threadsafe_function creates a queue
9023 *                3.Create child thread napi_ref_threadsafe_function to set ref flag
9024 *                4.Check if ref flag has been set.
9025 */
9026HWTEST_F(NativeEngineTest, ACE_Napi_Ref_Threadsafe_Function_0300, testing::ext::TestSize.Level2)
9027{
9028    GTEST_LOG_(INFO) << "ACE_Napi_Ref_Threadsafe_Function_0300 called start";
9029    napi_env env = (napi_env)engine_;
9030    napi_threadsafe_function tsFunc = nullptr;
9031    napi_value resourceName = 0;
9032
9033    napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
9034    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
9035    g_finalData.id = FINAL_CB_DATA_TEST_ID;
9036    g_bIsFinish = false;
9037
9038    auto status = napi_create_threadsafe_function(env, nullptr, nullptr,
9039        resourceName, 0, 1, &g_finalData, FinalCallBack, &g_jsData, CallJSSlowCallBack, &tsFunc);
9040    EXPECT_EQ(status, napi_ok);
9041
9042    status = napi_unref_threadsafe_function(env, tsFunc);
9043    EXPECT_EQ(status, napi_ok);
9044
9045    uv_thread_t newChildTid;
9046    g_stEnv = env;
9047    if (uv_thread_create(&newChildTid, NewChildRef, tsFunc) != 0) {
9048        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
9049    }
9050    if (uv_thread_join(&newChildTid) != 0) {
9051        GTEST_LOG_(INFO) << "uv_thread_join Failed!";
9052    }
9053
9054    auto safeAsyncWork = reinterpret_cast<NativeSafeAsyncWork*>(tsFunc);
9055
9056    auto ret = uv_has_ref(reinterpret_cast<uv_handle_t*>(&(safeAsyncWork->asyncHandler_)));
9057    EXPECT_EQ(ret, 0);
9058
9059    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
9060    EXPECT_EQ(status, napi_ok);
9061    WaitForFinish();
9062
9063    GTEST_LOG_(INFO) << "ACE_Napi_Ref_Threadsafe_Function_0300 called end";
9064}
9065
9066/*
9067 * @tc.number    : ACE_Napi_Ref_Threadsafe_Function_0400
9068 * @tc.name      : napi_create_threadsafe_function creates a queue and
9069 *                 test napi_call_threadsafe_function none blocking mode with the queue full.
9070 * @tc.desc      :1.The environment engine is created.
9071 *                2.napi_create_threadsafe_function creates a queue
9072 *                3.Call uv_has_ref to check if ref flag hasbeen set.
9073 */
9074HWTEST_F(NativeEngineTest, ACE_Napi_Ref_Threadsafe_Function_0400, testing::ext::TestSize.Level1)
9075{
9076    GTEST_LOG_(INFO) << "ACE_Napi_Ref_Threadsafe_Function_0400 called start";
9077    napi_env env = (napi_env)engine_;
9078    napi_threadsafe_function tsFunc = nullptr;
9079    napi_value resourceName = 0;
9080
9081    napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
9082    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
9083    g_finalData.id = FINAL_CB_DATA_TEST_ID;
9084    g_bIsFinish = false;
9085
9086    auto status = napi_create_threadsafe_function(env, nullptr, nullptr,
9087        resourceName, 0, 1, &g_finalData, FinalCallBack, &g_jsData, CallJSSlowCallBack, &tsFunc);
9088    EXPECT_EQ(status, napi_ok);
9089
9090    auto safeAsyncWork = reinterpret_cast<NativeSafeAsyncWork*>(tsFunc);
9091    auto ret = uv_has_ref(reinterpret_cast<uv_handle_t*>(&(safeAsyncWork->asyncHandler_)));
9092    EXPECT_EQ(ret, 1);
9093
9094    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
9095    EXPECT_EQ(status, napi_ok);
9096    WaitForFinish();
9097
9098    GTEST_LOG_(INFO) << "ACE_Napi_Ref_Threadsafe_Function_0400 called end";
9099}
9100
9101/*
9102 * @tc.number    : ACE_Napi_Unref_Threadsafe_Function_0100
9103 * @tc.name      : napi_create_threadsafe_function creates a queue and
9104 *                 test napi_call_threadsafe_function none blocking mode with the queue full.
9105 * @tc.desc      :1.The environment engine is created.
9106 *                2.napi_create_threadsafe_function creates a queue
9107 *                3.Call napi_unref_threadsafe_function to set ref flag
9108 *                4.Call uv_has_ref to check if ref flag hasbeen set.
9109 */
9110HWTEST_F(NativeEngineTest, ACE_Napi_Unref_Threadsafe_Function_0100, testing::ext::TestSize.Level1)
9111{
9112    GTEST_LOG_(INFO) << "ACE_Napi_Unref_Threadsafe_Function_0100 called start";
9113    napi_env env = (napi_env)engine_;
9114    napi_threadsafe_function tsFunc = nullptr;
9115    napi_value resourceName = 0;
9116
9117    napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
9118    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
9119    g_finalData.id = FINAL_CB_DATA_TEST_ID;
9120    g_bIsFinish = false;
9121
9122    auto status = napi_create_threadsafe_function(env, nullptr, nullptr,
9123       resourceName, 0, 1, &g_finalData, FinalCallBack, &g_jsData, CallJSSlowCallBack, &tsFunc);
9124    EXPECT_EQ(status, napi_ok);
9125
9126    status = napi_unref_threadsafe_function(env, tsFunc);
9127    EXPECT_EQ(status, napi_ok);
9128
9129    auto safeAsyncWork = reinterpret_cast<NativeSafeAsyncWork*>(tsFunc);
9130
9131    auto ret = uv_has_ref(reinterpret_cast<uv_handle_t*>(&(safeAsyncWork->asyncHandler_)));
9132    EXPECT_EQ(ret, 0);
9133
9134    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
9135    EXPECT_EQ(status, napi_ok);
9136    WaitForFinish();
9137
9138    GTEST_LOG_(INFO) << "ACE_Napi_Unref_Threadsafe_Function_0100 called end";
9139}
9140
9141/*
9142 * @tc.number    : ACE_Napi_Unref_Threadsafe_Function_0200
9143 * @tc.name      : napi_create_threadsafe_function creates a queue and
9144 *                 test napi_call_threadsafe_function none blocking mode with the queue full.
9145 * @tc.desc      :1.The environment engine is created.
9146 *                2.napi_create_threadsafe_function creates a queue
9147 *                3.Call napi_unref_threadsafe_function with invalid param
9148 *                4.Check if napi_unref_threadsafe_function fails
9149 */
9150HWTEST_F(NativeEngineTest, ACE_Napi_Unref_Threadsafe_Function_0200, testing::ext::TestSize.Level2)
9151{
9152    GTEST_LOG_(INFO) << "ACE_Napi_Unref_Threadsafe_Function_0200 called start";
9153    napi_env env = (napi_env)engine_;
9154    napi_threadsafe_function tsFunc = nullptr;
9155    napi_value resourceName = 0;
9156
9157    napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
9158    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
9159    g_finalData.id = FINAL_CB_DATA_TEST_ID;
9160    g_bIsFinish = false;
9161
9162    auto status = napi_create_threadsafe_function(env, nullptr, nullptr,
9163        resourceName, 0, 1, &g_finalData, FinalCallBack, &g_jsData, CallJSSlowCallBack, &tsFunc);
9164    EXPECT_EQ(status, napi_ok);
9165
9166    status = napi_unref_threadsafe_function(env, nullptr);
9167    EXPECT_NE(status, napi_ok);
9168
9169    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
9170    EXPECT_EQ(status, napi_ok);
9171    WaitForFinish();
9172
9173    GTEST_LOG_(INFO) << "ACE_Napi_Unref_Threadsafe_Function_0200 called end";
9174}
9175
9176/*
9177 * @tc.number    : ACE_Napi_Unref_Threadsafe_Function_0300
9178 * @tc.name      : napi_create_threadsafe_function creates a queue and
9179 *                 test napi_call_threadsafe_function none blocking mode with the queue full.
9180 * @tc.desc      :1.The environment engine is created.
9181 *                2.napi_create_threadsafe_function creates a queue
9182 *                3.Create child thread napi_unref_threadsafe_function to set ref flag
9183 *                4.Check if ref flag has been set.
9184 */
9185HWTEST_F(NativeEngineTest, ACE_Napi_Unref_Threadsafe_Function_0300, testing::ext::TestSize.Level2)
9186{
9187    GTEST_LOG_(INFO) << "ACE_Napi_Unref_Threadsafe_Function_0300 called start";
9188    napi_env env = (napi_env)engine_;
9189    napi_threadsafe_function tsFunc = nullptr;
9190    napi_value resourceName = 0;
9191
9192    napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName);
9193    g_jsData.id = CALL_JS_CB_DATA_TEST_ID;
9194    g_finalData.id = FINAL_CB_DATA_TEST_ID;
9195    g_bIsFinish = false;
9196
9197    auto status = napi_create_threadsafe_function(env, nullptr, nullptr,
9198        resourceName, 0, 1, &g_finalData, FinalCallBack, &g_jsData, CallJSSlowCallBack, &tsFunc);
9199    EXPECT_EQ(status, napi_ok);
9200
9201    uv_thread_t newChildTid;
9202    g_stEnv = env;
9203    if (uv_thread_create(&newChildTid, NewChildUnRef, tsFunc) != 0) {
9204        GTEST_LOG_(INFO) << "NewChildThreadMuti Failed to create uv thread!";
9205    }
9206    if (uv_thread_join(&newChildTid) != 0) {
9207        GTEST_LOG_(INFO) << "uv_thread_join(&newChildTid)!";
9208    }
9209
9210    auto safeAsyncWork = reinterpret_cast<NativeSafeAsyncWork*>(tsFunc);
9211
9212    auto ret = uv_has_ref(reinterpret_cast<uv_handle_t*>(&(safeAsyncWork->asyncHandler_)));
9213    EXPECT_EQ(ret, 1);
9214
9215    status = napi_release_threadsafe_function(tsFunc, napi_tsfn_release);
9216    EXPECT_EQ(status, napi_ok);
9217    WaitForFinish();
9218
9219    GTEST_LOG_(INFO) << "ACE_Napi_Unref_Threadsafe_Function_0300 called end";
9220}
9221