const tape = require('tape') | |
const tee = require('./') | |
const { Readable } = require('streamx') | |
tape('throttled by eachother', function (t) { | |
const r = new Readable() | |
for (let i = 0; i < 1000; i++) { | |
r.push(Buffer.alloc(1000)) | |
} | |
const [a, b] = tee(r) | |
let aTicks = 0 | |
a.on('data', function (data) { | |
aTicks++ | |
}) | |
setTimeout(() => b.read(), 100) | |
setTimeout(() => { | |
t.same(aTicks, 18) | |
t.end() | |
}, 200) | |
}) | |
tape('does not premature destroy', function (t) { | |
const r = new Readable() | |
const [a, b] = tee(r) | |
r.push('a') | |
r.push('b') | |
r.push('c') | |
r.push(null) | |
setTimeout(() => { | |
const aSeen = [] | |
const bSeen = [] | |
a.on('data', function (data) { | |
aSeen.push(data) | |
}) | |
a.on('end', function () { | |
aSeen.push(null) | |
}) | |
b.on('data', function (data) { | |
bSeen.push(data) | |
}) | |
b.on('end', function () { | |
bSeen.push(null) | |
}) | |
let missing = 2 | |
a.on('close', onclose) | |
b.on('close', onclose) | |
function onclose () { | |
if (--missing === 0) { | |
t.same(aSeen, ['a', 'b', 'c', null]) | |
t.same(bSeen, ['a', 'b', 'c', null]) | |
t.end() | |
} | |
} | |
}, 200) | |
}) | |