|
|
- 'use strict';
- var Buffer = require('../../').Buffer;
-
-
-
- var assert = require('assert');
-
- var Buffer = require('../../').Buffer;
- var LENGTH = 16;
-
- var ab = new ArrayBuffer(LENGTH);
- var dv = new DataView(ab);
- var ui = new Uint8Array(ab);
- var buf = Buffer.from(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 (var 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() { }
- Object.setPrototypeOf(AB, ArrayBuffer);
- Object.setPrototypeOf(AB.prototype, ArrayBuffer.prototype);
- Buffer.from(new AB());
- }, TypeError);
-
- // write{Double,Float}{LE,BE} with noAssert should not crash, cf. #3766
- var b = Buffer.allocUnsafe(1);
- b.writeFloatLE(11.11, 0, true);
- b.writeFloatBE(11.11, 0, true);
- b.writeDoubleLE(11.11, 0, true);
- b.writeDoubleBE(11.11, 0, true);
-
- // Test the byteOffset and length arguments
- {
- var ab = new Uint8Array(5);
- ab[0] = 1;
- ab[1] = 2;
- ab[2] = 3;
- ab[3] = 4;
- ab[4] = 5;
- var buf = Buffer.from(ab.buffer, 1, 3);
- assert.equal(buf.length, 3);
- assert.equal(buf[0], 2);
- assert.equal(buf[1], 3);
- assert.equal(buf[2], 4);
- buf[0] = 9;
- assert.equal(ab[1], 9);
-
- assert.throws(() => Buffer.from(ab.buffer, 6), (err) => {
- assert(err instanceof RangeError);
- assert(/'offset' is out of bounds/.test(err.message));
- return true;
- });
- assert.throws(() => Buffer.from(ab.buffer, 3, 6), (err) => {
- assert(err instanceof RangeError);
- assert(/'length' is out of bounds/.test(err.message));
- return true;
- });
- }
-
- // Test the deprecated Buffer() version also
- {
- var ab = new Uint8Array(5);
- ab[0] = 1;
- ab[1] = 2;
- ab[2] = 3;
- ab[3] = 4;
- ab[4] = 5;
- var buf = Buffer(ab.buffer, 1, 3);
- assert.equal(buf.length, 3);
- assert.equal(buf[0], 2);
- assert.equal(buf[1], 3);
- assert.equal(buf[2], 4);
- buf[0] = 9;
- assert.equal(ab[1], 9);
-
- assert.throws(() => Buffer(ab.buffer, 6), (err) => {
- assert(err instanceof RangeError);
- assert(/'offset' is out of bounds/.test(err.message));
- return true;
- });
- assert.throws(() => Buffer(ab.buffer, 3, 6), (err) => {
- assert(err instanceof RangeError);
- assert(/'length' is out of bounds/.test(err.message));
- return true;
- });
- }
-
|