'use strict'; const common = require('../common'); const { Readable } = require('stream'); const assert = require('assert'); // basic { // Find it on Readable.prototype assert(Readable.prototype.hasOwnProperty('readableEnded')); } // event { const readable = new Readable(); readable._read = () => { // The state ended should start in false. assert.strictEqual(readable.readableEnded, false); readable.push('asd'); assert.strictEqual(readable.readableEnded, false); readable.push(null); assert.strictEqual(readable.readableEnded, false); }; readable.on('end', common.mustCall(() => { assert.strictEqual(readable.readableEnded, true); })); readable.on('data', common.mustCall(() => { assert.strictEqual(readable.readableEnded, false); })); } // Verifies no `error` triggered on multiple .push(null) invocations { const readable = new Readable(); readable.on('readable', () => { readable.read(); }); readable.on('error', common.mustNotCall()); readable.on('end', common.mustCall()); readable.push('a'); readable.push(null); readable.push(null); }