var t = require('assert'); var RefCounter = require('../../lib/tools/ref-counter'); function noop() {} module.exports = { 'RefCounter': { 'is an object': function() { t.equal(typeof(RefCounter), 'function'); }, 'should become active when incremented': function(next) { var refCounter = new RefCounter(function() { next(); }, noop); refCounter.increment(); }, 'should become inactive when incremented and decremented': function(next) { var refCounter = new RefCounter(noop, function() { next(); }); refCounter.increment(); setImmediate(function() { refCounter.decrement(); }); }, 'should support multiple accesses': function(next) { var refCounter = new RefCounter(noop, function() { next(); }); refCounter.increment(); refCounter.increment(); refCounter.decrement(); setImmediate(function() { refCounter.decrement(); }); }, 'should be reusable': function(next) { var numActives = 0; var numPassives = 0; var refCounter = new RefCounter(function() { numActives += 1; }, function() { numPassives += 1; if (numActives === 2 && numPassives === 2) { next(); } }); refCounter.increment(); refCounter.decrement(); refCounter.increment(); refCounter.decrement(); } } };