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.
110 lines
2.1 KiB
110 lines
2.1 KiB
var tape = require('tape') |
|
var pull = require('pull-stream') |
|
var gate = require('../through') |
|
var peek = require('pull-peek') |
|
|
|
tape('simple resolve after', function (t) { |
|
|
|
var g = gate() |
|
|
|
pull( |
|
pull.values([1,2,3,4,5]), |
|
g, |
|
pull.collect(function (err, ary) { |
|
if(err) throw err |
|
t.deepEqual(ary, [5, 10, 15, 20, 25]) |
|
t.end() |
|
}) |
|
) |
|
|
|
g.resolve(pull.map(function (e) { return e * 5 })) |
|
|
|
}) |
|
|
|
tape('simple resolve before', function (t) { |
|
|
|
var g = gate() |
|
g.resolve(pull.map(function (e) { return e * 5 })) |
|
|
|
pull( |
|
pull.values([1,2,3,4,5]), |
|
g, |
|
pull.collect(function (err, ary) { |
|
if(err) throw err |
|
t.deepEqual(ary, [5, 10, 15, 20, 25]) |
|
t.end() |
|
}) |
|
) |
|
|
|
}) |
|
|
|
tape('simple resolve mid', function (t) { |
|
|
|
var g = gate() |
|
|
|
var source = pull(pull.values([1,2,3,4,5]), g) |
|
|
|
g.resolve(pull.map(function (e) { return e * 5 })) |
|
|
|
pull(source, |
|
pull.collect(function (err, ary) { |
|
if(err) throw err |
|
t.deepEqual(ary, [5, 10, 15, 20, 25]) |
|
t.end() |
|
}) |
|
) |
|
}) |
|
|
|
tape('resolve after read', function (t) { |
|
var g = gate(), resolved = false |
|
|
|
pull( |
|
pull.values([1,2,3,4,5]), |
|
function (read) { |
|
return function (abort, cb) { |
|
read(abort, function (end, data) { |
|
if(!resolved) { |
|
resolved = true |
|
g.resolve(pull.map(function (e) { return e * 5 })) |
|
} |
|
cb(end, data) |
|
}) |
|
} |
|
}, |
|
//peek always reads the first item, before it has been called. |
|
peek(), |
|
g, |
|
pull.collect(function (err, ary) { |
|
if(err) throw err |
|
t.deepEqual(ary, [5, 10, 15, 20, 25]) |
|
t.end() |
|
}) |
|
) |
|
|
|
}) |
|
|
|
tape('peek with resume', function (t) { |
|
|
|
var defer = gate() |
|
|
|
pull( |
|
pull.values([1,2,3,4,5]), |
|
defer, |
|
peek(function (end, data) { |
|
console.log('first', end, data) |
|
t.equal(data, 2) |
|
first = data |
|
}), |
|
pull.collect(function (err, ary) { |
|
if(err) throw err |
|
t.equal(first, 2) |
|
t.deepEqual(ary, [2,4,6,8,10]) |
|
t.end() |
|
}) |
|
) |
|
|
|
defer.resolve(pull.map(function (e) { |
|
return e*2 |
|
})) |
|
|
|
})
|
|
|