12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- var assert = require('assert');
- var throttle = require('./');
- describe('throttle', function(){
- function counter() {
- function count(){
- count.invoked++;
- }
- count.invoked = 0;
- return count;
- }
- it('should throttle a function', function(done){
- var count = counter();
- var wait = 100;
- var total = 500;
- var fn = throttle(count, wait);
- var interval = setInterval(fn, 20);
- setTimeout(function(){
- clearInterval(interval);
- assert(count.invoked === (total / wait));
- done();
- }, total + 5);
- });
- it('should call the function last time', function(done){
- var count = counter();
- var wait = 100;
- var fn = throttle(count, wait);
- fn();
- fn();
- assert(count.invoked === 1);
- setTimeout(function(){
- assert(count.invoked === 2);
- done();
- }, wait + 5);
- });
- it('should pass last context', function(done){
- var wait = 100;
- var ctx;
- var fn = throttle(logctx, wait);
- var foo = {};
- var bar = {};
- fn.call(foo);
- fn.call(bar);
- assert(ctx === foo);
- setTimeout(function(){
- assert(ctx === bar);
- done();
- }, wait + 5);
- function logctx() {
- ctx = this;
- }
- });
- it('should pass last arguments', function(done){
- var wait = 100;
- var args;
- var fn = throttle(logargs, wait);
- fn.call(null, 1);
- fn.call(null, 2);
- assert(args && args[0] === 1);
- setTimeout(function(){
- assert(args && args[0] === 2);
- done();
- }, wait + 5);
- function logargs() {
- args = arguments;
- }
- });
- });
|