polymech-astro/packages/node-murmurhash-native/test/test.randomchunkstream.js
2025-08-25 08:22:26 +02:00

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