mirror of
https://github.com/stylersnico/librenms.git
synced 2026-07-27 00:25:06 +02:00
Squashed 'lib/vis/' content from commit 1d029ca
git-subtree-dir: lib/vis git-subtree-split: 1d029cab7b527f3b292e95d550efbf784dac8699
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
var assert = require('assert');
|
||||
var Queue = require('../lib/Queue');
|
||||
|
||||
describe('Queue', function () {
|
||||
it('queue actions', function () {
|
||||
var queue = new Queue();
|
||||
|
||||
var count = 0;
|
||||
function inc() {
|
||||
count++;
|
||||
}
|
||||
|
||||
queue.queue(inc);
|
||||
assert.equal(count, 0);
|
||||
|
||||
queue.flush();
|
||||
assert.equal(count, 1);
|
||||
});
|
||||
|
||||
it('queue actions with a delay', function (done) {
|
||||
var queue = new Queue({delay: 25});
|
||||
|
||||
var count = 0;
|
||||
function inc() {
|
||||
count++;
|
||||
}
|
||||
|
||||
queue.queue(inc);
|
||||
assert.equal(count, 0);
|
||||
|
||||
setTimeout(function () {
|
||||
assert.equal(count, 1);
|
||||
|
||||
done();
|
||||
}, 50);
|
||||
});
|
||||
|
||||
it('queue multiple actions with a delay', function (done) {
|
||||
var queue = new Queue({delay: 100});
|
||||
|
||||
var count = 0;
|
||||
function inc() {
|
||||
count++;
|
||||
}
|
||||
|
||||
queue.queue(inc);
|
||||
assert.equal(count, 0);
|
||||
|
||||
setTimeout(function () {
|
||||
queue.queue(inc);
|
||||
assert.equal(count, 0);
|
||||
|
||||
// flush should now occur after 100 ms from now, lets test after 75 and 125 ms
|
||||
setTimeout(function () {
|
||||
assert.equal(count, 0);
|
||||
|
||||
setTimeout(function () {
|
||||
assert.equal(count, 2);
|
||||
|
||||
done();
|
||||
}, 50);
|
||||
}, 75);
|
||||
}, 50);
|
||||
});
|
||||
|
||||
it('flush when the configured maximum is exceeded', function () {
|
||||
var queue = new Queue({max: 4});
|
||||
|
||||
var count = 0;
|
||||
function inc() {
|
||||
count++;
|
||||
}
|
||||
|
||||
queue.queue(inc);
|
||||
queue.queue(inc);
|
||||
assert.equal(count, 0);
|
||||
|
||||
queue.queue(inc);
|
||||
queue.queue(inc);
|
||||
queue.queue(inc);
|
||||
assert.equal(count, 5);
|
||||
});
|
||||
|
||||
it('queue actions with args', function () {
|
||||
var queue = new Queue();
|
||||
|
||||
var count = 0;
|
||||
function add(value) {
|
||||
count += value;
|
||||
}
|
||||
|
||||
queue.queue({fn: add, args: [2]});
|
||||
assert.equal(count, 0);
|
||||
|
||||
queue.flush();
|
||||
assert.equal(count, 2);
|
||||
});
|
||||
|
||||
it('queue actions with args and context', function () {
|
||||
var queue = new Queue();
|
||||
|
||||
var obj = {
|
||||
count: 0,
|
||||
add: function (value) {
|
||||
this.count += value;
|
||||
}
|
||||
};
|
||||
|
||||
queue.queue({context: obj, fn: obj.add, args: [2]});
|
||||
assert.equal(obj.count, 0);
|
||||
|
||||
queue.flush();
|
||||
assert.equal(obj.count, 2);
|
||||
});
|
||||
|
||||
it('replace functions on an object', function () {
|
||||
var queue = new Queue();
|
||||
|
||||
var obj = {
|
||||
count: 0,
|
||||
add: function (value) {
|
||||
this.count += value;
|
||||
}
|
||||
};
|
||||
|
||||
queue.replace(obj, 'add');
|
||||
|
||||
obj.add(3);
|
||||
assert.equal(obj.count, 0);
|
||||
|
||||
queue.flush();
|
||||
assert.equal(obj.count, 3);
|
||||
});
|
||||
|
||||
it('extend an object', function () {
|
||||
var obj = {
|
||||
count: 0,
|
||||
add: function (value) {
|
||||
this.count += value;
|
||||
},
|
||||
subtract: function (value) {
|
||||
this.count -= value;
|
||||
}
|
||||
};
|
||||
|
||||
Queue.extend(obj, {replace: ['add', 'subtract']});
|
||||
|
||||
obj.add(3);
|
||||
obj.subtract(1);
|
||||
assert.equal(obj.count, 0);
|
||||
|
||||
obj.flush();
|
||||
assert.equal(obj.count, 2);
|
||||
});
|
||||
|
||||
// TODO: test Queue.setOptions
|
||||
|
||||
// TODO: test Queue.destroy
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user