summaryrefslogtreecommitdiff
path: root/test/parallel/test-buffer-bytelength.js
diff options
context:
space:
mode:
authorJackson Tian <shyvo1987@gmail.com>2016-02-16 11:08:49 +0800
committerJames M Snell <jasnell@gmail.com>2016-03-27 09:19:39 -0700
commit293fd0453591ef0d87437a265ff515916d35d715 (patch)
tree5194f284fa4e16829890c5355c2d2eabd6351af0 /test/parallel/test-buffer-bytelength.js
parentafd821a91d14a13becdf989184adf721ae7365eb (diff)
downloadandroid-node-v8-293fd0453591ef0d87437a265ff515916d35d715.tar.gz
android-node-v8-293fd0453591ef0d87437a265ff515916d35d715.tar.bz2
android-node-v8-293fd0453591ef0d87437a265ff515916d35d715.zip
buffer: make byteLength work with ArrayBuffer & DataView
Convert anything to string, but Buffer, TypedArray and ArrayBuffer ``` var uint8 = new Uint8Array([0xf0, 0x9f, 0x90]); Buffer.byteLength(uint8); // should be 3, but returns 11 Buffer.byteLength(uint8.buffer); // should be 3, but return 20 ``` PR-URL: https://github.com/nodejs/node/pull/5255 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Trevor Norris <trev.norris@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'test/parallel/test-buffer-bytelength.js')
-rw-r--r--test/parallel/test-buffer-bytelength.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/parallel/test-buffer-bytelength.js b/test/parallel/test-buffer-bytelength.js
index aaffc36bd2..01bf12e544 100644
--- a/test/parallel/test-buffer-bytelength.js
+++ b/test/parallel/test-buffer-bytelength.js
@@ -3,6 +3,7 @@
require('../common');
var assert = require('assert');
var Buffer = require('buffer').Buffer;
+var SlowBuffer = require('buffer').SlowBuffer;
// coerce values to string
assert.equal(Buffer.byteLength(32, 'binary'), 2);
@@ -10,12 +11,45 @@ assert.equal(Buffer.byteLength(NaN, 'utf8'), 3);
assert.equal(Buffer.byteLength({}, 'binary'), 15);
assert.equal(Buffer.byteLength(), 9);
+var buff = new Buffer(10);
+assert(ArrayBuffer.isView(buff));
+var slowbuff = new SlowBuffer(10);
+assert(ArrayBuffer.isView(slowbuff));
+
// buffer
var incomplete = Buffer.from([0xe4, 0xb8, 0xad, 0xe6, 0x96]);
assert.equal(Buffer.byteLength(incomplete), 5);
var ascii = Buffer.from('abc');
assert.equal(Buffer.byteLength(ascii), 3);
+// ArrayBuffer
+var buffer = new ArrayBuffer(8);
+assert.equal(Buffer.byteLength(buffer), 8);
+
+// TypedArray
+var int8 = new Int8Array(8);
+assert.equal(Buffer.byteLength(int8), 8);
+var uint8 = new Uint8Array(8);
+assert.equal(Buffer.byteLength(uint8), 8);
+var uintc8 = new Uint8ClampedArray(2);
+assert.equal(Buffer.byteLength(uintc8), 2);
+var int16 = new Int16Array(8);
+assert.equal(Buffer.byteLength(int16), 16);
+var uint16 = new Uint16Array(8);
+assert.equal(Buffer.byteLength(uint16), 16);
+var int32 = new Int32Array(8);
+assert.equal(Buffer.byteLength(int32), 32);
+var uint32 = new Uint32Array(8);
+assert.equal(Buffer.byteLength(uint32), 32);
+var float32 = new Float32Array(8);
+assert.equal(Buffer.byteLength(float32), 32);
+var float64 = new Float64Array(8);
+assert.equal(Buffer.byteLength(float64), 64);
+
+// DataView
+var dv = new DataView(new ArrayBuffer(2));
+assert.equal(Buffer.byteLength(dv), 2);
+
// special case: zero length string
assert.equal(Buffer.byteLength('', 'ascii'), 0);
assert.equal(Buffer.byteLength('', 'HeX'), 0);