| |
| var Writable = require('../lib/lazystream').Writable; |
| var DummyWritable = require('./helper').DummyWritable; |
| |
| exports.writable = { |
| options: function(test) { |
| test.expect(3); |
| |
| var writable = new Writable(function(options) { |
| test.ok(this instanceof Writable, "Writable should bind itself to callback's this"); |
| test.equal(options.encoding, "utf-8", "Writable should make options accessible to callback"); |
| this.ok = true; |
| return new DummyWritable([]); |
| }, {encoding: "utf-8"}); |
| |
| writable.write("test"); |
| |
| test.ok(writable.ok); |
| |
| test.done(); |
| }, |
| dummy: function(test) { |
| var expected = [ 'line1\n', 'line2\n' ]; |
| var actual = []; |
| |
| test.expect(0); |
| |
| var dummy = new DummyWritable(actual); |
| |
| expected.forEach(function(item) { |
| dummy.write(new Buffer(item)); |
| }); |
| test.done(); |
| }, |
| streams2: function(test) { |
| var expected = [ 'line1\n', 'line2\n' ]; |
| var actual = []; |
| var instantiated = false; |
| |
| test.expect(2); |
| |
| var writable = new Writable(function() { |
| instantiated = true; |
| return new DummyWritable(actual); |
| }); |
| |
| test.equal(instantiated, false, 'DummyWritable should only be instantiated when it is needed'); |
| |
| writable.on('end', function() { |
| test.equal(actual.join(''), expected.join(''), 'Writable should not change the data of the underlying stream'); |
| test.done(); |
| }); |
| |
| expected.forEach(function(item) { |
| writable.write(new Buffer(item)); |
| }); |
| writable.end(); |
| } |
| }; |