Skip to content

Instantly share code, notes, and snippets.

@ischenkodv
Created February 28, 2015 20:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ischenkodv/4395dfcf971385085ba4 to your computer and use it in GitHub Desktop.
Save ischenkodv/4395dfcf971385085ba4 to your computer and use it in GitHub Desktop.
Unit tests for AsyncQueue
describe('run()', function() {
var realNextFrame, realCancelFrame;
beforeEach(function() {
jasmine.clock().install();
jasmine.RequestAnimationFrame.install();
realNextFrame = window.nextFrame;
realCancelFrame = window.cancelFrame;
window.nextFrame = window.requestAnimationFrame;
window.cancelFrame = window.cancelAnimationFrame;
});
afterEach(function() {
jasmine.clock().uninstall();
jasmine.RequestAnimationFrame.uninstall();
window.nextFrame = realNextFrame;
window.cancelFrame = realCancelFrame;
});
it('executes queue in order when called with the "frame" timeout', function() {
var callback1 = {
fn: function() { },
timeout: 'frame'
};
var callback2 = {
fn: function() { },
timeout: 'frame'
};
var callback3 = {
fn: function() { },
timeout: 3
};
var fnCallback1 = spyOn(callback1, 'fn');
var fnCallback2 = spyOn(callback2, 'fn');
var fnCallback3 = spyOn(callback3, 'fn');
var queue = new AsyncQueue();
queue.add(callback1);
queue.add(callback2);
queue.add(callback3);
queue.run();
jasmine.RequestAnimationFrame.tick();
expect(callback1.fn).toHaveBeenCalled();
expect(callback2.fn).not.toHaveBeenCalled();
expect(callback3.fn).not.toHaveBeenCalled();
jasmine.RequestAnimationFrame.tick();
expect(callback1.fn).toHaveBeenCalled();
expect(callback2.fn).toHaveBeenCalled();
expect(callback3.fn).not.toHaveBeenCalled();
jasmine.clock().tick(3);
expect(callback1.fn).toHaveBeenCalled();
expect(callback2.fn).toHaveBeenCalled();
expect(callback3.fn).toHaveBeenCalled();
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment