|
|
- 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
-
- });
|