| Server IP : 68.183.124.220 / Your IP : 216.73.217.137 Web Server : Apache/2.4.18 (Ubuntu) System : Linux Sandbox-A 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : gavin ( 1000) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/gavin/workspace/happymandarin/node_modules/stream-consume/test/ |
Upload File : |
/*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");
});
});