mirror of https://github.com/lukechilds/node.git
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.
155 lines
3.0 KiB
155 lines
3.0 KiB
8 years ago
|
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()
|
||
|
})
|