• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Flags: --expose-internals
2'use strict';
3
4require('../common');
5const assert = require('assert');
6const { validateOffsetLengthWrite } = require('internal/fs/utils');
7const { kMaxLength } = require('buffer');
8
9// RangeError when offset > byteLength
10{
11  const offset = 100;
12  const length = 100;
13  const byteLength = 50;
14  assert.throws(
15    () => validateOffsetLengthWrite(offset, length, byteLength),
16    {
17      code: 'ERR_OUT_OF_RANGE',
18      name: 'RangeError',
19      message: 'The value of "offset" is out of range. ' +
20               `It must be <= ${byteLength}. Received ${offset}`
21    }
22  );
23}
24
25// RangeError when byteLength > kMaxLength, and length > kMaxLength - offset .
26{
27  const offset = kMaxLength;
28  const length = 100;
29  const byteLength = kMaxLength + 1;
30  assert.throws(
31    () => validateOffsetLengthWrite(offset, length, byteLength),
32    {
33      code: 'ERR_OUT_OF_RANGE',
34      name: 'RangeError',
35      message: 'The value of "length" is out of range. ' +
36               `It must be <= ${kMaxLength - offset}. Received ${length}`
37    }
38  );
39}
40
41// RangeError when byteLength < kMaxLength, and length > byteLength - offset .
42{
43  const offset = kMaxLength - 150;
44  const length = 200;
45  const byteLength = kMaxLength - 100;
46  assert.throws(
47    () => validateOffsetLengthWrite(offset, length, byteLength),
48    {
49      code: 'ERR_OUT_OF_RANGE',
50      name: 'RangeError',
51      message: 'The value of "length" is out of range. ' +
52               `It must be <= ${byteLength - offset}. Received ${length}`
53    }
54  );
55}
56