PDF_Generation_and_Automation/node_modules/multistream/test/basic.js
2025-08-24 12:01:08 +05:30

154 lines
2.9 KiB
JavaScript

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!'))
})