diff options
| author | Florian Dold <florian.dold@gmail.com> | 2016-10-10 03:43:44 +0200 | 
|---|---|---|
| committer | Florian Dold <florian.dold@gmail.com> | 2016-10-10 03:43:44 +0200 | 
| commit | abd94a7f5a50f43c797a11b53549ae48fff667c3 (patch) | |
| tree | ab8ed457f65cdd72e13e0571d2975729428f1551 /node_modules/multipipe/test | |
| parent | a0247c6a3fd6a09a41a7e35a3441324c4dcb58be (diff) | |
add node_modules to address #4364
Diffstat (limited to 'node_modules/multipipe/test')
| -rw-r--r-- | node_modules/multipipe/test/multipipe.js | 141 | 
1 files changed, 141 insertions, 0 deletions
| diff --git a/node_modules/multipipe/test/multipipe.js b/node_modules/multipipe/test/multipipe.js new file mode 100644 index 000000000..078d2e031 --- /dev/null +++ b/node_modules/multipipe/test/multipipe.js @@ -0,0 +1,141 @@ +var assert = require('assert'); +var pipe = require('..'); +var Stream = require('stream'); + +describe('pipe(a)', function(){ +  it('should return a', function(){ +    var readable = Readable(); +    var stream = pipe(readable); +    assert.equal(stream, readable); +  }); +}); + +describe('pipe(a, b, c)', function(){ +  it('should pipe internally', function(done){ +    pipe(Readable(), Transform(), Writable(done)); +  }); +   +  it('should be writable', function(done){ +    var stream = pipe(Transform(), Writable(done)); +    assert(stream.writable); +    Readable().pipe(stream); +  }); + +  it('should be readable', function(done){ +    var stream = pipe(Readable(), Transform()); +    assert(stream.readable); +    stream.pipe(Writable(done)); +  }); +   +  it('should be readable and writable', function(done){ +    var stream = pipe(Transform(), Transform()); +    assert(stream.readable); +    assert(stream.writable); +    Readable() +    .pipe(stream) +    .pipe(Writable(done)); +  }); +  +  describe('errors', function(){ +    it('should reemit', function(done){ +      var a = Transform(); +      var b = Transform(); +      var c = Transform(); +      var stream = pipe(a, b, c); +      var err = new Error; +      var i = 0; +       +      stream.on('error', function(_err){ +        i++; +        assert.equal(_err, err); +        assert(i <= 3); +        if (i == 3) done(); +      }); +       +      a.emit('error', err); +      b.emit('error', err); +      c.emit('error', err); +    }); + +    it('should not reemit endlessly', function(done){ +      var a = Transform(); +      var b = Transform(); +      var c = Transform(); +      c.readable = false; +      var stream = pipe(a, b, c); +      var err = new Error; +      var i = 0; +       +      stream.on('error', function(_err){ +        i++; +        assert.equal(_err, err); +        assert(i <= 3); +        if (i == 3) done(); +      }); +       +      a.emit('error', err); +      b.emit('error', err); +      c.emit('error', err); +    }); +  }); +}); + +describe('pipe(a, b, c, fn)', function(){ +  it('should call on finish', function(done){ +    var finished = false; +    var a = Readable(); +    var b = Transform(); +    var c = Writable(function(){ +      finished = true; +    }); + +    pipe(a, b, c, function(err){ +      assert(!err); +      assert(finished); +      done(); +    }); +  }); + +  it('should call with error once', function(done){ +    var a = Readable(); +    var b = Transform(); +    var c = Writable(); +    var err = new Error; + +    pipe(a, b, c, function(err){ +      assert(err); +      done(); +    }); + +    a.emit('error', err); +    b.emit('error', err); +    c.emit('error', err); +  }); +}); + +function Readable(){ +  var readable = new Stream.Readable({ objectMode: true }); +  readable._read = function(){ +    this.push('a'); +    this.push(null); +  }; +  return readable; +} + +function Transform(){ +  var transform = new Stream.Transform({ objectMode: true }); +  transform._transform = function(chunk, _, done){ +    done(null, chunk.toUpperCase()); +  }; +  return transform; +} + +function Writable(cb){ +  var writable = new Stream.Writable({ objectMode: true }); +  writable._write = function(chunk, _, done){ +    assert.equal(chunk, 'A'); +    done(); +    cb(); +  }; +  return writable; +} | 
