napi-rs/examples/napi-compat-mode/__tests__/function.spec.ts

45 lines
1 KiB
TypeScript
Raw Normal View History

import test from 'ava'
const bindings = require('../index.node')
test('should call the function', (t) => {
bindings.testCallFunction((arg1: string, arg2: string) => {
t.is(`${arg1} ${arg2}`, 'hello world')
})
})
test('should call function with ref args', (t) => {
bindings.testCallFunctionWithRefArguments((arg1: string, arg2: string) => {
t.is(`${arg1} ${arg2}`, 'hello world')
})
})
test('should set "this" properly', (t) => {
const obj = {}
bindings.testCallFunctionWithThis.call(obj, function (this: typeof obj) {
t.is(this, obj)
})
})
test('should handle errors', (t) => {
bindings.testCallFunctionError(
() => {
throw new Error('Testing')
},
(err: Error) => {
t.is(err.message, 'Testing')
},
)
})
test('should be able to create function from closure', (t) => {
for (let i = 0; i < 100; i++) {
t.is(
bindings.testCreateFunctionFromClosure()(
...Array.from({ length: i }).map((_, i) => i),
),
`arguments length: ${i}`,
)
}
})