summaryrefslogtreecommitdiffstats
path: root/test/test.defer.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/test.defer.js')
-rw-r--r--test/test.defer.js80
1 files changed, 70 insertions, 10 deletions
diff --git a/test/test.defer.js b/test/test.defer.js
index 3e56a94..114287f 100644
--- a/test/test.defer.js
+++ b/test/test.defer.js
@@ -5,18 +5,15 @@ suite('defer', function(){
var fastdom = new FastDom();
var job = sinon.spy();
- fastdom.defer(4, job);
+ fastdom.defer(3, job);
raf(function() {
assert(!job.called);
raf(function() {
assert(!job.called);
raf(function() {
- assert(!job.called);
- raf(function() {
- assert(job.called);
- done();
- });
+ assert(job.called);
+ done();
});
});
});
@@ -33,18 +30,81 @@ suite('defer', function(){
}, ctx);
});
- test('Should remove the reference to the job once run', function(done) {
+ test('Should run work at next frame if frames argument not supplied.', function(done) {
var fastdom = new FastDom();
- var callback = sinon.spy();
- var id = fastdom.defer(2, callback);
+ var callback1 = sinon.spy();
+ var callback2 = sinon.spy();
+
+ fastdom.defer(callback1);
raf(function() {
+ assert(callback1.called);
+ done();
+ });
+ });
+
+ test('Should run each job on a different frame.', function(done) {
+ var fastdom = new FastDom();
+ var callback1 = sinon.spy();
+ var callback2 = sinon.spy();
+ var callback3 = sinon.spy();
+
+ fastdom.defer(callback1);
+ fastdom.defer(callback2);
+ fastdom.defer(callback3);
+
+ raf(function() {
+ assert(callback1.called);
+ assert(!callback2.called);
+ assert(!callback3.called);
raf(function() {
+ assert(callback2.called);
+ assert(!callback3.called);
raf(function() {
- assert(!fastdom.jobs[id]);
+ assert(callback3.called);
done();
});
});
});
});
+
+ test('Should run fill empty frames before later work is run.', function(done) {
+ var fastdom = new FastDom();
+ var callback1 = sinon.spy();
+ var callback2 = sinon.spy();
+ var callback3 = sinon.spy();
+ var callback4 = sinon.spy();
+
+ // Frame 3
+ fastdom.defer(3, callback3);
+
+ // Frame 1
+ fastdom.defer(callback1);
+
+ // Frame 2
+ fastdom.defer(callback2);
+
+ // Frame 4
+ fastdom.defer(callback4);
+
+ raf(function() {
+ assert(callback1.called);
+ assert(!callback2.called);
+ assert(!callback3.called);
+ assert(!callback4.called);
+ raf(function() {
+ assert(callback2.called);
+ assert(!callback3.called);
+ assert(!callback4.called);
+ raf(function() {
+ assert(callback3.called);
+ assert(!callback4.called);
+ raf(function() {
+ assert(callback4.called);
+ done();
+ });
+ });
+ });
+ });
+ });
});