mirror of
https://github.com/mgerb/mywebsite
synced 2026-01-12 02:42:48 +00:00
96 lines
1.7 KiB
JavaScript
96 lines
1.7 KiB
JavaScript
|
|
var es = require('event-stream')
|
|
, it = require('it-is')
|
|
|
|
function writeArray(array, stream) {
|
|
|
|
array.forEach( function (j) {
|
|
stream.write(j)
|
|
})
|
|
stream.end()
|
|
|
|
}
|
|
|
|
function readStream(stream, done) {
|
|
|
|
var array = []
|
|
stream.on('data', function (data) {
|
|
array.push(data)
|
|
})
|
|
stream.on('error', done)
|
|
stream.on('end', function (data) {
|
|
done(null, array)
|
|
})
|
|
|
|
}
|
|
|
|
exports ['simple map applied to a stream'] = function (test) {
|
|
|
|
var input = [1,2,3,7,5,3,1,9,0,2,4,6]
|
|
//create event stream from
|
|
|
|
var doubler = es.map(function (data, cb) {
|
|
cb(null, data * 2)
|
|
})
|
|
|
|
readStream(doubler, function (err, output) {
|
|
it(output).deepEqual(input.map(function (j) {
|
|
return j * 2
|
|
}))
|
|
test.done()
|
|
})
|
|
|
|
writeArray(input, doubler)
|
|
|
|
}
|
|
|
|
exports['pipe two maps together'] = function (test) {
|
|
|
|
var input = [1,2,3,7,5,3,1,9,0,2,4,6]
|
|
//create event stream from
|
|
function dd (data, cb) {
|
|
cb(null, data * 2)
|
|
}
|
|
var doubler1 = es.map(dd), doubler2 = es.map(dd)
|
|
|
|
doubler1.pipe(doubler2)
|
|
|
|
readStream(doubler2, function (err, output) {
|
|
it(output).deepEqual(input.map(function (j) {
|
|
return j * 4
|
|
}))
|
|
test.done()
|
|
})
|
|
|
|
writeArray(input, doubler1)
|
|
|
|
}
|
|
|
|
//next:
|
|
//
|
|
// test pause, resume and drian.
|
|
//
|
|
|
|
// then make a pipe joiner:
|
|
//
|
|
// plumber (evStr1, evStr2, evStr3, evStr4, evStr5)
|
|
//
|
|
// will return a single stream that write goes to the first
|
|
|
|
exports ['map will not call end until the callback'] = function (test) {
|
|
|
|
var ticker = es.map(function (data, cb) {
|
|
process.nextTick(function () {
|
|
cb(null, data * 2)
|
|
})
|
|
})
|
|
ticker.write('x')
|
|
|
|
ticker.end()
|
|
ticker.end()
|
|
ticker.end()
|
|
|
|
ticker.on('end', function () {
|
|
test.done()
|
|
})
|
|
} |