1'use strict';
2
3const common = require('../common');
4const { Duplex } = require('stream');
5const assert = require('assert');
6
7{
8  const duplex = new Duplex({
9    readable: false
10  });
11  assert.strictEqual(duplex.readable, false);
12  duplex.push('asd');
13  duplex.on('error', common.mustCall((err) => {
14    assert.strictEqual(err.code, 'ERR_STREAM_PUSH_AFTER_EOF');
15  }));
16  duplex.on('data', common.mustNotCall());
17  duplex.on('end', common.mustNotCall());
18}
19
20{
21  const duplex = new Duplex({
22    writable: false,
23    write: common.mustNotCall()
24  });
25  assert.strictEqual(duplex.writable, false);
26  duplex.write('asd');
27  duplex.on('error', common.mustCall((err) => {
28    assert.strictEqual(err.code, 'ERR_STREAM_WRITE_AFTER_END');
29  }));
30  duplex.on('finish', common.mustNotCall());
31}
32
33{
34  const duplex = new Duplex({
35    readable: false
36  });
37  assert.strictEqual(duplex.readable, false);
38  duplex.on('data', common.mustNotCall());
39  duplex.on('end', common.mustNotCall());
40  async function run() {
41    for await (const chunk of duplex) {
42      assert(false, chunk);
43    }
44  }
45  run().then(common.mustCall());
46}
47