1'use strict';
2require('../common');
3
4const assert = require('assert');
5
6const buffer = require('buffer');
7const SlowBuffer = buffer.SlowBuffer;
8
9const kMaxLength = buffer.kMaxLength;
10const bufferMaxSizeMsg = {
11  code: 'ERR_INVALID_ARG_VALUE',
12  name: 'RangeError',
13  message: /^The argument 'size' is invalid\. Received [^"]*$/
14};
15
16assert.throws(() => Buffer((-1 >>> 0) + 2), bufferMaxSizeMsg);
17assert.throws(() => SlowBuffer((-1 >>> 0) + 2), bufferMaxSizeMsg);
18assert.throws(() => Buffer.alloc((-1 >>> 0) + 2), bufferMaxSizeMsg);
19assert.throws(() => Buffer.allocUnsafe((-1 >>> 0) + 2), bufferMaxSizeMsg);
20assert.throws(() => Buffer.allocUnsafeSlow((-1 >>> 0) + 2), bufferMaxSizeMsg);
21
22assert.throws(() => Buffer(kMaxLength + 1), bufferMaxSizeMsg);
23assert.throws(() => SlowBuffer(kMaxLength + 1), bufferMaxSizeMsg);
24assert.throws(() => Buffer.alloc(kMaxLength + 1), bufferMaxSizeMsg);
25assert.throws(() => Buffer.allocUnsafe(kMaxLength + 1), bufferMaxSizeMsg);
26assert.throws(() => Buffer.allocUnsafeSlow(kMaxLength + 1), bufferMaxSizeMsg);
27
28// issue GH-4331
29assert.throws(() => Buffer.allocUnsafe(0x100000001), bufferMaxSizeMsg);
30assert.throws(() => Buffer.allocUnsafe(0xFFFFFFFFF), bufferMaxSizeMsg);
31