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'); });
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'); };
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); });
#!/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
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); };