mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			161 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			161 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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
 | 
						|
 | 
						|
});
 |