Version 1
[yaffs-website] / node_modules / throttleit / test.js
diff --git a/node_modules/throttleit/test.js b/node_modules/throttleit/test.js
new file mode 100644 (file)
index 0000000..d59eb1b
--- /dev/null
@@ -0,0 +1,73 @@
+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;
+    }
+  });
+
+});
\ No newline at end of file