parse.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. var binary = require('../');
  2. var test = require('tap').test;
  3. test('parse', function (t) {
  4. t.plan(6);
  5. var res = binary.parse(new Buffer([ 97, 98, 99, 99, 99, 99, 1, 2, 3 ]))
  6. .word8('a')
  7. .word16be('bc')
  8. .skip(3)
  9. .buffer('def', 3)
  10. .tap(function (vars) {
  11. t.equal(vars.a, 97);
  12. t.equal(vars.bc, 25187);
  13. t.same(
  14. [].slice.call(vars.def),
  15. [].slice.call(new Buffer([ 1, 2, 3]))
  16. );
  17. })
  18. .vars
  19. ;
  20. t.equal(res.a, 97);
  21. t.equal(res.bc, 25187);
  22. t.same(
  23. [].slice.call(res.def),
  24. [].slice.call(new Buffer([ 1, 2, 3 ]))
  25. );
  26. });
  27. test('loop', function (t) {
  28. t.plan(2);
  29. var res = binary.parse(new Buffer([ 97, 98, 99, 4, 5, 2, -3, 9 ]))
  30. .word8('a')
  31. .word16be('bc')
  32. .loop(function (end) {
  33. var x = this.word8s('x').vars.x;
  34. if (x < 0) end();
  35. })
  36. .tap(function (vars) {
  37. t.same(vars, {
  38. a : 97,
  39. bc : 25187,
  40. x : -3,
  41. });
  42. })
  43. .word8('y')
  44. .vars
  45. ;
  46. t.same(res, {
  47. a : 97,
  48. bc : 25187,
  49. x : -3,
  50. y : 9,
  51. });
  52. });