peek.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. var binary = require('../');
  2. var test = require('tap').test;
  3. var EventEmitter = require('events').EventEmitter;
  4. test('peek', function (t) {
  5. t.plan(4);
  6. var bufs = [
  7. new Buffer([ 6, 1, 6, 1, 6, 9, 0, 0, 0, 97 ]),
  8. new Buffer([ 98, 99 ]),
  9. new Buffer([ 100, 101, 102 ]),
  10. ];
  11. var stream = new EventEmitter;
  12. var iv = setInterval(function () {
  13. var buf = bufs.shift();
  14. if (buf) stream.emit('data', buf)
  15. else clearInterval(iv)
  16. }, 20);
  17. binary.stream(stream)
  18. .buffer('sixone', 5)
  19. .peek(function () {
  20. this.word32le('len');
  21. })
  22. .buffer('buf', 'len')
  23. .word8('x')
  24. .tap(function (vars) {
  25. t.same(
  26. [].slice.call(vars.sixone),
  27. [].slice.call(new Buffer([ 6, 1, 6, 1, 6 ]))
  28. );
  29. t.same(vars.buf.length, vars.len);
  30. t.same(
  31. [].slice.call(vars.buf),
  32. [ 9, 0, 0, 0, 97, 98, 99, 100, 101 ]
  33. );
  34. t.same(vars.x, 102);
  35. })
  36. ;
  37. });