diff --git a/test/unittest/test_napi.cpp b/test/unittest/test_napi.cpp index 9499a60a33364c8c5b64a27eb592439622116ea9..f9025232c4a52fca27e4759e5d6193b661285e82 100644 --- a/test/unittest/test_napi.cpp +++ b/test/unittest/test_napi.cpp @@ -164,6 +164,8 @@ napi_value TestAbort(napi_env env, napi_callback_info info) HWTEST_F(NapiBasicTest, IsolateRequireMethodTest001, testing::ext::TestSize.Level1) { napi_env env = (napi_env)engine_; + NativeEngineProxy ctxEnv(engine_); + const char requireNapiName[] = "requireNapi"; const char requireInternalName[] = "requireInternal"; napi_value requireNapi = nullptr; @@ -179,7 +181,6 @@ HWTEST_F(NapiBasicTest, IsolateRequireMethodTest001, testing::ext::TestSize.Leve napi_value newGlobal = nullptr; napi_value newRequire[] = { nullptr, nullptr }; - NativeEngineProxy ctxEnv(engine_); ASSERT_CHECK_CALL(napi_get_global(ctxEnv, &newGlobal)); ASSERT_CHECK_CALL(napi_get_property(ctxEnv, newGlobal, requireNapi, &newRequire[0])); ASSERT_CHECK_CALL(napi_get_property(ctxEnv, newGlobal, requireInternal, &newRequire[1])); @@ -12085,38 +12086,6 @@ HWTEST_F(NapiBasicTest, NapiGetGlobalTest004, testing::ext::TestSize.Level1) ASSERT_TRUE(res3); } -/** - * @tc.name: NapiGetGlobalTest005 - * @tc.desc: Test napi_get_global in different valid environments - * @tc.type: FUNC - */ -HWTEST_F(NapiBasicTest, NapiGetGlobalTest005, testing::ext::TestSize.Level1) -{ - ASSERT_NE(engine_, nullptr); - napi_env env = reinterpret_cast(engine_); - NativeEngineProxy env1; - env1->Deinit(); - NativeEngineProxy env2; - env2->Deinit(); - - napi_value result1 = nullptr; - napi_value result2 = nullptr; - - napi_status res1 = napi_get_global(env1, &result1); - ASSERT_EQ(res1, napi_ok); - ASSERT_NE(result1, nullptr); - - napi_status res2 = napi_get_global(env2, &result2); - ASSERT_EQ(res2, napi_ok); - ASSERT_NE(result2, nullptr); - bool res3 = false; - napi_status res4 = napi_strict_equals(env, result1, result2, &res3); - ASSERT_EQ(res4, napi_ok); - ASSERT_FALSE(res3); - env1->Init(); - env2->Init(); -} - /** * @tc.name: NapiGetNullTest * @tc.desc: Test interface of napi_get_null diff --git a/test/unittest/test_napi_context.cpp b/test/unittest/test_napi_context.cpp index a371001c83edd4e4d83bbfe48351600c61bad0d1..8a411bb59af34942a348f7b26151cd922322fe23 100644 --- a/test/unittest/test_napi_context.cpp +++ b/test/unittest/test_napi_context.cpp @@ -18,6 +18,7 @@ #include "napi/native_node_api.h" #include "native_utils.h" #define private public +#define protected public #include "test.h" #undef private #include "test_common.h" @@ -87,6 +88,7 @@ public: ~NapiContextTest() override { + napi_switch_ark_context(reinterpret_cast(engine_)); if (multiContextEngine_ != nullptr) { napi_destroy_ark_context(reinterpret_cast(multiContextEngine_)); multiContextEngine_ = nullptr; @@ -2733,11 +2735,11 @@ static void Cleanup(void* arg) */ HWTEST_F(NapiContextTest, AddEnvCleanupHookWithMultiContext001, testing::ext::TestSize.Level1) { - { - NativeEngineProxy contextEngine(engine_); - g_hookTag = INT_ZERO; - ASSERT_CHECK_CALL(napi_add_env_cleanup_hook(contextEngine, Cleanup, nullptr)); - } + napi_env newEnv = nullptr; + napi_create_ark_context(reinterpret_cast(engine_), &newEnv); + g_hookTag = INT_ZERO; + ASSERT_CHECK_CALL(napi_add_env_cleanup_hook(newEnv, Cleanup, nullptr)); + napi_destroy_ark_context(newEnv); ASSERT_EQ(g_hookTag, INT_ONE); } @@ -2749,13 +2751,13 @@ HWTEST_F(NapiContextTest, AddEnvCleanupHookWithMultiContext001, testing::ext::Te */ HWTEST_F(NapiContextTest, RemoveEnvCleanupHookWithMultiContext001, testing::ext::TestSize.Level1) { - { - NativeEngineProxy contextEngine(engine_); - g_hookTag = 0; - ASSERT_CHECK_CALL(napi_add_env_cleanup_hook(contextEngine, Cleanup, &g_hookArgOne)); - ASSERT_CHECK_CALL(napi_add_env_cleanup_hook(contextEngine, Cleanup, &g_hookArgTwo)); - ASSERT_CHECK_CALL(napi_remove_env_cleanup_hook(contextEngine, Cleanup, &g_hookArgTwo)); - } + napi_env newEnv = nullptr; + napi_create_ark_context(reinterpret_cast(engine_), &newEnv); + g_hookTag = INT_ZERO; + ASSERT_CHECK_CALL(napi_add_env_cleanup_hook(newEnv, Cleanup, &g_hookArgOne)); + ASSERT_CHECK_CALL(napi_add_env_cleanup_hook(newEnv, Cleanup, &g_hookArgTwo)); + ASSERT_CHECK_CALL(napi_remove_env_cleanup_hook(newEnv, Cleanup, &g_hookArgTwo)); + napi_destroy_ark_context(newEnv); ASSERT_EQ(g_hookTag, INT_ONE); } @@ -2800,6 +2802,7 @@ HWTEST_F(NapiContextTest, CloseCallbackScopeWithMultiContext001, testing::ext::T EXPECT_NE(context, nullptr); napi_callback_scope result = nullptr; ASSERT_CHECK_CALL(napi_open_callback_scope(env, obj, context, &result)); + EXPECT_NE(result, nullptr); ASSERT_CHECK_CALL(napi_close_callback_scope(env, result)); } @@ -2812,17 +2815,21 @@ HWTEST_F(NapiContextTest, CloseCallbackScopeWithMultiContext001, testing::ext::T HWTEST_F(NapiContextTest, GetThreadsafeFunctionContextWithMultiContext001, testing::ext::TestSize.Level1) { ASSERT_NE(multiContextEngine_, nullptr); + UVLoopRunner runner(multiContextEngine_); napi_env env = reinterpret_cast(multiContextEngine_); napi_value resourceName; ASSERT_CHECK_CALL(napi_create_string_latin1(env, __func__, NAPI_AUTO_LENGTH, &resourceName)); napi_threadsafe_function tsfn; - ASSERT_CHECK_CALL(napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 0, 1, nullptr, - [](napi_env env, void* context, void*) {}, nullptr, + int32_t data = INT_ONE; + ASSERT_CHECK_CALL(napi_create_threadsafe_function(env, nullptr, nullptr, resourceName, 0, 1, &data, + [](napi_env env, void* context, void*) {}, &data, [](napi_env env, napi_value jsCb, void *context, void *data) {}, &tsfn)); void* context = nullptr; ASSERT_CHECK_CALL(napi_get_threadsafe_function_context(tsfn, &context)); + ASSERT_EQ(*reinterpret_cast(context), INT_ONE); ASSERT_CHECK_CALL(napi_release_threadsafe_function(tsfn, napi_tsfn_release)); + runner.Run(); } /** @@ -2834,6 +2841,7 @@ HWTEST_F(NapiContextTest, GetThreadsafeFunctionContextWithMultiContext001, testi HWTEST_F(NapiContextTest, AcquireThreadsafeFunctionWithMultiContext001, testing::ext::TestSize.Level1) { ASSERT_NE(multiContextEngine_, nullptr); + UVLoopRunner runner(multiContextEngine_); napi_env env = reinterpret_cast(multiContextEngine_); napi_value resourceName; @@ -2843,7 +2851,9 @@ HWTEST_F(NapiContextTest, AcquireThreadsafeFunctionWithMultiContext001, testing: [](napi_env env, void* context, void*) {}, nullptr, [](napi_env env, napi_value jsCb, void *context, void *data) {}, &tsfn)); ASSERT_CHECK_CALL(napi_acquire_threadsafe_function(tsfn)); + ASSERT_EQ(reinterpret_cast(tsfn)->threadCount_, INT_TWO); ASSERT_CHECK_CALL(napi_release_threadsafe_function(tsfn, napi_tsfn_abort)); + runner.Run(); } /** @@ -2855,6 +2865,7 @@ HWTEST_F(NapiContextTest, AcquireThreadsafeFunctionWithMultiContext001, testing: HWTEST_F(NapiContextTest, ReleaseThreadsafeFunctionWithMultiContext001, testing::ext::TestSize.Level1) { ASSERT_NE(multiContextEngine_, nullptr); + UVLoopRunner runner(multiContextEngine_); napi_env env = reinterpret_cast(multiContextEngine_); napi_value resourceName; @@ -2864,6 +2875,7 @@ HWTEST_F(NapiContextTest, ReleaseThreadsafeFunctionWithMultiContext001, testing: [](napi_env env, void* context, void*) {}, nullptr, [](napi_env env, napi_value jsCb, void *context, void *data) {}, &tsfn)); ASSERT_CHECK_CALL(napi_release_threadsafe_function(tsfn, napi_tsfn_abort)); + runner.Run(); } /** @@ -2875,6 +2887,7 @@ HWTEST_F(NapiContextTest, ReleaseThreadsafeFunctionWithMultiContext001, testing: HWTEST_F(NapiContextTest, UnrefThreadsafeFunctionWithMultiContext001, testing::ext::TestSize.Level1) { ASSERT_NE(multiContextEngine_, nullptr); + UVLoopRunner runner(multiContextEngine_); napi_env env = reinterpret_cast(multiContextEngine_); napi_value resourceName; @@ -2884,7 +2897,9 @@ HWTEST_F(NapiContextTest, UnrefThreadsafeFunctionWithMultiContext001, testing::e [](napi_env env, void* context, void*) {}, nullptr, [](napi_env env, napi_value jsCb, void *context, void *data) {}, &tsfn)); ASSERT_CHECK_CALL(napi_unref_threadsafe_function(env, tsfn)); + ASSERT_CHECK_CALL(napi_ref_threadsafe_function(env, tsfn)); ASSERT_CHECK_CALL(napi_release_threadsafe_function(tsfn, napi_tsfn_abort)); + runner.Run(); } /** @@ -2896,6 +2911,7 @@ HWTEST_F(NapiContextTest, UnrefThreadsafeFunctionWithMultiContext001, testing::e HWTEST_F(NapiContextTest, RefThreadsafeFunctionWithMultiContext001, testing::ext::TestSize.Level1) { ASSERT_NE(multiContextEngine_, nullptr); + UVLoopRunner runner(multiContextEngine_); napi_env env = reinterpret_cast(multiContextEngine_); napi_value resourceName; @@ -2906,6 +2922,7 @@ HWTEST_F(NapiContextTest, RefThreadsafeFunctionWithMultiContext001, testing::ext [](napi_env env, napi_value jsCb, void *context, void *data) {}, &tsfn)); ASSERT_CHECK_CALL(napi_ref_threadsafe_function(env, tsfn)); ASSERT_CHECK_CALL(napi_release_threadsafe_function(tsfn, napi_tsfn_abort)); + runner.Run(); } /** @@ -2937,10 +2954,10 @@ HWTEST_F(NapiContextTest, RemoveAsyncCleanupHookWithMultiContext001, testing::ex ASSERT_NE(multiContextEngine_, nullptr); napi_env env = reinterpret_cast(multiContextEngine_); - napi_async_cleanup_hook_handle handle; - napi_status res = napi_add_async_cleanup_hook(env, [](napi_async_cleanup_hook_handle handle, void* arg) {}, - nullptr, &handle); - EXPECT_EQ(res, napi_ok); + napi_async_cleanup_hook_handle handle = nullptr; + ASSERT_CHECK_CALL(napi_add_async_cleanup_hook(env, [](napi_async_cleanup_hook_handle handle, void* arg) {}, + nullptr, &handle)); + EXPECT_NE(handle, nullptr); ASSERT_CHECK_CALL(napi_remove_async_cleanup_hook(handle)); }