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.
		
		
		
		
		
			
		
			
				
					91 lines
				
				2.4 KiB
			
		
		
			
		
	
	
					91 lines
				
				2.4 KiB
			| 
											2 years ago
										 | 
 | ||
|  | 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(); | ||
|  |   } | ||
|  | }; |