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.
159 lines
3.1 KiB
159 lines
3.1 KiB
var pull = require('pull-stream') |
|
var cat = require('../') |
|
var test = require('tape') |
|
var Pushable = require('pull-pushable') |
|
var Abortable = require('pull-abortable') |
|
|
|
test('cat', function (t) { |
|
pull( |
|
cat([pull.values([1,2,3]), pull.values([4,5,6])]), |
|
pull.collect(function (err, ary) { |
|
console.log(err, ary) |
|
t.notOk(err) |
|
t.deepEqual(ary, [1,2,3,4,5,6]) |
|
t.end() |
|
}) |
|
) |
|
}) |
|
|
|
test('cat - with empty', function (t) { |
|
pull( |
|
cat([pull.values([1,2,3]), null, pull.values([4,5,6])]), |
|
pull.collect(function (err, ary) { |
|
console.log(err, ary) |
|
t.notOk(err) |
|
t.deepEqual(ary, [1,2,3,4,5,6]) |
|
t.end() |
|
}) |
|
) |
|
}) |
|
|
|
test('cat - with empty stream', function (t) { |
|
var ended = false |
|
var justEnd = function (err, cb) { ended = true; cb(true) } |
|
|
|
pull( |
|
cat([pull.values([1,2,3]), justEnd, pull.values([4,5,6])]), |
|
pull.collect(function (err, ary) { |
|
console.log(err, ary) |
|
t.ok(ended) |
|
t.notOk(err) |
|
t.deepEqual(ary, [1,2,3,4,5,6]) |
|
t.end() |
|
}) |
|
) |
|
}) |
|
|
|
|
|
|
|
test('abort - with empty', function (t) { |
|
pull( |
|
cat([pull.values([1,2,3]), null, pull.values([4,5,6])]), |
|
function (read) { |
|
read(true, function (err) { |
|
t.equal(err, true) |
|
t.end() |
|
}) |
|
} |
|
) |
|
}) |
|
|
|
test('error', function (t) { |
|
var err = new Error('test error') |
|
pull( |
|
cat([pull.values([1,2,3]), function (_, cb) { |
|
cb(err) |
|
}]), |
|
pull.collect(function (_err) { |
|
console.log('COLLECT END', _err) |
|
t.equal(_err, err) |
|
t.end() |
|
}) |
|
) |
|
}) |
|
|
|
test('abort stalled', function (t) { |
|
var err = new Error('intentional'), n = 2 |
|
var abortable = Abortable() |
|
var pushable = Pushable(function (_err) { |
|
t.equal(_err, err) |
|
next() |
|
}) |
|
|
|
pushable.push(4) |
|
|
|
pull( |
|
cat([pull.values([1,2,3]), undefined, pushable]), |
|
abortable, |
|
pull.drain(function (item) { |
|
if(item == 4) |
|
process.nextTick(function () { |
|
abortable.abort(err) |
|
}) |
|
}, function (err) { |
|
next() |
|
}) |
|
) |
|
|
|
function next () { |
|
if(--n) return |
|
t.end() |
|
} |
|
}) |
|
|
|
test('abort empty', function (t) { |
|
cat([])(true, function (end) { |
|
t.equal(end, true) |
|
t.end() |
|
}) |
|
}) |
|
|
|
test('error + undefined', function (t) { |
|
var err = new Error('test error') |
|
pull( |
|
cat([pull.values([1,2,3]), function (_, cb) { |
|
cb(err) |
|
}, undefined]), |
|
pull.collect(function (_err) { |
|
t.equal(_err, err) |
|
t.end() |
|
}) |
|
) |
|
}) |
|
|
|
test('take cat', function (t) { |
|
pull( |
|
cat([ |
|
pull(pull.values([1,2,3]), pull.take(2)), |
|
pull(pull.values([8,7,6,5]), pull.take(3)), |
|
]), |
|
pull.collect(function (err, data) { |
|
t.error(err) |
|
t.deepEqual(data, [1,2,8,7,6]) |
|
t.end() |
|
}) |
|
) |
|
}) |
|
|
|
test('abort streams after error', function (t) { |
|
var err = new Error('test error') |
|
var aborted = false |
|
pull( |
|
cat([pull.values([1,2,3]), function (_, cb) { |
|
cb(err) |
|
}, function (_err, cb) { |
|
//this stream should be aborted. |
|
aborted = true |
|
t.strictEqual(_err, err) |
|
cb() |
|
}]), |
|
pull.collect(function (_err) { |
|
t.equal(aborted, true) |
|
t.equal(_err, err) |
|
t.end() |
|
}) |
|
) |
|
}) |
|
|
|
|
|
|
|
|