You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							70 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							70 lines
						
					
					
						
							1.6 KiB
						
					
					
				
 | 
						|
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);
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
 |