UNPKG

koffi

Version:

Fast and simple C FFI (foreign function interface) for Node.js

71 lines (57 loc) 2.35 kB
'use strict'; 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); } ]); }