| 'use strict'; |
| |
| const common = require('../common'); |
| const assert = require('assert'); |
| const { Readable, Writable } = require('stream'); |
| |
| // This test ensures that if have 'readable' listener |
| // on Readable instance it will not disrupt the pipe. |
| |
| { |
| let receivedData = ''; |
| const w = new Writable({ |
| write: (chunk, env, callback) => { |
| receivedData += chunk; |
| callback(); |
| }, |
| }); |
| |
| const data = ['foo', 'bar', 'baz']; |
| const r = new Readable({ |
| read: () => {}, |
| }); |
| |
| r.once('readable', common.mustCall()); |
| |
| r.pipe(w); |
| r.push(data[0]); |
| r.push(data[1]); |
| r.push(data[2]); |
| r.push(null); |
| |
| w.on('finish', common.mustCall(() => { |
| assert.strictEqual(receivedData, data.join('')); |
| })); |
| } |
| |
| { |
| let receivedData = ''; |
| const w = new Writable({ |
| write: (chunk, env, callback) => { |
| receivedData += chunk; |
| callback(); |
| }, |
| }); |
| |
| const data = ['foo', 'bar', 'baz']; |
| const r = new Readable({ |
| read: () => {}, |
| }); |
| |
| r.pipe(w); |
| r.push(data[0]); |
| r.push(data[1]); |
| r.push(data[2]); |
| r.push(null); |
| r.once('readable', common.mustCall()); |
| |
| w.on('finish', common.mustCall(() => { |
| assert.strictEqual(receivedData, data.join('')); |
| })); |
| } |