UNPKG

async-lazystream

Version:

Open Node Streams on demand with async support (original code from https://github.com/jpommerening/node-lazystream)

72 lines (56 loc) 2.16 kB
const stream = require('../lib/lazystream'); const helper = require('./helper'); exports.pipe = { readwrite: function(test) { const expected = ['line1\n', 'line2\n']; const actual = []; let readableInstantiated = false; let writableInstantiated = false; test.expect(3); const readable = new stream.Readable(function() { readableInstantiated = true; return new helper.DummyReadable([].concat(expected)); }); const writable = new stream.Writable(function() { writableInstantiated = true; return new helper.DummyWritable(actual); }); test.equal(readableInstantiated, false, 'DummyReadable should only be instantiated when it is needed'); test.equal(writableInstantiated, false, 'DummyWritable should only be instantiated when it is needed'); writable.on('end', function() { test.equal(actual.join(''), expected.join(''), 'Piping on demand streams should keep data intact'); test.done(); }); readable.pipe(writable); }, async_readwrite: function(test) { const expected = ['line1\n', 'line2\n']; const actual = []; let readableInstantiated = false; let writableInstantiated = false; test.expect(3); const readable = new stream.Readable(function() { return new Promise((resolve) => { setTimeout(() => { readableInstantiated = true; resolve(new helper.DummyReadable([].concat(expected))); }, 10); }); }); const writable = new stream.Writable(function() { return new Promise((resolve) => { setTimeout(() => { writableInstantiated = true; resolve(new helper.DummyWritable(actual)); }, 10); }); }); test.equal(readableInstantiated, false, 'DummyReadable should only be instantiated when it is needed'); test.equal(writableInstantiated, false, 'DummyWritable should only be instantiated when it is needed'); writable.on('end', function() { test.equal(actual.join(''), expected.join(''), 'Piping on demand streams should keep data intact'); test.done(); }); readable.pipe(writable); }, };