39 wiersze
1.1 KiB
JavaScript
39 wiersze
1.1 KiB
JavaScript
|
|
var assert = require('assert')
|
|
, ref = require('ref')
|
|
, ffi = require('../')
|
|
, bindings = require('bindings')({ module_root: __dirname, bindings: 'ffi_tests' })
|
|
, sprintfPtr = bindings.sprintf
|
|
|
|
describe('variadic arguments', function () {
|
|
|
|
afterEach(gc)
|
|
|
|
it('should work with vararg C functions', function () {
|
|
var buf = new Buffer(100)
|
|
var sprintfGen = ffi.VariadicForeignFunction(sprintfPtr, 'int', [ 'pointer', 'string' ])
|
|
|
|
sprintfGen()(buf, 'hello world!')
|
|
assert.equal(buf.readCString(), 'hello world!')
|
|
|
|
sprintfGen('int')(buf, '%d', 42)
|
|
assert.equal(buf.readCString(), '42')
|
|
|
|
sprintfGen('double')(buf, '%10.2f', 3.14)
|
|
assert.equal(buf.readCString(), ' 3.14')
|
|
|
|
sprintfGen('string')(buf, ' %s ', 'test')
|
|
assert.equal(buf.readCString(), ' test ')
|
|
})
|
|
|
|
it('should return the same Function instance when the same arguments are used', function () {
|
|
var sprintfGen = ffi.VariadicForeignFunction(sprintfPtr, 'int', [ 'pointer', 'string' ])
|
|
|
|
var one = sprintfGen('int')
|
|
var two = sprintfGen(ref.types.int)
|
|
|
|
assert.strictEqual(one, two)
|
|
})
|
|
|
|
})
|