diff options
author | Matt Mastracci <matthew@mastracci.com> | 2024-02-12 13:46:50 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-12 13:46:50 -0700 |
commit | f60720090c7bd8cdf91d7aebd0c42e01c86b3b83 (patch) | |
tree | 9becb7ff7e40d37769601fa049beccd101d58a98 /test_napi/src/async.rs | |
parent | bd1358efab8ba7339a8e70034315fa7da840292e (diff) |
chore: move test_ffi and test_nap to tests/ [WIP] (#22394)
Moving some additional NAPI and. FFI tests out of the tree root.
Diffstat (limited to 'test_napi/src/async.rs')
-rw-r--r-- | test_napi/src/async.rs | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/test_napi/src/async.rs b/test_napi/src/async.rs deleted file mode 100644 index 3d3827b51..000000000 --- a/test_napi/src/async.rs +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. - -use crate::assert_napi_ok; -use crate::napi_get_callback_info; -use crate::napi_new_property; -use napi_sys::Status::napi_ok; -use napi_sys::ValueType::napi_function; -use napi_sys::*; -use std::os::raw::c_char; -use std::os::raw::c_void; -use std::ptr; - -pub struct Baton { - called: bool, - func: napi_ref, - task: napi_async_work, -} - -unsafe extern "C" fn execute(_env: napi_env, data: *mut c_void) { - let baton: &mut Baton = &mut *(data as *mut Baton); - assert!(!baton.called); - assert!(!baton.func.is_null()); - - baton.called = true; -} - -unsafe extern "C" fn complete( - env: napi_env, - status: napi_status, - data: *mut c_void, -) { - assert!(status == napi_ok); - let baton: Box<Baton> = Box::from_raw(data as *mut Baton); - assert!(baton.called); - assert!(!baton.func.is_null()); - - let mut global: napi_value = ptr::null_mut(); - assert_napi_ok!(napi_get_global(env, &mut global)); - - let mut callback: napi_value = ptr::null_mut(); - assert_napi_ok!(napi_get_reference_value(env, baton.func, &mut callback)); - - let mut _result: napi_value = ptr::null_mut(); - assert_napi_ok!(napi_call_function( - env, - global, - callback, - 0, - ptr::null(), - &mut _result - )); - assert_napi_ok!(napi_delete_reference(env, baton.func)); - assert_napi_ok!(napi_delete_async_work(env, baton.task)); -} - -extern "C" fn test_async_work( - env: napi_env, - info: napi_callback_info, -) -> napi_value { - let (args, argc, _) = napi_get_callback_info!(env, info, 1); - assert_eq!(argc, 1); - - let mut ty = -1; - assert_napi_ok!(napi_typeof(env, args[0], &mut ty)); - assert_eq!(ty, napi_function); - - let mut resource_name: napi_value = ptr::null_mut(); - assert_napi_ok!(napi_create_string_utf8( - env, - "test_async_resource".as_ptr() as *const c_char, - usize::MAX, - &mut resource_name, - )); - - let async_work: napi_async_work = ptr::null_mut(); - - let mut func: napi_ref = ptr::null_mut(); - assert_napi_ok!(napi_create_reference(env, args[0], 1, &mut func)); - let baton = Box::new(Baton { - called: false, - func, - task: async_work, - }); - let mut async_work = baton.task; - let baton_ptr = Box::into_raw(baton) as *mut c_void; - - assert_napi_ok!(napi_create_async_work( - env, - ptr::null_mut(), - resource_name, - Some(execute), - Some(complete), - baton_ptr, - &mut async_work, - )); - let mut baton = unsafe { Box::from_raw(baton_ptr as *mut Baton) }; - baton.task = async_work; - Box::into_raw(baton); - assert_napi_ok!(napi_queue_async_work(env, async_work)); - - ptr::null_mut() -} - -pub fn init(env: napi_env, exports: napi_value) { - let properties = - &[napi_new_property!(env, "test_async_work", test_async_work)]; - - assert_napi_ok!(napi_define_properties( - env, - exports, - properties.len(), - properties.as_ptr() - )); -} |