pipe.js 1.2 KB

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