| |
| var stream = require('../lib/lazystream'); |
| var fs = require('fs'); |
| var tmpDir = 'test/tmp/'; |
| var readFile = 'test/data.md'; |
| var writeFile = tmpDir + 'data.md'; |
| |
| exports.fs = { |
| readwrite: function(test) { |
| var readfd, writefd; |
| |
| var readable = new stream.Readable(function() { |
| return fs.createReadStream(readFile) |
| .on('open', function(fd) { |
| readfd = fd; |
| }) |
| .on('close', function() { |
| readfd = undefined; |
| step(); |
| }); |
| }); |
| |
| var writable = new stream.Writable(function() { |
| return fs.createWriteStream(writeFile) |
| .on('open', function(fd) { |
| writefd = fd; |
| }) |
| .on('close', function() { |
| writefd = undefined; |
| step(); |
| }); |
| }); |
| |
| test.expect(3); |
| |
| test.equal(readfd, undefined, 'Input file should not be opened until read'); |
| test.equal(writefd, undefined, 'Output file should not be opened until write'); |
| |
| if (!fs.existsSync(tmpDir)) { |
| fs.mkdirSync(tmpDir); |
| } |
| if (fs.existsSync(writeFile)) { |
| fs.unlinkSync(writeFile); |
| } |
| |
| readable.on('end', function() { step(); }); |
| writable.on('end', function() { step(); }); |
| |
| var steps = 0; |
| function step() { |
| steps += 1; |
| if (steps == 4) { |
| var input = fs.readFileSync(readFile); |
| var output = fs.readFileSync(writeFile); |
| |
| test.ok(input >= output && input <= output, 'Should be equal'); |
| |
| fs.unlinkSync(writeFile); |
| fs.rmdirSync(tmpDir); |
| |
| test.done(); |
| } |
| }; |
| |
| readable.pipe(writable); |
| } |
| }; |
| |
| |