limiter.test.js (911B)
1 'use strict'; 2 3 const assert = require('assert'); 4 5 const Limiter = require('../lib/limiter'); 6 7 describe('Limiter', () => { 8 describe('#ctor', () => { 9 it('takes a `concurrency` argument', () => { 10 const limiter = new Limiter(0); 11 12 assert.strictEqual(limiter.concurrency, Infinity); 13 }); 14 }); 15 16 describe('#kRun', () => { 17 it('limits the number of jobs allowed to run concurrently', (done) => { 18 const limiter = new Limiter(1); 19 20 limiter.add((callback) => { 21 setImmediate(() => { 22 callback(); 23 24 assert.strictEqual(limiter.jobs.length, 0); 25 assert.strictEqual(limiter.pending, 1); 26 }); 27 }); 28 29 limiter.add((callback) => { 30 setImmediate(() => { 31 callback(); 32 33 assert.strictEqual(limiter.pending, 0); 34 done(); 35 }); 36 }); 37 38 assert.strictEqual(limiter.jobs.length, 1); 39 }); 40 }); 41 });