60 lines
1.9 KiB
JavaScript
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();
|
|
});
|