summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Tétreault <tetreault.remi@gmail.com>2016-10-15 19:18:27 -0400
committerRémi Tétreault <tetreault.remi@gmail.com>2016-10-15 19:18:27 -0400
commit2acf66a8b19147a20bd686689b07ed4595231f05 (patch)
tree84d4880f3b2c9408a1e7da8869cfa7bab23ed337
parent8cfd7558024f0cc0b22dddbd20c7eae92acb6a52 (diff)
downloadsvg.js-2acf66a8b19147a20bd686689b07ed4595231f05.tar.gz
svg.js-2acf66a8b19147a20bd686689b07ed4595231f05.zip
Add tests for SVG.FX.loop
-rw-r--r--spec/spec/fx.js154
1 files changed, 153 insertions, 1 deletions
diff --git a/spec/spec/fx.js b/spec/spec/fx.js
index 31fc5b3..c985df1 100644
--- a/spec/spec/fx.js
+++ b/spec/spec/fx.js
@@ -251,6 +251,158 @@ describe('FX', function() {
})
})
+ describe('loop()', function() {
+ it('should create an eternal loop when no arguments are given', function(done) {
+ fx.loop()
+ expect(fx.situation.loop).toBe(true)
+ expect(fx.situation.loops).toBe(true)
+
+ fx.start()
+ setTimeout(function(){
+ expect(fx.active).toBe(true)
+ expect(fx.situation.loop).toBe(true)
+ expect(fx.situation.loops).toBe(true)
+ expect(fx.pos).toBeCloseTo(0.6, 1)
+ done()
+ }, 800)
+ })
+
+ it('should create an eternal loop when the first argument is true', function(done) {
+ fx.loop(true)
+ expect(fx.situation.loop).toBe(true)
+ expect(fx.situation.loops).toBe(true)
+
+ fx.start()
+ setTimeout(function(){
+ expect(fx.active).toBe(true)
+ expect(fx.situation.loop).toBe(true)
+ expect(fx.situation.loops).toBe(true)
+ expect(fx.pos).toBeCloseTo(0.3, 1)
+ done()
+ }, 650)
+ })
+
+ it('should loop for the specified number of times', function(done) {
+ fx.loop(3)
+ expect(fx.situation.loop).toBe(3)
+ expect(fx.situation.loops).toBe(3)
+
+ fx.start()
+ setTimeout(function(){
+ expect(fx.active).toBe(true)
+ expect(fx.situation.loop).toBe(3)
+ expect(fx.situation.loops).toBe(3)
+ expect(fx.pos).toBeCloseTo(0.4, 1)
+ }, 200)
+
+ setTimeout(function(){
+ expect(fx.active).toBe(true)
+ expect(fx.situation.loop).toBe(2)
+ expect(fx.situation.loops).toBe(3)
+ expect(fx.pos).toBeCloseTo(0.5, 1)
+ }, 750)
+
+ setTimeout(function(){
+ expect(fx.active).toBe(true)
+ expect(fx.situation.loop).toBe(1)
+ expect(fx.situation.loops).toBe(3)
+ expect(fx.pos).toBeCloseTo(0.64, 1)
+ }, 1320)
+
+ setTimeout(function(){
+ expect(fx.active).toBe(false)
+ expect(fx.situation).toBeNull()
+ expect(fx.pos).toBe(1)
+ done()
+ }, 1600)
+ })
+
+ it('should go from beginning to end and start over again (0->1.0->1.0->1.) by default', function(done) {
+ fx.loop(2)
+ expect(fx.situation.loop).toBe(2)
+ expect(fx.situation.loops).toBe(2)
+ expect(fx.situation.reversing).toBe(false)
+ expect(fx.situation.reversed).toBe(false)
+
+ fx.start()
+ setTimeout(function(){
+ expect(fx.active).toBe(true)
+ expect(fx.situation.loop).toBe(2)
+ expect(fx.situation.loops).toBe(2)
+ expect(fx.situation.reversing).toBe(false)
+ expect(fx.situation.reversed).toBe(false)
+ expect(fx.pos).toBeCloseTo(0.65, 1)
+ }, 325)
+
+ setTimeout(function(){
+ expect(fx.active).toBe(true)
+ expect(fx.situation.loop).toBe(1)
+ expect(fx.situation.loops).toBe(2)
+ expect(fx.situation.reversing).toBe(false)
+ expect(fx.situation.reversed).toBe(false)
+ expect(fx.pos).toBeCloseTo(0.8, 1)
+ }, 900)
+
+ setTimeout(function(){
+ expect(fx.active).toBe(false)
+ expect(fx.situation).toBeNull()
+ expect(fx.pos).toBe(1)
+ done()
+ }, 1100)
+ })
+
+ it('should be completely reversed before starting over (0->1->0->1->0->1.) when the reverse flag is passed', function(done) {
+ fx.loop(2, true)
+ expect(fx.situation.loop).toBe(2)
+ expect(fx.situation.loops).toBe(2)
+ expect(fx.situation.reversing).toBe(true)
+ expect(fx.situation.reversed).toBe(false)
+
+ fx.start()
+ setTimeout(function(){
+ expect(fx.active).toBe(true)
+ expect(fx.situation.loop).toBe(2)
+ expect(fx.situation.loops).toBe(2)
+ expect(fx.situation.reversing).toBe(true)
+ expect(fx.situation.reversed).toBe(false)
+ expect(fx.pos).toBeCloseTo(0.65, 1)
+ }, 325)
+
+ setTimeout(function(){
+ expect(fx.active).toBe(true)
+ expect(fx.situation.loop).toBe(1)
+ expect(fx.situation.loops).toBe(2)
+ expect(fx.situation.reversing).toBe(true)
+ expect(fx.situation.reversed).toBe(true)
+ expect(fx.pos).toBeCloseTo(0.2, 1)
+ }, 900)
+
+ setTimeout(function(){
+ expect(fx.active).toBe(false)
+ expect(fx.situation).toBeNull()
+ expect(fx.pos).toBe(0)
+ done()
+ }, 1100)
+ })
+
+ it('should be applied on the last situation', function() {
+ fx.loop(5)
+ expect(fx.situation.loop).toBe(5)
+ expect(fx.situation.loops).toBe(5)
+ expect(fx.situation.reversing).toBe(false)
+
+ fx.animate().loop(3, true)
+ expect(fx.situation.loop).toBe(5)
+ expect(fx.situation.loops).toBe(5)
+ expect(fx.situation.reversing).toBe(false)
+
+ var c = fx.last()
+ expect(c.loop).toBe(3)
+ expect(c.loops).toBe(3)
+ expect(c.reversing).toBe(true)
+ })
+ })
+
it('animates the x/y-attr', function(done) {
fx.move(200,200).after(function(){
@@ -297,4 +449,4 @@ describe('FX', function() {
})
-}) \ No newline at end of file
+})