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