45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
"use strict";
|
|
|
|
var test = require("tap").test;
|
|
var RandomChunkStream = require('./randomchunkstream');
|
|
var stream = require('stream');
|
|
|
|
test("RandomChunkStream", function(t) {
|
|
var s = new RandomChunkStream({size: 10000, maxchunksize:10});
|
|
t.equal(s.size, 10000);
|
|
t.equal(s.maxchunksize, 10);
|
|
t.type(s.buffer, 'Buffer');
|
|
t.equal(s.cursor, 0);
|
|
var p = new stream.PassThrough({encoding:'binary'});
|
|
var counts = 0, countp = 0, sizes = 0, sizep = 0;
|
|
var destbuf = Buffer.allocUnsafeSlow(10000);
|
|
var deststr = '';
|
|
p.on('data', function(data) {
|
|
t.type(data, 'string');
|
|
t.ok(data.length <= 10);
|
|
deststr += data;
|
|
sizep += data.length;
|
|
countp++;
|
|
});
|
|
s.pipe(p);
|
|
s.on('data', function(data) {
|
|
t.type(data, 'Buffer');
|
|
t.ok(data.length <= 10);
|
|
data.copy(destbuf, sizes);
|
|
sizes += data.length;
|
|
counts++;
|
|
});
|
|
s.on('end', function() {
|
|
t.equal(sizes, 10000);
|
|
t.ok(counts >= 10000/10 );
|
|
t.equal(s.cursor, 10000);
|
|
t.deepEqual(s.buffer, destbuf);
|
|
p.on('end', function() {
|
|
t.equal(sizep, 10000);
|
|
t.ok(countp >= 10000/10 );
|
|
t.strictEqual(s.buffer.toString('binary'), deststr);
|
|
t.end();
|
|
});
|
|
});
|
|
});
|