Пример #1
0
 client.addListener('data', function (data) {
     bufs.push(data);
     elems.push(data);
     
     assert.equal(bufs.take(3), elems[0], 'take first 3 bytes');
     assert.equal(bufs.take(100), elems.join(''), 'take past length of buffer');
 });
Пример #2
0
exports.jump = function (assert) {
    var tapped = 0;

    var bList = new BufferList;

    Binary(bList)
        .skip(3)
        .getWord16be('de')
        .tap(function (vars) {
            var de = 256 * 'd'.charCodeAt(0) + 'e'.charCodeAt(0);
            assert.equal(
                vars.de, de,
                'getWord16be at 3 should be ' + de + ', not ' + vars.de
            );
            tapped ++;
        })
        .end()
    ;

    var buf1 = new Buffer(5); buf1.write('abcde');
    var buf2 = new Buffer(3); buf2.write('xyz');
    var buf3 = new Buffer(5); buf3.write('11358');
    bList.push(buf1,buf2,buf3);
    assert.equal(tapped, 1, 'not tapped');
};
Пример #3
0
function bufferlist(buf, cb) {
    var blist = new BufferList;
    blist.push(buf);
    Buf(blist)
    .getWord32le('x')
    .getWord16be('y')
    .getWord16be('z')
    .getWord32le('w')
    .tap(cb)
    .end()
    ;
};
['abcde','xyz','11358'].forEach(function (s) {
    var buf = new Buffer(s.length);
    buf.write(s);
    b.push(buf);
});
Пример #5
0
#!/usr/bin/env node

var sys = require('sys');
var Buffer = require('buffer').Buffer;
var BufferList = require('bufferlist');
var Binary = require('bufferlist/binary');

var bufferList = new BufferList;
var binary = Binary(bufferList)
    .getWord16be('xLen')
    .getBuffer('xs', 'xLen')
    .tap(function (vars) {
        vars.moo = 'xs:' + vars.xLen + ':' + vars.xs;
    })
    .end()
;

var buf = new Buffer(6);
buf.write('\x00\x04meow', 'binary');
bufferList.push(buf);

sys.puts(binary.vars.moo); // xs:4:meow
Пример #6
0
exports['binary loop'] = function (assert) {
    // test repeat
    var reps = 0;
    var trickyList = [];

    Binary(new BufferList)
        .repeat(5000, function(vars, n) {
            reps++;
        })
        .tap(function (vars) {
            assert.equal(
                reps, 5000, 'reps != 5000, reps == ' + reps + ' in repeat test'
            );
        })
        .repeat(3, function (vars, i) {
            this
                .repeat(4, function (vars, j) {
                    trickyList.push([ i + 1, j + 1 ]);
                })
            ;
        })
        .tap(function (vars) {
            expectedTrickyList = [
                [1,1],[1,2],[1,3],[1,4],
                [2,1],[2,2],[2,3],[2,4],
                [3,1],[3,2],[3,3],[3,4]
            ];
            for (var i = 0; i < trickyList.length; i++) {
                assert.equal(
                    trickyList[i][0],
                    expectedTrickyList[i][0],
                    'trickly list is not what it should be. it should be: ' +
                        sys.inspect(expectedTrickyList) + '. it is: ' +
                        sys.inspect(trickyList)
                );
                assert.equal(
                    trickyList[i][1],
                    expectedTrickyList[i][1],
                    'trickly list is not what it should be. it should be: ' +
                        sys.inspect(expectedTrickyList) + '. it is: ' +
                        sys.inspect(trickyList)
                );
            }
        })
        .end()
    ;

    assert.equal(reps, 5000, 'reps != 5000, reps == ' + reps + ' in outer repeat check');

    var bufferList = new BufferList;
    var loops = 0;
    Binary(bufferList)
        .forever(function () {
            this
                .getWord16be('moo','count')
                .tap(function (vars) {
                    assert.equal(
                        vars.moo.count, 100,
                        'count != 100, count == ' + vars.moo.count
                    );
                    vars.reps = 0;
                })
                .repeat('moo.count', function (vars, i) {
                    this
                        .getWord16be('size')
                        .tap(function (vars) {
                            assert.equal(
                                vars.size, 1000,
                                'size != 1000, size == ' + vars.size
                            );
                        })
                        .getBuffer('block', 'size')
                    ;
                    vars.reps ++;
                })
                .tap(function (vars) {
                    assert.equal(
                        vars.reps, 100, 'reps != 100, reps == ' + vars.reps
                    );
                })
            ;
            loops ++;
            if (loops == 20) this.exit();
        })
        .end()
    ;
    
    for (var n = 0; n < 20; n++) {
        var countBuf = new Buffer(2);
        countBuf[0] = 100 >> 8;
        countBuf[1] = 100 % 256;
        bufferList.push(countBuf);
        
        for (var i = 0; i < 100; i++) {
            var buf = new Buffer(1000 + 2);
            buf[0] = 1000 >> 8;
            buf[1] = 1000 % 256;
            for (var j = 0; j < 1000; j++) {
                buf[j + 2] = j;
            }
            bufferList.push(buf);
        }
    }
    
    assert.equal(loops, 20, 'loops != 20, loops == ' + loops);
};