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}`, ) } })