45 wiersze
1.2 KiB
JavaScript
45 wiersze
1.2 KiB
JavaScript
|
|
var assert = require('assert')
|
|
, ref = require('ref')
|
|
, ffi = require('../')
|
|
|
|
describe('ffi_cif', function () {
|
|
|
|
afterEach(gc)
|
|
|
|
it('should return a Buffer representing the `ffi_cif` instance', function () {
|
|
var cif = ffi.CIF(ref.types.void, [ ])
|
|
assert(Buffer.isBuffer(cif))
|
|
})
|
|
|
|
it('should throw an Error when given an invalid "type"', function () {
|
|
var ffi_type = new ffi.FFI_TYPE
|
|
ffi_type.size = 0
|
|
ffi_type.alignment = 0
|
|
ffi_type.type = 0
|
|
ffi_type.elements = ref.NULL
|
|
|
|
var bad_type = { size: 1, indirection: 1, ffi_type: ffi_type.ref() }
|
|
assert.throws(function () {
|
|
ffi.CIF(bad_type, [])
|
|
}, function (err) {
|
|
assert(err.message.indexOf('FFI_BAD_TYPEDEF') !== -1)
|
|
assert.equal('FFI_BAD_TYPEDEF', err.code)
|
|
assert.equal(ffi.FFI_BAD_TYPEDEF, err.errno)
|
|
return true
|
|
})
|
|
})
|
|
|
|
it('should throw an Error when given an invalid ABI argument', function () {
|
|
assert.throws(function () {
|
|
ffi.CIF(ref.types.void, [], -1)
|
|
}, function (err) {
|
|
assert(err.message.indexOf('FFI_BAD_ABI') !== -1)
|
|
assert.equal('FFI_BAD_ABI', err.code)
|
|
assert.equal(ffi.FFI_BAD_ABI, err.errno)
|
|
return true
|
|
})
|
|
})
|
|
|
|
})
|