'use strict'; const common = require('../common'); // Testing Readable Stream resumeScheduled state const assert = require('assert'); const { Readable, Writable } = require('stream'); { // pipe() test case const r = new Readable({ read() {} }); const w = new Writable(); // resumeScheduled should start = `false`. assert.strictEqual(r._readableState.resumeScheduled, false); // Calling pipe() should change the state value = true. r.pipe(w); assert.strictEqual(r._readableState.resumeScheduled, true); process.nextTick(common.mustCall(() => { assert.strictEqual(r._readableState.resumeScheduled, false); })); } { // 'data' listener test case const r = new Readable({ read() {} }); // resumeScheduled should start = `false`. assert.strictEqual(r._readableState.resumeScheduled, false); r.push(Buffer.from([1, 2, 3])); // Adding 'data' listener should change the state value r.on('data', common.mustCall(() => { assert.strictEqual(r._readableState.resumeScheduled, false); })); assert.strictEqual(r._readableState.resumeScheduled, true); process.nextTick(common.mustCall(() => { assert.strictEqual(r._readableState.resumeScheduled, false); })); } { // resume() test case const r = new Readable({ read() {} }); // resumeScheduled should start = `false`. assert.strictEqual(r._readableState.resumeScheduled, false); // Calling resume() should change the state value. r.resume(); assert.strictEqual(r._readableState.resumeScheduled, true); r.on('resume', common.mustCall(() => { // The state value should be `false` again assert.strictEqual(r._readableState.resumeScheduled, false); })); process.nextTick(common.mustCall(() => { assert.strictEqual(r._readableState.resumeScheduled, false); })); }