UNPKG

phaser

Version:

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

189 lines (152 loc) 5.16 kB
var ScaleY = require('../../src/actions/ScaleY'); describe('Phaser.Actions.ScaleY', function () { var items; beforeEach(function () { items = [ { scaleY: 1 }, { scaleY: 1 }, { scaleY: 1 }, { scaleY: 1 } ]; }); it('should return the items array', function () { var result = ScaleY(items, 1); expect(result).toBe(items); }); it('should add value to each item scaleY property', function () { ScaleY(items, 2); expect(items[0].scaleY).toBe(3); expect(items[1].scaleY).toBe(3); expect(items[2].scaleY).toBe(3); expect(items[3].scaleY).toBe(3); }); it('should add a negative value to each item scaleY property', function () { ScaleY(items, -0.5); expect(items[0].scaleY).toBeCloseTo(0.5); expect(items[1].scaleY).toBeCloseTo(0.5); expect(items[2].scaleY).toBeCloseTo(0.5); expect(items[3].scaleY).toBeCloseTo(0.5); }); it('should add zero value leaving scaleY unchanged', function () { ScaleY(items, 0); expect(items[0].scaleY).toBe(1); expect(items[1].scaleY).toBe(1); expect(items[2].scaleY).toBe(1); expect(items[3].scaleY).toBe(1); }); it('should apply step incrementally across items', function () { ScaleY(items, 1, 0.5); // t=0: 1 + (1 + 0*0.5) = 2 // t=1: 1 + (1 + 1*0.5) = 2.5 // t=2: 1 + (1 + 2*0.5) = 3 // t=3: 1 + (1 + 3*0.5) = 3.5 expect(items[0].scaleY).toBeCloseTo(2); expect(items[1].scaleY).toBeCloseTo(2.5); expect(items[2].scaleY).toBeCloseTo(3); expect(items[3].scaleY).toBeCloseTo(3.5); }); it('should apply a negative step incrementally across items', function () { ScaleY(items, 2, -0.25); // t=0: 1 + (2 + 0*-0.25) = 3 // t=1: 1 + (2 + 1*-0.25) = 2.75 // t=2: 1 + (2 + 2*-0.25) = 2.5 // t=3: 1 + (2 + 3*-0.25) = 2.25 expect(items[0].scaleY).toBeCloseTo(3); expect(items[1].scaleY).toBeCloseTo(2.75); expect(items[2].scaleY).toBeCloseTo(2.5); expect(items[3].scaleY).toBeCloseTo(2.25); }); it('should start from index offset when index is provided', function () { ScaleY(items, 5, 0, 2); expect(items[0].scaleY).toBe(1); expect(items[1].scaleY).toBe(1); expect(items[2].scaleY).toBe(6); expect(items[3].scaleY).toBe(6); }); it('should iterate from end to start when direction is -1', function () { // direction=-1 iterates from index down to 0 // Starting at index=3 (last item), going backwards ScaleY(items, 1, 0, 3, -1); // t=0: items[3] += 1 + 0 = 2 // t=1: items[2] += 1 + 0 = 2 // t=2: items[1] += 1 + 0 = 2 // t=3: items[0] += 1 + 0 = 2 expect(items[0].scaleY).toBe(2); expect(items[1].scaleY).toBe(2); expect(items[2].scaleY).toBe(2); expect(items[3].scaleY).toBe(2); }); it('should apply step in reverse direction correctly', function () { ScaleY(items, 1, 1, 3, -1); // t=0: items[3] += 1 + 0*1 = 2 // t=1: items[2] += 1 + 1*1 = 3 // t=2: items[1] += 1 + 2*1 = 4 // t=3: items[0] += 1 + 3*1 = 5 expect(items[3].scaleY).toBe(2); expect(items[2].scaleY).toBe(3); expect(items[1].scaleY).toBe(4); expect(items[0].scaleY).toBe(5); }); it('should handle an empty array without error', function () { var result = ScaleY([], 5); expect(result).toEqual([]); }); it('should handle a single item array', function () { var single = [{ scaleY: 2 }]; ScaleY(single, 3); expect(single[0].scaleY).toBe(5); }); it('should handle floating point values correctly', function () { var floatItems = [ { scaleY: 0.1 }, { scaleY: 0.2 }, { scaleY: 0.3 } ]; ScaleY(floatItems, 0.1); expect(floatItems[0].scaleY).toBeCloseTo(0.2); expect(floatItems[1].scaleY).toBeCloseTo(0.3); expect(floatItems[2].scaleY).toBeCloseTo(0.4); }); it('should handle items with scaleY of zero', function () { var zeroItems = [ { scaleY: 0 }, { scaleY: 0 } ]; ScaleY(zeroItems, 2); expect(zeroItems[0].scaleY).toBe(2); expect(zeroItems[1].scaleY).toBe(2); }); it('should handle items with negative scaleY values', function () { var negItems = [ { scaleY: -1 }, { scaleY: -2 } ]; ScaleY(negItems, 1); expect(negItems[0].scaleY).toBe(0); expect(negItems[1].scaleY).toBe(-1); }); it('should not modify items before the index offset', function () { ScaleY(items, 10, 0, 3); expect(items[0].scaleY).toBe(1); expect(items[1].scaleY).toBe(1); expect(items[2].scaleY).toBe(1); expect(items[3].scaleY).toBe(11); }); });