Skip to content

Commit

Permalink
test: stream readable resumeScheduled state
Browse files Browse the repository at this point in the history
PR-URL: #10299
Ref: #8683
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
  • Loading branch information
italoacasas authored and MylesBorins committed Jan 24, 2017
1 parent 76b034e commit d644821
Showing 1 changed file with 67 additions and 0 deletions.
67 changes: 67 additions & 0 deletions test/parallel/test-stream-readable-resumeScheduled.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
'use strict';
const common = require('../common');

// Testing Readable Stream resumeScheduled state

const assert = require('assert');
const stream = require('stream');
const Readable = stream.Readable;
const Writable = stream.Writable;

{
// 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);
}));
}

0 comments on commit d644821

Please sign in to comment.