skip.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. var binary = require('../');
  2. var test = require('tap').test;
  3. var EventEmitter = require('events').EventEmitter;
  4. var seq = require('seq');
  5. test('skip', function (t) {
  6. t.plan(7);
  7. var em = new EventEmitter;
  8. var state = 0;
  9. binary(em)
  10. .word16lu('a')
  11. .tap(function () { state = 1 })
  12. .skip(7)
  13. .tap(function () { state = 2 })
  14. .word8('b')
  15. .tap(function () { state = 3 })
  16. .tap(function (vars) {
  17. t.same(state, 3);
  18. t.same(vars, {
  19. a : 2569,
  20. b : 8,
  21. });
  22. })
  23. ;
  24. seq()
  25. .seq(setTimeout, seq, 20)
  26. .seq(function () {
  27. t.same(state, 0);
  28. em.emit('data', new Buffer([ 9 ]));
  29. this(null);
  30. })
  31. .seq(setTimeout, seq, 5)
  32. .seq(function () {
  33. t.same(state, 0);
  34. em.emit('data', new Buffer([ 10, 1, 2 ]));
  35. this(null);
  36. })
  37. .seq(setTimeout, seq, 30)
  38. .seq(function () {
  39. t.same(state, 1);
  40. em.emit('data', new Buffer([ 3, 4, 5 ]));
  41. this(null);
  42. })
  43. .seq(setTimeout, seq, 15)
  44. .seq(function () {
  45. t.same(state, 1);
  46. em.emit('data', new Buffer([ 6, 7 ]));
  47. this(null);
  48. })
  49. .seq(function () {
  50. t.same(state, 2);
  51. em.emit('data', new Buffer([ 8 ]));
  52. this(null);
  53. })
  54. ;
  55. });