| 'use strict'; | 
| var Buffer = require('../../').Buffer; | 
|   | 
|   | 
|   | 
| var assert = require('assert'); | 
| var buffer = require('../../'); | 
| var Buffer = buffer.Buffer; | 
| var SlowBuffer = buffer.SlowBuffer; | 
|   | 
| var ones = [1, 1, 1, 1]; | 
|   | 
| // should create a Buffer | 
| var sb = SlowBuffer(4); | 
| assert(sb instanceof Buffer); | 
| assert.strictEqual(sb.length, 4); | 
| sb.fill(1); | 
| for (var [key, value] of sb.entries()) { | 
|   assert.deepStrictEqual(value, ones[key]); | 
| } | 
|   | 
| // underlying ArrayBuffer should have the same length | 
| assert.strictEqual(sb.buffer.byteLength, 4); | 
|   | 
| // should work without new | 
| sb = SlowBuffer(4); | 
| assert(sb instanceof Buffer); | 
| assert.strictEqual(sb.length, 4); | 
| sb.fill(1); | 
| for (var [key, value] of sb.entries()) { | 
|   assert.deepStrictEqual(value, ones[key]); | 
| } | 
|   | 
| // should work with edge cases | 
| assert.strictEqual(SlowBuffer(0).length, 0); | 
| try { | 
|   assert.strictEqual( | 
|     SlowBuffer(buffer.kMaxLength).length, buffer.kMaxLength); | 
| } catch (e) { | 
|   assert.equal(e.message, 'Array buffer allocation failed'); | 
| } | 
|   | 
| // should work with number-coercible values | 
| assert.strictEqual(SlowBuffer('6').length, 6); | 
| assert.strictEqual(SlowBuffer(true).length, 1); | 
|   | 
| // should create zero-length buffer if parameter is not a number | 
| assert.strictEqual(SlowBuffer().length, 0); | 
| assert.strictEqual(SlowBuffer(NaN).length, 0); | 
| assert.strictEqual(SlowBuffer({}).length, 0); | 
| assert.strictEqual(SlowBuffer('string').length, 0); | 
|   | 
| // should throw with invalid length | 
| assert.throws(function() { | 
|   SlowBuffer(Infinity); | 
| }, 'invalid Buffer length'); | 
| assert.throws(function() { | 
|   SlowBuffer(-1); | 
| }, 'invalid Buffer length'); | 
| assert.throws(function() { | 
|   SlowBuffer(buffer.kMaxLength + 1); | 
| }, 'invalid Buffer length'); |