koffi
Version:
Fast and simple C FFI (foreign function interface) for Node.js
71 lines (57 loc) • 2.35 kB
JavaScript
const assert = require('assert');
const testUtil = require('./testUtil');
module.exports = require('./common').runTest(test);
function test (binding) {
return testUtil.runGCTests([
'Internal ArrayBuffer',
() => {
const test = binding.arraybuffer.createBuffer();
binding.arraybuffer.checkBuffer(test);
assert.ok(test instanceof ArrayBuffer);
const test2 = test.slice(0);
binding.arraybuffer.checkBuffer(test2);
},
'External ArrayBuffer',
() => {
const test = binding.arraybuffer.createExternalBuffer();
binding.arraybuffer.checkBuffer(test);
assert.ok(test instanceof ArrayBuffer);
assert.strictEqual(0, binding.arraybuffer.getFinalizeCount());
},
() => assert.strictEqual(0, binding.arraybuffer.getFinalizeCount()),
'External ArrayBuffer with finalizer',
() => {
const test = binding.arraybuffer.createExternalBufferWithFinalize();
binding.arraybuffer.checkBuffer(test);
assert.ok(test instanceof ArrayBuffer);
assert.strictEqual(0, binding.arraybuffer.getFinalizeCount());
},
() => assert.strictEqual(1, binding.arraybuffer.getFinalizeCount()),
'External ArrayBuffer with finalizer hint',
() => {
const test = binding.arraybuffer.createExternalBufferWithFinalizeHint();
binding.arraybuffer.checkBuffer(test);
assert.ok(test instanceof ArrayBuffer);
assert.strictEqual(0, binding.arraybuffer.getFinalizeCount());
},
() => assert.strictEqual(1, binding.arraybuffer.getFinalizeCount()),
'ArrayBuffer with constructor',
() => {
assert.strictEqual(true, binding.arraybuffer.checkEmptyBuffer());
const test = binding.arraybuffer.createBufferWithConstructor();
binding.arraybuffer.checkBuffer(test);
assert.ok(test instanceof ArrayBuffer);
},
'ArrayBuffer updates data pointer and length when detached',
() => {
// Detach the ArrayBuffer in JavaScript.
// eslint-disable-next-line no-undef
const mem = new WebAssembly.Memory({ initial: 1 });
binding.arraybuffer.checkDetachUpdatesData(mem.buffer, () => mem.grow(1));
// Let C++ detach the ArrayBuffer.
const extBuffer = binding.arraybuffer.createExternalBuffer();
binding.arraybuffer.checkDetachUpdatesData(extBuffer);
}
]);
}
;