mirror of
https://github.com/tiennm99/FBcount.git
synced 2026-06-05 14:12:14 +00:00
Init
This commit is contained in:
+153
@@ -0,0 +1,153 @@
|
||||
var concat = require('simple-concat')
|
||||
var MultiStream = require('../')
|
||||
var str = require('string-to-stream')
|
||||
var test = require('tape')
|
||||
var through = require('through')
|
||||
|
||||
test('combine streams', function (t) {
|
||||
var streams = [
|
||||
str('1'),
|
||||
str('2'),
|
||||
str('3')
|
||||
]
|
||||
|
||||
var stream = MultiStream(streams)
|
||||
.on('error', function (err) {
|
||||
t.fail(err)
|
||||
})
|
||||
|
||||
concat(stream, function (err, data) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), '123')
|
||||
t.end()
|
||||
})
|
||||
})
|
||||
|
||||
test('combine streams (classic)', function (t) {
|
||||
var streams = [
|
||||
through(),
|
||||
through(),
|
||||
through()
|
||||
]
|
||||
|
||||
var stream = MultiStream(streams)
|
||||
.on('error', function (err) {
|
||||
t.fail(err)
|
||||
})
|
||||
|
||||
concat(stream, function (err, data) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), '123')
|
||||
t.end()
|
||||
})
|
||||
|
||||
streams[0].end('1')
|
||||
streams[1].end('2')
|
||||
streams[2].end('3')
|
||||
})
|
||||
|
||||
test('lazy stream creation', function (t) {
|
||||
var streams = [
|
||||
str('1'),
|
||||
function () {
|
||||
return str('2')
|
||||
},
|
||||
function () {
|
||||
return str('3')
|
||||
}
|
||||
]
|
||||
|
||||
var stream = MultiStream(streams)
|
||||
.on('error', function (err) {
|
||||
t.fail(err)
|
||||
})
|
||||
|
||||
concat(stream, function (err, data) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), '123')
|
||||
t.end()
|
||||
})
|
||||
})
|
||||
|
||||
test('lazy stream via factory', function (t) {
|
||||
var count = 0
|
||||
function factory (cb) {
|
||||
if (count > 2) return cb(null, null)
|
||||
count++
|
||||
setTimeout(function () {
|
||||
cb(null, str(count.toString()))
|
||||
}, 0)
|
||||
}
|
||||
|
||||
var stream = MultiStream(factory)
|
||||
.on('error', function (err) {
|
||||
t.fail(err)
|
||||
})
|
||||
|
||||
concat(stream, function (err, data) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), '123')
|
||||
t.end()
|
||||
})
|
||||
})
|
||||
|
||||
test('lazy stream via factory (factory returns error)', function (t) {
|
||||
t.plan(2)
|
||||
var count = 0
|
||||
function factory (cb) {
|
||||
if (count > 2) return cb(new Error('factory error'))
|
||||
count++
|
||||
setTimeout(function () {
|
||||
cb(null, str(count.toString()))
|
||||
}, 0)
|
||||
}
|
||||
|
||||
MultiStream(factory)
|
||||
.on('error', function (err) {
|
||||
t.pass('got error', err)
|
||||
})
|
||||
.on('close', function () {
|
||||
t.pass('got close')
|
||||
})
|
||||
.resume()
|
||||
})
|
||||
|
||||
test('lazy stream via factory (classic)', function (t) {
|
||||
var count = 0
|
||||
function factory (cb) {
|
||||
if (count > 2) return cb(null, null)
|
||||
count++
|
||||
var s = through()
|
||||
process.nextTick(function () {
|
||||
s.write(count.toString())
|
||||
s.end()
|
||||
})
|
||||
cb(null, s)
|
||||
}
|
||||
|
||||
var stream = MultiStream(factory)
|
||||
.on('error', function (err) {
|
||||
t.fail(err)
|
||||
})
|
||||
|
||||
concat(stream, function (err, data) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), '123')
|
||||
t.end()
|
||||
})
|
||||
})
|
||||
|
||||
test('throw immediate error', function (t) {
|
||||
t.plan(1)
|
||||
|
||||
var streams = [
|
||||
str('1'),
|
||||
through() // will emit 'error'
|
||||
]
|
||||
|
||||
MultiStream(streams).on('error', function (err) {
|
||||
t.ok(err instanceof Error, 'got expected error')
|
||||
})
|
||||
|
||||
streams[1].emit('error', new Error('immediate error!'))
|
||||
})
|
||||
Reference in New Issue
Block a user