deno.land / std@0.166.0 / node / _tools / test / parallel / test-stream-readable-pause-and-resume.js

test-stream-readable-pause-and-resume.js
نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// deno-fmt-ignore-file// deno-lint-ignore-file
// Copyright Joyent and Node contributors. All rights reserved. MIT license.// Taken from Node 18.12.0// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually
'use strict';
const common = require('../common');const assert = require('assert');const { Readable } = require('stream');
let ticks = 18;let expectedData = 19;
const rs = new Readable({ objectMode: true, read: () => { if (ticks-- > 0) return process.nextTick(() => rs.push({})); rs.push({}); rs.push(null); }});
rs.on('end', common.mustCall());readAndPause();
function readAndPause() { // Does a on(data) -> pause -> wait -> resume -> on(data) ... loop. // Expects on(data) to never fire if the stream is paused. const ondata = common.mustCall((data) => { rs.pause();
expectedData--; if (expectedData <= 0) return;
setImmediate(function() { rs.removeListener('data', ondata); readAndPause(); rs.resume(); }); }, 1); // Only call ondata once
rs.on('data', ondata);}
{ const readable = new Readable({ read() {} });
function read() {}
readable.setEncoding('utf8'); readable.on('readable', read); readable.removeListener('readable', read); readable.pause();
process.nextTick(function() { assert(readable.isPaused()); });}
{ const { PassThrough } = require('stream');
const source3 = new PassThrough(); const target3 = new PassThrough();
const chunk = Buffer.allocUnsafe(1000); while (target3.write(chunk));
source3.pipe(target3); target3.on('drain', common.mustCall(() => { assert(!source3.isPaused()); })); target3.on('data', () => {});}
std

Version Info

Tagged at
a year ago