UNPKG

phaser

Version:

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

355 lines (270 loc) 11.4 kB
var NumberTweenBuilder = require('../../../src/tweens/builders/NumberTweenBuilder'); var Tween = require('../../../src/tweens/tween/Tween'); var mockParent = {}; function makeConfig (overrides) { return Object.assign({}, overrides); } describe('Phaser.Tweens.Builders.NumberTweenBuilder', function () { describe('when config is a Tween instance', function () { it('should return the same Tween with parent reassigned', function () { var existingTween = new Tween(null, [ { value: 0 } ]); var result = NumberTweenBuilder(mockParent, existingTween, undefined); expect(result).toBe(existingTween); expect(result.parent).toBe(mockParent); }); }); describe('return value', function () { it('should return a Tween instance', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result).toBeInstanceOf(Tween); }); it('should mark the tween as a number tween', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.isNumberTween).toBe(true); }); }); describe('from / to defaults', function () { it('should default from to 0 and to to 1', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.data[0].start).toBe(0); expect(result.data[0].current).toBe(0); }); it('should use from value from config', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ from: 50 }), undefined); expect(result.data[0].start).toBe(50); expect(result.data[0].current).toBe(50); }); it('should use negative from value', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ from: -100 }), undefined); expect(result.data[0].start).toBe(-100); expect(result.data[0].current).toBe(-100); }); it('should use floating point from value', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ from: 0.5 }), undefined); expect(result.data[0].start).toBeCloseTo(0.5); expect(result.data[0].current).toBeCloseTo(0.5); }); }); describe('paused', function () { it('should default paused to false', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.paused).toBe(false); }); it('should set paused to true from config', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ paused: true }), undefined); expect(result.paused).toBe(true); }); }); describe('persist', function () { it('should default persist to false', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.persist).toBe(false); }); it('should set persist to true from config', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ persist: true }), undefined); expect(result.persist).toBe(true); }); }); describe('loop', function () { it('should default loop to 0', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.loop).toBe(0); }); it('should set loop from config', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ loop: 3 }), undefined); expect(result.loop).toBe(3); }); it('should round loop value', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ loop: 2.7 }), undefined); expect(result.loop).toBe(3); }); }); describe('loopDelay', function () { it('should default loopDelay to 0', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.loopDelay).toBe(0); }); it('should set loopDelay from config', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ loopDelay: 500 }), undefined); expect(result.loopDelay).toBe(500); }); it('should round loopDelay value', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ loopDelay: 100.9 }), undefined); expect(result.loopDelay).toBe(101); }); }); describe('completeDelay', function () { it('should default completeDelay to 0', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.completeDelay).toBe(0); }); it('should set completeDelay from config', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ completeDelay: 200 }), undefined); expect(result.completeDelay).toBe(200); }); }); describe('callbackScope', function () { it('should default callbackScope to the tween itself', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.callbackScope).toBe(result); }); it('should use callbackScope from config', function () { var scope = { custom: true }; var result = NumberTweenBuilder(mockParent, makeConfig({ callbackScope: scope }), undefined); expect(result.callbackScope).toBe(scope); }); }); describe('callbacks', function () { it('should set onComplete callback when provided', function () { var cb = function () {}; var result = NumberTweenBuilder(mockParent, makeConfig({ onComplete: cb }), undefined); expect(result.callbacks.onComplete).not.toBeNull(); expect(result.callbacks.onComplete.func).toBe(cb); }); it('should set onStart callback when provided', function () { var cb = function () {}; var result = NumberTweenBuilder(mockParent, makeConfig({ onStart: cb }), undefined); expect(result.callbacks.onStart).not.toBeNull(); expect(result.callbacks.onStart.func).toBe(cb); }); it('should set onUpdate callback when provided', function () { var cb = function () {}; var result = NumberTweenBuilder(mockParent, makeConfig({ onUpdate: cb }), undefined); expect(result.callbacks.onUpdate).not.toBeNull(); expect(result.callbacks.onUpdate.func).toBe(cb); }); it('should pass callbackParams to callbacks', function () { var cb = function () {}; var params = [ 1, 2, 3 ]; var result = NumberTweenBuilder(mockParent, makeConfig({ onComplete: cb, onCompleteParams: params }), undefined); expect(result.callbacks.onComplete.params).toEqual(params); }); it('should not set callbacks that are not provided', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.callbacks.onComplete).toBeNull(); expect(result.callbacks.onStart).toBeNull(); }); }); describe('custom defaults', function () { it('should use provided defaults for duration when not in config', function () { var customDefaults = { duration: 5000 }; var result = NumberTweenBuilder(mockParent, makeConfig({}), customDefaults); expect(result.data[0].duration).toBe(5000); }); it('should prefer config values over custom defaults', function () { var customDefaults = { duration: 5000 }; var result = NumberTweenBuilder(mockParent, makeConfig({ duration: 250 }), customDefaults); expect(result.data[0].duration).toBe(250); }); it('should use provided defaults for repeat when not in config', function () { var customDefaults = { repeat: 4 }; var result = NumberTweenBuilder(mockParent, makeConfig({}), customDefaults); expect(result.data[0].repeat).toBe(4); }); }); describe('tween data', function () { it('should create exactly one tween data entry', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.data.length).toBe(1); }); it('should target the value property', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.data[0].key).toBe('value'); }); it('should use default duration of 1000ms', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.data[0].duration).toBe(1000); }); it('should use config duration', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ duration: 3000 }), undefined); expect(result.data[0].duration).toBe(3000); }); it('should default yoyo to false', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.data[0].yoyo).toBe(false); }); it('should set yoyo from config', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ yoyo: true }), undefined); expect(result.data[0].yoyo).toBe(true); }); it('should default repeat to 0', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.data[0].repeat).toBe(0); }); it('should set repeat from config', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ repeat: 5 }), undefined); expect(result.data[0].repeat).toBe(5); }); it('should default hold to 0', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.data[0].hold).toBe(0); }); it('should set hold from config', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ hold: 300 }), undefined); expect(result.data[0].hold).toBe(300); }); it('should default repeatDelay to 0', function () { var result = NumberTweenBuilder(mockParent, makeConfig({}), undefined); expect(result.data[0].repeatDelay).toBe(0); }); it('should set repeatDelay from config', function () { var result = NumberTweenBuilder(mockParent, makeConfig({ repeatDelay: 150 }), undefined); expect(result.data[0].repeatDelay).toBe(150); }); }); });