UNPKG

phaser

Version:

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

152 lines (119 loc) 4.75 kB
var SetScrollFactor = require('../../src/actions/SetScrollFactor'); describe('Phaser.Actions.SetScrollFactor', function () { var items; beforeEach(function () { items = [ { scrollFactorX: 0, scrollFactorY: 0 }, { scrollFactorX: 0, scrollFactorY: 0 }, { scrollFactorX: 0, scrollFactorY: 0 } ]; }); it('should set scrollFactorX and scrollFactorY on all items', function () { SetScrollFactor(items, 0.5, 0.5); expect(items[0].scrollFactorX).toBe(0.5); expect(items[0].scrollFactorY).toBe(0.5); expect(items[1].scrollFactorX).toBe(0.5); expect(items[1].scrollFactorY).toBe(0.5); expect(items[2].scrollFactorX).toBe(0.5); expect(items[2].scrollFactorY).toBe(0.5); }); it('should use scrollFactorX for scrollFactorY when scrollFactorY is undefined', function () { SetScrollFactor(items, 0.75); expect(items[0].scrollFactorX).toBe(0.75); expect(items[0].scrollFactorY).toBe(0.75); expect(items[1].scrollFactorX).toBe(0.75); expect(items[1].scrollFactorY).toBe(0.75); }); it('should use scrollFactorX for scrollFactorY when scrollFactorY is null', function () { SetScrollFactor(items, 0.5, null); expect(items[0].scrollFactorX).toBe(0.5); expect(items[0].scrollFactorY).toBe(0.5); expect(items[1].scrollFactorX).toBe(0.5); expect(items[1].scrollFactorY).toBe(0.5); }); it('should allow different values for scrollFactorX and scrollFactorY', function () { SetScrollFactor(items, 0.25, 0.75); expect(items[0].scrollFactorX).toBe(0.25); expect(items[0].scrollFactorY).toBe(0.75); expect(items[1].scrollFactorX).toBe(0.25); expect(items[1].scrollFactorY).toBe(0.75); }); it('should apply stepX incrementally to scrollFactorX', function () { SetScrollFactor(items, 1, 1, 0.1, 0); expect(items[0].scrollFactorX).toBeCloseTo(1.0); expect(items[1].scrollFactorX).toBeCloseTo(1.1); expect(items[2].scrollFactorX).toBeCloseTo(1.2); }); it('should apply stepY incrementally to scrollFactorY', function () { SetScrollFactor(items, 1, 1, 0, 0.2); expect(items[0].scrollFactorY).toBeCloseTo(1.0); expect(items[1].scrollFactorY).toBeCloseTo(1.2); expect(items[2].scrollFactorY).toBeCloseTo(1.4); }); it('should apply both stepX and stepY incrementally', function () { SetScrollFactor(items, 0, 0, 0.5, 0.5); expect(items[0].scrollFactorX).toBeCloseTo(0.0); expect(items[0].scrollFactorY).toBeCloseTo(0.0); expect(items[1].scrollFactorX).toBeCloseTo(0.5); expect(items[1].scrollFactorY).toBeCloseTo(0.5); expect(items[2].scrollFactorX).toBeCloseTo(1.0); expect(items[2].scrollFactorY).toBeCloseTo(1.0); }); it('should return the items array', function () { var result = SetScrollFactor(items, 1, 1); expect(result).toBe(items); }); it('should handle an empty array', function () { var result = SetScrollFactor([], 1, 1); expect(result).toEqual([]); }); it('should handle a single item array', function () { var single = [{ scrollFactorX: 0, scrollFactorY: 0 }]; SetScrollFactor(single, 2, 3); expect(single[0].scrollFactorX).toBe(2); expect(single[0].scrollFactorY).toBe(3); }); it('should set scroll factor to zero', function () { items[0].scrollFactorX = 5; items[0].scrollFactorY = 5; SetScrollFactor(items, 0, 0); expect(items[0].scrollFactorX).toBe(0); expect(items[0].scrollFactorY).toBe(0); }); it('should set scroll factor to negative values', function () { SetScrollFactor(items, -1, -0.5); expect(items[0].scrollFactorX).toBe(-1); expect(items[0].scrollFactorY).toBe(-0.5); }); it('should respect the index offset parameter', function () { SetScrollFactor(items, 9, 9, 0, 0, 1); expect(items[0].scrollFactorX).toBe(0); expect(items[0].scrollFactorY).toBe(0); expect(items[1].scrollFactorX).toBe(9); expect(items[1].scrollFactorY).toBe(9); expect(items[2].scrollFactorX).toBe(9); expect(items[2].scrollFactorY).toBe(9); }); it('should iterate in reverse when direction is -1', function () { SetScrollFactor(items, 1, 1, 1, 1, 2, -1); expect(items[2].scrollFactorX).toBeCloseTo(1); expect(items[1].scrollFactorX).toBeCloseTo(2); expect(items[0].scrollFactorX).toBeCloseTo(3); }); });