55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
|
var binary = require('../');
|
||
|
var test = require('tap').test;
|
||
|
var EventEmitter = require('events').EventEmitter;
|
||
|
|
||
|
test('loop scan', function (t) {
|
||
|
t.plan(8 + 6 + 2);
|
||
|
|
||
|
var em = new EventEmitter;
|
||
|
|
||
|
binary.stream(em)
|
||
|
.loop(function (end) {
|
||
|
var vars_ = this.vars;
|
||
|
this
|
||
|
.scan('filler', 'BEGINMSG')
|
||
|
.buffer('cmd', 3)
|
||
|
.word8('num')
|
||
|
.tap(function (vars) {
|
||
|
t.strictEqual(vars, vars_);
|
||
|
if (vars.num != 0x02 && vars.num != 0x06) {
|
||
|
t.same(vars.filler.length, 0);
|
||
|
}
|
||
|
if (vars.cmd.toString() == 'end') end();
|
||
|
})
|
||
|
;
|
||
|
})
|
||
|
.tap(function (vars) {
|
||
|
t.same(vars.cmd.toString(), 'end');
|
||
|
t.same(vars.num, 0x08);
|
||
|
})
|
||
|
;
|
||
|
|
||
|
setTimeout(function () {
|
||
|
em.emit('data', new Buffer(
|
||
|
'BEGINMSGcmd\x01'
|
||
|
+ 'GARBAGEDATAXXXX'
|
||
|
+ 'BEGINMSGcmd\x02'
|
||
|
+ 'BEGINMSGcmd\x03'
|
||
|
));
|
||
|
}, 10);
|
||
|
|
||
|
setTimeout(function () {
|
||
|
em.emit('data', new Buffer(
|
||
|
'BEGINMSGcmd\x04'
|
||
|
+ 'BEGINMSGcmd\x05'
|
||
|
+ 'GARBAGEDATAXXXX'
|
||
|
+ 'BEGINMSGcmd\x06'
|
||
|
));
|
||
|
em.emit('data', new Buffer('BEGINMSGcmd\x07'));
|
||
|
}, 20);
|
||
|
|
||
|
setTimeout(function () {
|
||
|
em.emit('data', new Buffer('BEGINMSGend\x08'));
|
||
|
}, 30);
|
||
|
});
|