diff options
Diffstat (limited to 'test/test.defer.js')
-rw-r--r-- | test/test.defer.js | 80 |
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(); + }); + }); + }); + }); + }); }); |