You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

154 lines
3.0 KiB

var Readable = require('stream').Readable
var tape = require('tape')
var union = require('./')
tape('numbers', function (t) {
var a = new Readable({objectMode: true})
var b = new Readable({objectMode: true})
a._read = b._read = function () {}
a.push(4)
a.push(6)
a.push(10)
a.push(14)
a.push(15)
a.push(20)
a.push(22)
a.push(null)
b.push(6)
b.push(11)
b.push(20)
b.push(null)
var u = union(a, b)
var expected = [4, 6, 10, 11, 14, 15, 20, 22]
u.on('data', function (data) {
t.same(data, expected.shift())
})
u.on('end', function () {
t.same(expected.length, 0, 'no more data')
t.end()
})
})
tape('string', function (t) {
var a = new Readable({objectMode: true})
var b = new Readable({objectMode: true})
a._read = b._read = function () {}
a.push('04')
a.push('06')
a.push('10')
a.push('14')
a.push('15')
a.push('20')
a.push('22')
a.push(null)
b.push('06')
b.push('11')
b.push('20')
b.push(null)
var u = union(a, b)
var expected = ['04', '06', '10', '11', '14', '15', '20', '22']
u.on('data', function (data) {
t.same(data, expected.shift())
})
u.on('end', function () {
t.same(expected.length, 0, 'no more data')
t.end()
})
})
tape('objects', function (t) {
var a = new Readable({objectMode: true})
var b = new Readable({objectMode: true})
a._read = b._read = function () {}
a.push({key: '04'})
a.push({key: '06'})
a.push({key: '10'})
a.push({key: '14'})
a.push({key: '15'})
a.push({key: '20'})
a.push({key: '22'})
a.push(null)
b.push({key: '06'})
b.push({key: '11'})
b.push({key: '20'})
b.push(null)
var u = union(a, b)
var expected = [{key: '04'}, {key: '06'}, {key: '10'}, {key: '11'}, {key: '14'}, {key: '15'}, {key: '20'}, {key: '22'}]
u.on('data', function (data) {
t.same(data, expected.shift())
})
u.on('end', function () {
t.same(expected.length, 0, 'no more data')
t.end()
})
})
tape('custom objects', function (t) {
var a = new Readable({objectMode: true})
var b = new Readable({objectMode: true})
a._read = b._read = function () {}
a.push({bar: '04'})
a.push({bar: '06'})
a.push({bar: '10'})
a.push({bar: '14'})
a.push({bar: '15'})
a.push({bar: '20'})
a.push({bar: '22'})
a.push(null)
b.push({bar: '06'})
b.push({bar: '11'})
b.push({bar: '20'})
b.push(null)
var u = union(a, b, function (data) {
return data.bar
})
var expected = [{bar: '04'}, {bar: '06'}, {bar: '10'}, {bar: '11'}, {bar: '14'}, {bar: '15'}, {bar: '20'}, {bar: '22'}]
u.on('data', function (data) {
t.same(data, expected.shift())
})
u.on('end', function () {
t.same(expected.length, 0, 'no more data')
t.end()
})
})
tape('destroy stream', function (t) {
var a = new Readable({objectMode: true})
var b = new Readable({objectMode: true})
a._read = function () {}
b._read = function () {}
t.plan(2)
a.destroy = function () {
t.ok(true)
}
b.destroy = function () {
t.ok(true)
}
union(a, b).destroy()
})