var Readable = require('../lib/lazystream').Readable; var DummyReadable = require('./helper').DummyReadable; exports.readable = { dummy: function(test) { var expected = [ 'line1\n', 'line2\n' ]; var actual = []; test.expect(1); new DummyReadable([].concat(expected)) .on('data', function(chunk) { actual.push(chunk.toString()); }) .on('end', function() { test.equal(actual.join(''), expected.join(''), 'DummyReadable should produce the data it was created with'); test.done(); }); }, options: function(test) { test.expect(3); var readable = new Readable(function(options) { test.ok(this instanceof Readable, "Readable should bind itself to callback's this"); test.equal(options.encoding, "utf-8", "Readable should make options accessible to callback"); this.ok = true; return new DummyReadable(["test"]); }, {encoding: "utf-8"}); readable.read(4); test.ok(readable.ok); test.done(); }, streams2: function(test) { var expected = [ 'line1\n', 'line2\n' ]; var actual = []; var instantiated = false; test.expect(2); var readable = new Readable(function() { instantiated = true; return new DummyReadable([].concat(expected)); }); test.equal(instantiated, false, 'DummyReadable should only be instantiated when it is needed'); readable.on('readable', function() { var chunk; while ((chunk = readable.read())) { actual.push(chunk.toString()); } }); readable.on('end', function() { test.equal(actual.join(''), expected.join(''), 'Readable should not change the data of the underlying stream'); test.done(); }); readable.read(0); }, resume: function(test) { var expected = [ 'line1\n', 'line2\n' ]; var actual = []; var instantiated = false; test.expect(2); var readable = new Readable(function() { instantiated = true; return new DummyReadable([].concat(expected)); }); readable.pause(); readable.on('data', function(chunk) { actual.push(chunk.toString()); }); readable.on('end', function() { test.equal(actual.join(''), expected.join(''), 'Readable should not change the data of the underlying stream'); test.done(); }); test.equal(instantiated, false, 'DummyReadable should only be instantiated when it is needed'); readable.resume(); } };