// deno-fmt-ignore-file
// deno-lint-ignore-file

// Copyright Joyent and Node contributors. All rights reserved. MIT license.
// Taken from Node 18.12.1
// This file is automatically generated by `tools/node_compat/setup.ts`. Do not modify this file manually.

'use strict';

const common = require('../common');
const assert = require('assert');
const { Readable, Duplex } = require('stream');

{
  const readable = new Readable({
    read() {
    }
  });
  assert.strictEqual(readable.readableAborted, false);
  readable.destroy();
  assert.strictEqual(readable.readableAborted, true);
}

{
  const readable = new Readable({
    read() {
    }
  });
  assert.strictEqual(readable.readableAborted, false);
  readable.push(null);
  readable.destroy();
  assert.strictEqual(readable.readableAborted, true);
}

{
  const readable = new Readable({
    read() {
    }
  });
  assert.strictEqual(readable.readableAborted, false);
  readable.push('asd');
  readable.destroy();
  assert.strictEqual(readable.readableAborted, true);
}

{
  const readable = new Readable({
    read() {
    }
  });
  assert.strictEqual(readable.readableAborted, false);
  readable.push('asd');
  readable.push(null);
  assert.strictEqual(readable.readableAborted, false);
  readable.on('end', common.mustCall(() => {
    assert.strictEqual(readable.readableAborted, false);
    readable.destroy();
    assert.strictEqual(readable.readableAborted, false);
    queueMicrotask(() => {
      assert.strictEqual(readable.readableAborted, false);
    });
  }));
  readable.resume();
}

{
  const duplex = new Duplex({
    readable: false,
    write() {}
  });
  duplex.destroy();
  assert.strictEqual(duplex.readableAborted, false);
}