Files
simple-bookreader/client/islets/core/y-debounce/y-debounce.test.js
Oleg Mokhov f3546ef3a5 Release
2015-06-20 14:48:34 +05:00

60 lines
1.9 KiB
JavaScript

modules.define('test', ['y-debounce'], function (provide, debounce) {
describe('debounce', function () {
it('should debounce given function', function (done) {
var counter = 0;
var incr = function () {
counter++;
};
var debouncedIncr = debounce(incr, 32);
debouncedIncr();
debouncedIncr();
setTimeout(debouncedIncr, 16);
setTimeout(function () {
counter.should.eq(1, 'incr was debounced');
done();
}, 96);
});
it('should call given function immediately if "immediate" param is true', function (done) {
var a;
var b;
var counter = 0;
var incr = function () {
return ++counter;
};
var debouncedIncr = debounce(incr, 64, true);
a = debouncedIncr();
b = debouncedIncr();
a.should.eq(1);
b.should.eq(1);
counter.should.eq(1, 'incr was called immediately');
setTimeout(debouncedIncr, 16);
setTimeout(debouncedIncr, 32);
setTimeout(debouncedIncr, 48);
setTimeout(function () {
counter.should.eq(1, 'incr was debounced');
done();
}, 128);
});
it('should work properly when debounced function called recursively', function (done) {
var counter = 0;
var debouncedIncr = debounce(function () {
counter++;
if (counter < 10) {
debouncedIncr();
}
}, 32, true);
debouncedIncr();
counter.should.eq(1, 'incr was called immediately');
setTimeout(function () {
counter.should.eq(1, 'incr was debounced');
done();
}, 96);
});
});
provide();
});