• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2
3const common = require('../common');
4const { Readable } = require('stream');
5const assert = require('assert');
6
7// basic
8{
9  // Find it on Readable.prototype
10  assert(Readable.prototype.hasOwnProperty('readableEnded'));
11}
12
13// event
14{
15  const readable = new Readable();
16
17  readable._read = () => {
18    // The state ended should start in false.
19    assert.strictEqual(readable.readableEnded, false);
20    readable.push('asd');
21    assert.strictEqual(readable.readableEnded, false);
22    readable.push(null);
23    assert.strictEqual(readable.readableEnded, false);
24  };
25
26  readable.on('end', common.mustCall(() => {
27    assert.strictEqual(readable.readableEnded, true);
28  }));
29
30  readable.on('data', common.mustCall(() => {
31    assert.strictEqual(readable.readableEnded, false);
32  }));
33}
34
35// Verifies no `error` triggered on multiple .push(null) invocations
36{
37  const readable = new Readable();
38
39  readable.on('readable', () => { readable.read(); });
40  readable.on('error', common.mustNotCall());
41  readable.on('end', common.mustCall());
42
43  readable.push('a');
44  readable.push(null);
45  readable.push(null);
46}
47