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
			| 
											2 years ago
										 | 
 | ||
|  | 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); | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | 
 |