diff options
author | Jackson Tian <shyvo1987@gmail.com> | 2016-02-16 11:08:49 +0800 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2016-03-27 09:19:39 -0700 |
commit | 293fd0453591ef0d87437a265ff515916d35d715 (patch) | |
tree | 5194f284fa4e16829890c5355c2d2eabd6351af0 /test/parallel/test-buffer-bytelength.js | |
parent | afd821a91d14a13becdf989184adf721ae7365eb (diff) | |
download | android-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.js | 34 |
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); |