diff options
author | Wilson Page <wilsonpage@me.com> | 2013-10-14 09:37:59 -0700 |
---|---|---|
committer | Wilson Page <wilsonpage@me.com> | 2013-10-14 09:37:59 -0700 |
commit | 96c292bc20f955d90eaf79c597d005a6752f674c (patch) | |
tree | 228f5948ba41fb86126314bdafa80911c5d8e9d5 /test/test.defer.js | |
parent | cf8f3ad94d43a25c57b1c4e5628c86c12e939383 (diff) | |
parent | ff502b0661e8ad3a04cfdbda0e6ee53d7cdda01e (diff) | |
download | fastdom-96c292bc20f955d90eaf79c597d005a6752f674c.zip fastdom-96c292bc20f955d90eaf79c597d005a6752f674c.tar.gz fastdom-96c292bc20f955d90eaf79c597d005a6752f674c.tar.bz2 |
Merge pull request #32 from wilsonpage/dev
Large re-write to prevent frame conflicts and simplify code
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(); + }); + }); + }); + }); + }); }); |