45 wiersze
1.3 KiB
JavaScript
45 wiersze
1.3 KiB
JavaScript
|
|
var assert = require('assert')
|
|
, ref = require('ref')
|
|
, ffi = require('../')
|
|
, bindings = require('bindings')({ module_root: __dirname, bindings: 'ffi_tests' })
|
|
|
|
describe('Function "type"', function () {
|
|
|
|
afterEach(gc)
|
|
|
|
it('should be a function', function () {
|
|
assert.equal('function', typeof ffi.Function)
|
|
})
|
|
|
|
var voidFn = ffi.Function('void', [])
|
|
|
|
it('should return a "type" object when invoked with a return type and array of arguments types', function () {
|
|
assert(voidFn)
|
|
assert.equal('function', typeof voidFn.get)
|
|
assert.equal('function', typeof voidFn.set)
|
|
})
|
|
|
|
it('should be accepted as a return "type" to a ForeignFunction', function () {
|
|
var fn = ffi.ForeignFunction(ref.NULL, voidFn, [])
|
|
})
|
|
|
|
it('should be accepted as an argument "type" to a ForeignFunction', function () {
|
|
var fn = ffi.ForeignFunction(ref.NULL, 'void', [ voidFn ])
|
|
})
|
|
|
|
it('should work as expected using the "callback_func" static bindings', function () {
|
|
var fn = ffi.Function('int', [ 'int' ])
|
|
var callback_func = ffi.ForeignFunction(bindings.callback_func, fn, [ fn ])
|
|
|
|
var abs = callback_func(Math.abs)
|
|
assert.equal('function', typeof abs)
|
|
|
|
assert.equal(Math.abs(-5), abs(-5))
|
|
assert.equal(Math.abs(-9), abs(-9))
|
|
assert.equal(Math.abs(-69), abs(-69))
|
|
assert.equal(Math.abs(3), abs(3))
|
|
})
|
|
|
|
})
|