// Flags: --no-warnings
'use strict';

require('../common');
const { Buffer } = require('node:buffer');
const assert = require('node:assert');
const { describe, it } = require('node:test');

describe('Using resizable ArrayBuffer with Buffer...', () => {
  it('works as expected', () => {
    const ab = new ArrayBuffer(10, { maxByteLength: 20 });
    const buffer = Buffer.from(ab, 1);
    assert.strictEqual(buffer.byteLength, 9);
    ab.resize(15);
    assert.strictEqual(buffer.byteLength, 14);
    ab.resize(5);
    assert.strictEqual(buffer.byteLength, 4);
  });

  it('works with the deprecated constructor also', () => {
    const ab = new ArrayBuffer(10, { maxByteLength: 20 });
    const buffer = new Buffer(ab, 1);
    assert.strictEqual(buffer.byteLength, 9);
    ab.resize(15);
    assert.strictEqual(buffer.byteLength, 14);
    ab.resize(5);
    assert.strictEqual(buffer.byteLength, 4);
  });
});
