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/stream-consume/test | |
| parent | a0247c6a3fd6a09a41a7e35a3441324c4dcb58be (diff) | |
add node_modules to address #4364
Diffstat (limited to 'node_modules/stream-consume/test')
| -rw-r--r-- | node_modules/stream-consume/test/tests.js | 180 | 
1 files changed, 180 insertions, 0 deletions
diff --git a/node_modules/stream-consume/test/tests.js b/node_modules/stream-consume/test/tests.js new file mode 100644 index 000000000..660e37a11 --- /dev/null +++ b/node_modules/stream-consume/test/tests.js @@ -0,0 +1,180 @@ +/*jshint node:true */ +/*global describe:false, it:false */ +"use strict"; + +var consume = require('../'); +var Stream = require('stream'); +var Readable = Stream.Readable; +var Writable = Stream.Writable; +var Duplex = Stream.Duplex; +var should = require('should'); +var through = require('through2'); +require('mocha'); + +describe('stream-consume', function() { + +    it('should cause a Readable stream to complete if it\'s not piped anywhere', function(done) { +        var rs = new Readable({highWaterMark: 2}); +        var a = 0; +        var ended = false; +        rs._read = function() { +            if (a++ < 100) { +                rs.push(a + ""); +            } else { +                ended = true; +                rs.push(null); +            } +        }; + +        rs.on("end", function() { +            a.should.be.above(99); +            ended.should.be.true; +            done(); +        }); + +        consume(rs); +    }); + +    it('should work with Readable streams in objectMode', function(done) { +        var rs = new Readable({highWaterMark: 2, objectMode: true}); +        var a = 0; +        var ended = false; +        rs._read = function() { +            if (a++ < 100) { +                rs.push(a); +            } else { +                ended = true; +                rs.push(null); +            } +        }; + +        rs.on("end", function() { +            a.should.be.above(99); +            ended.should.be.true; +            done(); +        }); + +        consume(rs); +    }); + +    it('should not interfere with a Readable stream that is piped somewhere', function(done) { +        var rs = new Readable({highWaterMark: 2}); +        var a = 0; +        var ended = false; +        rs._read = function() { +            if (a++ < 100) { +                rs.push("."); +            } else { +                ended = true; +                rs.push(null); +            } +        }; + +        var sizeRead = 0; +        var ws = new Writable({highWaterMark: 2}); +        ws._write = function(chunk, enc, next) { +            sizeRead += chunk.length; +            next(); +        } + +        ws.on("finish", function() { +            a.should.be.above(99); +            ended.should.be.true; +            sizeRead.should.equal(100); +            done(); +        }); + +        rs.pipe(ws); + +        consume(rs); +    }); + +    it('should not interfere with a Writable stream', function(done) { +        var rs = new Readable({highWaterMark: 2}); +        var a = 0; +        var ended = false; +        rs._read = function() { +            if (a++ < 100) { +                rs.push("."); +            } else { +                ended = true; +                rs.push(null); +            } +        }; + +        var sizeRead = 0; +        var ws = new Writable({highWaterMark: 2}); +        ws._write = function(chunk, enc, next) { +            sizeRead += chunk.length; +            next(); +        } + +        ws.on("finish", function() { +            a.should.be.above(99); +            ended.should.be.true; +            sizeRead.should.equal(100); +            done(); +        }); + +        rs.pipe(ws); + +        consume(ws); +    }); + +    it('should handle a Transform stream', function(done) { +        var rs = new Readable({highWaterMark: 2}); +        var a = 0; +        var ended = false; +        rs._read = function() { +            if (a++ < 100) { +                rs.push("."); +            } else { +                ended = true; +                rs.push(null); +            } +        }; + +        var sizeRead = 0; +        var flushed = false; +        var ts = through({highWaterMark: 2}, function(chunk, enc, cb) { +            sizeRead += chunk.length; +            this.push(chunk); +            cb(); +        }, function(cb) { +            flushed = true; +            cb(); +        }); + +        ts.on("end", function() { +            a.should.be.above(99); +            ended.should.be.true; +            sizeRead.should.equal(100); +            flushed.should.be.true; +            done(); +        }); + +        rs.pipe(ts); + +        consume(ts); +    }); + +    it('should handle a classic stream', function(done) { +        var rs = new Stream(); +        var ended = false; +        var i; + +        rs.on("end", function() { +            ended.should.be.true; +            done(); +        }); + +        consume(rs); + +        for (i = 0; i < 100; i++) { +            rs.emit("data", i); +        } +        ended = true; +        rs.emit("end"); +    }); + +});  | 
