You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

53 lines
1.4 KiB

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