Skip to content

Commit

Permalink
test: stream readable resumeScheduled state
Browse files Browse the repository at this point in the history
PR-URL: nodejs#10299
Ref: nodejs#8683
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
  • Loading branch information
italoacasas authored and cjihrig committed Dec 20, 2016
1 parent fc40ae3 commit cc9b4b7
Showing 1 changed file with 65 additions and 0 deletions.
65 changes: 65 additions & 0 deletions test/parallel/test-stream-readable-resumeScheduled.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
'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);
}));
}

0 comments on commit cc9b4b7

Please sign in to comment.