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); });