deno.land / std@0.166.0 / node / _tools / test / parallel / test-stream-readable-object-multi-push-async.js
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191// 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');
const MAX = 42;const BATCH = 10;
{ const readable = new Readable({ objectMode: true, read: common.mustCall(function() { console.log('>> READ'); fetchData((err, data) => { if (err) { this.destroy(err); return; }
if (data.length === 0) { console.log('pushing null'); this.push(null); return; }
console.log('pushing'); data.forEach((d) => this.push(d)); }); }, Math.floor(MAX / BATCH) + 2) });
let i = 0; function fetchData(cb) { if (i > MAX) { setTimeout(cb, 10, null, []); } else { const array = []; const max = i + BATCH; for (; i < max; i++) { array.push(i); } setTimeout(cb, 10, null, array); } }
readable.on('readable', () => { let data; console.log('readable emitted'); while ((data = readable.read()) !== null) { console.log(data); } });
readable.on('end', common.mustCall(() => { assert.strictEqual(i, (Math.floor(MAX / BATCH) + 1) * BATCH); }));}
{ const readable = new Readable({ objectMode: true, read: common.mustCall(function() { console.log('>> READ'); fetchData((err, data) => { if (err) { this.destroy(err); return; }
if (data.length === 0) { console.log('pushing null'); this.push(null); return; }
console.log('pushing'); data.forEach((d) => this.push(d)); }); }, Math.floor(MAX / BATCH) + 2) });
let i = 0; function fetchData(cb) { if (i > MAX) { setTimeout(cb, 10, null, []); } else { const array = []; const max = i + BATCH; for (; i < max; i++) { array.push(i); } setTimeout(cb, 10, null, array); } }
readable.on('data', (data) => { console.log('data emitted', data); });
readable.on('end', common.mustCall(() => { assert.strictEqual(i, (Math.floor(MAX / BATCH) + 1) * BATCH); }));}
{ const readable = new Readable({ objectMode: true, read: common.mustCall(function() { console.log('>> READ'); fetchData((err, data) => { if (err) { this.destroy(err); return; }
console.log('pushing'); data.forEach((d) => this.push(d));
if (data[BATCH - 1] >= MAX) { console.log('pushing null'); this.push(null); } }); }, Math.floor(MAX / BATCH) + 1) });
let i = 0; function fetchData(cb) { const array = []; const max = i + BATCH; for (; i < max; i++) { array.push(i); } setTimeout(cb, 10, null, array); }
readable.on('data', (data) => { console.log('data emitted', data); });
readable.on('end', common.mustCall(() => { assert.strictEqual(i, (Math.floor(MAX / BATCH) + 1) * BATCH); }));}
{ const readable = new Readable({ objectMode: true, read: common.mustNotCall() });
readable.on('data', common.mustNotCall());
readable.push(null);
let nextTickPassed = false; process.nextTick(() => { nextTickPassed = true; });
readable.on('end', common.mustCall(() => { assert.strictEqual(nextTickPassed, true); }));}
{ const readable = new Readable({ objectMode: true, read: common.mustCall() });
readable.on('data', (data) => { console.log('data emitted', data); });
readable.on('end', common.mustCall());
setImmediate(() => { readable.push('aaa'); readable.push(null); });}
Version Info