var Buffer = require('buffer').Buffer var test = require('tape') var toArrayBuffer = require('.') function elementsEqual (ab, buffer) { var view = new Uint8Array(ab) for (var i = 0; i < view.length; i++) { if (view[i] !== buffer[i]) { return false } } return true } test('Basic behavior', function (t) { var buf = new Buffer(10) for (var i = 0; i < 10; i++) { buf[i] = i } var ab = toArrayBuffer(buf) t.equals(ab.byteLength, 10, 'correct length') t.ok(elementsEqual(ab, buf), 'elements equal') t.end() }) test('Behavior when input is a subarray 1', function (t) { var origBuf = new Buffer(10) for (var i = 0; i < 10; i++) { origBuf[i] = i } var buf = origBuf.slice(1) var ab = toArrayBuffer(buf) t.equals(ab.byteLength, 9, 'correct length') t.ok(elementsEqual(ab, buf), 'elements equal') t.notOk(ab === buf.buffer, 'the underlying ArrayBuffer is not returned when incorrect') t.end() }) test('Behavior when input is a subarray 2', function (t) { var origBuf = new Buffer(10) for (var i = 0; i < 10; i++) { origBuf[i] = i } var buf = origBuf.slice(0, 9) var ab = toArrayBuffer(buf) t.equals(ab.byteLength, 9, 'correct length') t.ok(elementsEqual(ab, buf), 'elements equal') t.notOk(ab === buf.buffer, 'the underlying ArrayBuffer is not returned when incorrect') t.end() })