var locks = require('..'); var test = require('tape'); function testMany(t, cb) { var sem; sem = locks.createSemaphore(); // default resources should be 1 t.equal(sem._count, 1, 'Defaults to 2 available resources'); sem = locks.createSemaphore(2); // 2 available resources t.equal(sem._count, 2, 'Created with 2 available resources'); function fn() { process.nextTick(function () { sem.signal(); }); } for (var i = 0; i < 100; i++) { sem.wait(fn); } setTimeout(function () { t.equal(sem._count, 2, 'Still 2 available resources'); t.equal(sem._waiting.length, 0, 'Nobody waiting'); cb(); }, 0); } test('Semaphore', function (t) { testMany(t, function () { t.end(); }); });