node-red-contrib-web-worldmap
Version:
A Node-RED node to provide a web page of a world map for plotting things on.
116 lines (106 loc) • 3.63 kB
JavaScript
// Test binary looping functions
var sys = require('sys');
var Buffer = require('buffer').Buffer;
var BufferList = require('bufferlist');
var Binary = require('bufferlist/binary');
var assert = require('assert');
exports['binary loop'] = function () {
// test repeat
var reps = 0;
var trickyList = [];
Binary(new BufferList)
.repeat(5000, function(vars, n) {
reps++;
})
.tap(function (vars) {
assert.eql(
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.eql(
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.eql(
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.eql(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.eql(
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.eql(
vars.size, 1000,
'size != 1000, size == ' + vars.size
);
})
.getBuffer('block', 'size')
;
vars.reps ++;
})
.tap(function (vars) {
assert.eql(
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.eql(loops, 20, 'loops != 20, loops == ' + loops);
};