Spaces:
Sleeping
Sleeping
| var test = require('tape') | |
| , raf = require('./index.js') | |
| test('continues to emit events', function(t) { | |
| t.plan(11) | |
| var start = new Date().getTime() | |
| , times = 0 | |
| raf(function tick(dt) { | |
| t.ok(dt >= 0, 'time has passed: ' + dt) | |
| if(++times == 10) { | |
| var elapsed = (new Date().getTime() - start) | |
| t.ok(elapsed >= 150, 'should take at least 9 frames worth of wall time: ' + elapsed) | |
| t.end() | |
| } else { | |
| raf(tick) | |
| } | |
| }) | |
| }) | |
| test('cancel removes callbacks from queue', function(t) { | |
| t.plan(6) | |
| function cb1() { cb1.called = true } | |
| function cb2() { cb2.called = true } | |
| function cb3() { cb3.called = true } | |
| var handle1 = raf(cb1) | |
| t.ok(handle1, 'returns a handle') | |
| var handle2 = raf(cb2) | |
| t.ok(handle2, 'returns a handle') | |
| var handle3 = raf(cb3) | |
| t.ok(handle3, 'returns a handle') | |
| raf.cancel(handle2) | |
| raf(function() { | |
| t.ok(cb1.called, 'callback was invoked') | |
| t.notOk(cb2.called, 'callback was cancelled') | |
| t.ok(cb3.called, 'callback was invoked') | |
| t.end() | |
| }) | |
| }) | |
| test('raf should throw on errors', function(t) { | |
| t.plan(1) | |
| var onError = function() { | |
| t.pass('error bubbled up to event loop') | |
| } | |
| if(typeof window !== 'undefined') { | |
| window.onerror = onError | |
| } else if(typeof process !== 'undefined') { | |
| process.on('uncaughtException', onError) | |
| } | |
| raf(function() { | |
| throw new Error('foo') | |
| }) | |
| }) | |