UNPKG

phaser

Version:

A fast, free and fun HTML5 Game Framework for Desktop and Mobile web browsers from the team at Phaser Studio Inc.

116 lines (100 loc) 3.44 kB
var In = require('../../../../src/math/easing/back/In'); describe('Phaser.Math.Easing.Back.In', function () { it('should return 0 when v is 0', function () { expect(In(0)).toBeCloseTo(0, 10); }); it('should return 1 when v is 1', function () { expect(In(1)).toBeCloseTo(1, 10); }); it('should return a negative value for small positive v due to pullback effect', function () { expect(In(0.1)).toBeLessThan(0); }); it('should use default overshoot of 1.70158 when not provided', function () { var v = 0.5; var overshoot = 1.70158; var expected = v * v * ((overshoot + 1) * v - overshoot); expect(In(v)).toBeCloseTo(expected, 10); }); it('should use custom overshoot when provided', function () { var v = 0.5; var overshoot = 3; var expected = v * v * ((overshoot + 1) * v - overshoot); expect(In(v, overshoot)).toBeCloseTo(expected, 10); }); it('should return 0 when v is 0 regardless of overshoot', function () { expect(In(0, 0)).toBeCloseTo(0, 10); expect(In(0, 5)).toBeCloseTo(0, 10); expect(In(0, 1.70158)).toBeCloseTo(0, 10); }); it('should return 1 when v is 1 regardless of overshoot', function () { expect(In(1, 0)).toBeCloseTo(1, 10); expect(In(1, 5)).toBeCloseTo(1, 10); expect(In(1, 10)).toBeCloseTo(1, 10); }); it('should produce a more pronounced pullback with higher overshoot', function () { var v = 0.2; var low = In(v, 1.70158); var high = In(v, 5); expect(high).toBeLessThan(low); }); it('should produce no pullback when overshoot is 0', function () { var v = 0.5; var expected = v * v * (1 * v - 0); expect(In(v, 0)).toBeCloseTo(expected, 10); }); it('should be monotonically increasing in the second half of the range', function () { var prev = In(0.5); for (var i = 6; i <= 10; i++) { var curr = In(i / 10); expect(curr).toBeGreaterThan(prev); prev = curr; } }); it('should handle v greater than 1', function () { var v = 1.5; var overshoot = 1.70158; var expected = v * v * ((overshoot + 1) * v - overshoot); expect(In(v)).toBeCloseTo(expected, 10); }); it('should handle negative v values', function () { var v = -0.5; var overshoot = 1.70158; var expected = v * v * ((overshoot + 1) * v - overshoot); expect(In(v)).toBeCloseTo(expected, 10); }); it('should return the correct value at v = 0.5 with default overshoot', function () { var v = 0.5; var overshoot = 1.70158; var expected = v * v * ((overshoot + 1) * v - overshoot); expect(In(0.5)).toBeCloseTo(expected, 10); }); it('should return the correct value at v = 0.25', function () { var v = 0.25; var overshoot = 1.70158; var expected = v * v * ((overshoot + 1) * v - overshoot); expect(In(0.25)).toBeCloseTo(expected, 10); }); it('should return the correct value at v = 0.75', function () { var v = 0.75; var overshoot = 1.70158; var expected = v * v * ((overshoot + 1) * v - overshoot); expect(In(0.75)).toBeCloseTo(expected, 10); }); });