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.
49 lines
1.2 KiB
49 lines
1.2 KiB
var binary = require('../'); |
|
var test = require('tap').test; |
|
var Stream = require('stream').Stream; |
|
|
|
test('loop', function (t) { |
|
t.plan(3 * 2 + 1); |
|
|
|
var rs = new Stream; |
|
rs.readable = true; |
|
|
|
var ws = binary() |
|
.loop(function (end, vars) { |
|
t.strictEqual(vars, this.vars); |
|
this |
|
.word16lu('a') |
|
.word8u('b') |
|
.word8s('c') |
|
.tap(function (vars_) { |
|
t.strictEqual(vars, vars_); |
|
if (vars.c < 0) end(); |
|
}) |
|
; |
|
}) |
|
.tap(function (vars) { |
|
t.same(vars, { a : 1337, b : 55, c : -5 }); |
|
}) |
|
; |
|
rs.pipe(ws); |
|
|
|
setTimeout(function () { |
|
rs.emit('data', new Buffer([ 2, 10, 88 ])); |
|
}, 10); |
|
setTimeout(function () { |
|
rs.emit('data', new Buffer([ 100, 3, 6, 242, 30 ])); |
|
}, 20); |
|
setTimeout(function () { |
|
rs.emit('data', new Buffer([ 60, 60, 199, 44 ])); |
|
}, 30); |
|
|
|
setTimeout(function () { |
|
rs.emit('data', new Buffer([ 57, 5 ])); |
|
}, 80); |
|
setTimeout(function () { |
|
rs.emit('data', new Buffer([ 55, 251 ])); |
|
}, 90); |
|
setTimeout(function () { |
|
rs.emit('end'); |
|
}, 100); |
|
});
|
|
|