| 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() |
| }) |