summaryrefslogtreecommitdiff
path: root/test/parallel/test-buffer-arraybuffer.js
diff options
context:
space:
mode:
authorTrevor Norris <trev.norris@gmail.com>2015-06-17 10:43:13 -0600
committerRod Vagg <rod@vagg.org>2015-08-04 11:56:13 -0700
commit4643b8b6671607a7aff60cbbd0b384dcf2f6959e (patch)
treedaad9f2689c4d1205b425f1674c7c0e21ff6b786 /test/parallel/test-buffer-arraybuffer.js
parente5ada116cd59e7ab10c9e697736bdc5ea37e0ce9 (diff)
downloadnode-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.js46
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);