parse.js 1.23 KB
var binary = require('../');
var test = require('tap').test;

test('parse', function (t) {
    t.plan(6);
    var res = binary.parse(new Buffer([ 97, 98, 99, 99, 99, 99, 1, 2, 3 ]))
        .word8('a')
        .word16be('bc')
        .skip(3)
        .buffer('def', 3)
        .tap(function (vars) {
            t.equal(vars.a, 97);
            t.equal(vars.bc, 25187);
            t.same(
                [].slice.call(vars.def),
                [].slice.call(new Buffer([ 1, 2, 3]))
            );
        })
        .vars
    ;
    t.equal(res.a, 97);
    t.equal(res.bc, 25187);
    t.same(
        [].slice.call(res.def),
        [].slice.call(new Buffer([ 1, 2, 3 ]))
    );
});

test('loop', function (t) {
    t.plan(2);
    var res = binary.parse(new Buffer([ 97, 98, 99, 4, 5, 2, -3, 9 ]))
        .word8('a')
        .word16be('bc')
        .loop(function (end) {
            var x = this.word8s('x').vars.x;
            if (x < 0) end();
        })
        .tap(function (vars) {
            t.same(vars, {
                a : 97,
                bc : 25187,
                x : -3,
            });
        })
        .word8('y')
        .vars
    ;
    t.same(res, {
        a : 97,
        bc : 25187,
        x : -3,
        y : 9,
    });
});