diff options
author | Trevor Norris <trev.norris@gmail.com> | 2015-06-17 10:43:13 -0600 |
---|---|---|
committer | Rod Vagg <rod@vagg.org> | 2015-08-04 11:56:13 -0700 |
commit | 4643b8b6671607a7aff60cbbd0b384dcf2f6959e (patch) | |
tree | daad9f2689c4d1205b425f1674c7c0e21ff6b786 /test/parallel/test-buffer-arraybuffer.js | |
parent | e5ada116cd59e7ab10c9e697736bdc5ea37e0ce9 (diff) | |
download | node-new-4643b8b6671607a7aff60cbbd0b384dcf2f6959e.tar.gz |
buffer: allow ArrayBuffer as Buffer argument
Buffer now uses the ArrayBuffer as the backing store if passed to the
constructor.
Fixes: https://github.com/nodejs/io.js/issues/106
PR-URL: https://github.com/nodejs/io.js/pull/2002
Reviewed-By: Domenic Denicola <d@domenic.me>
Diffstat (limited to 'test/parallel/test-buffer-arraybuffer.js')
-rw-r--r-- | test/parallel/test-buffer-arraybuffer.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/parallel/test-buffer-arraybuffer.js b/test/parallel/test-buffer-arraybuffer.js new file mode 100644 index 0000000000..c13d0ba411 --- /dev/null +++ b/test/parallel/test-buffer-arraybuffer.js @@ -0,0 +1,46 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); + +const Buffer = require('buffer').Buffer; +const LENGTH = 16; + +const ab = new ArrayBuffer(LENGTH); +const dv = new DataView(ab); +const ui = new Uint8Array(ab); +const buf = new Buffer(ab); + + +assert.ok(buf instanceof Buffer); +// For backwards compatibility of old .parent property test that if buf is not +// a slice then .parent should be undefined. +assert.equal(buf.parent, undefined); +assert.equal(buf.buffer, ab); +assert.equal(buf.length, ab.byteLength); + + +buf.fill(0xC); +for (let i = 0; i < LENGTH; i++) { + assert.equal(ui[i], 0xC); + ui[i] = 0xF; + assert.equal(buf[i], 0xF); +} + +buf.writeUInt32LE(0xF00, 0); +buf.writeUInt32BE(0xB47, 4); +buf.writeDoubleLE(3.1415, 8); + +assert.equal(dv.getUint32(0, true), 0xF00); +assert.equal(dv.getUint32(4), 0xB47); +assert.equal(dv.getFloat64(8, true), 3.1415); + + +// Now test protecting users from doing stupid things + +assert.throws(function() { + function AB() { } + AB.__proto__ = ArrayBuffer; + AB.prototype.__proto__ = ArrayBuffer.prototype; + new Buffer(new AB()); +}, TypeError); |