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
						
					
					
				
 | 
						|
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();
 | 
						|
  }
 | 
						|
};
 |