loop.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. var binary = require('../');
  2. var test = require('tap').test;
  3. var EventEmitter = require('events').EventEmitter;
  4. test('loop', function (t) {
  5. t.plan(3 * 2 + 1);
  6. var em = new EventEmitter;
  7. binary.stream(em)
  8. .loop(function (end, vars) {
  9. t.strictEqual(vars, this.vars);
  10. this
  11. .word16lu('a')
  12. .word8u('b')
  13. .word8s('c')
  14. .tap(function (vars_) {
  15. t.strictEqual(vars, vars_);
  16. if (vars.c < 0) end();
  17. })
  18. ;
  19. })
  20. .tap(function (vars) {
  21. t.same(vars, { a : 1337, b : 55, c : -5 });
  22. })
  23. ;
  24. setTimeout(function () {
  25. em.emit('data', new Buffer([ 2, 10, 88 ]));
  26. }, 10);
  27. setTimeout(function () {
  28. em.emit('data', new Buffer([ 100, 3, 6, 242, 30 ]));
  29. }, 20);
  30. setTimeout(function () {
  31. em.emit('data', new Buffer([ 60, 60, 199, 44 ]));
  32. }, 30);
  33. setTimeout(function () {
  34. em.emit('data', new Buffer([ 57, 5 ]));
  35. }, 80);
  36. setTimeout(function () {
  37. em.emit('data', new Buffer([ 55, 251 ]));
  38. }, 90);
  39. });