Skip to content

Commit fd195b4

Browse files
italoacasasMylesBorins
authored andcommitted
test: stream readable resumeScheduled state
PR-URL: #10299 Ref: #8683 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
1 parent 135a7c9 commit fd195b4

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
'use strict';
2+
const common = require('../common');
3+
4+
// Testing Readable Stream resumeScheduled state
5+
6+
const assert = require('assert');
7+
const stream = require('stream');
8+
const Readable = stream.Readable;
9+
const Writable = stream.Writable;
10+
11+
{
12+
// pipe() test case
13+
const r = new Readable({ read() {} });
14+
const w = new Writable();
15+
16+
// resumeScheduled should start = `false`.
17+
assert.strictEqual(r._readableState.resumeScheduled, false);
18+
19+
// calling pipe() should change the state value = true.
20+
r.pipe(w);
21+
assert.strictEqual(r._readableState.resumeScheduled, true);
22+
23+
process.nextTick(common.mustCall(() => {
24+
assert.strictEqual(r._readableState.resumeScheduled, false);
25+
}));
26+
}
27+
28+
{
29+
// 'data' listener test case
30+
const r = new Readable({ read() {} });
31+
32+
// resumeScheduled should start = `false`.
33+
assert.strictEqual(r._readableState.resumeScheduled, false);
34+
35+
r.push(Buffer.from([1, 2, 3]));
36+
37+
// adding 'data' listener should change the state value
38+
r.on('data', common.mustCall(() => {
39+
assert.strictEqual(r._readableState.resumeScheduled, false);
40+
}));
41+
assert.strictEqual(r._readableState.resumeScheduled, true);
42+
43+
process.nextTick(common.mustCall(() => {
44+
assert.strictEqual(r._readableState.resumeScheduled, false);
45+
}));
46+
}
47+
48+
{
49+
// resume() test case
50+
const r = new Readable({ read() {} });
51+
52+
// resumeScheduled should start = `false`.
53+
assert.strictEqual(r._readableState.resumeScheduled, false);
54+
55+
// Calling resume() should change the state value.
56+
r.resume();
57+
assert.strictEqual(r._readableState.resumeScheduled, true);
58+
59+
r.on('resume', common.mustCall(() => {
60+
// The state value should be `false` again
61+
assert.strictEqual(r._readableState.resumeScheduled, false);
62+
}));
63+
64+
process.nextTick(common.mustCall(() => {
65+
assert.strictEqual(r._readableState.resumeScheduled, false);
66+
}));
67+
}

0 commit comments

Comments
 (0)