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