UNPKG

phaser

Version:

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

130 lines (97 loc) 3.28 kB
var GetBounds = require('../../../src/geom/circle/GetBounds'); var Rectangle = require('../../../src/geom/rectangle/Rectangle'); describe('Phaser.Geom.Circle.GetBounds', function () { var circle; beforeEach(function () { circle = { left: 50, top: 50, diameter: 100 }; }); it('should return a Rectangle when no out parameter is given', function () { var result = GetBounds(circle); expect(result).toBeInstanceOf(Rectangle); }); it('should set x to circle.left', function () { var result = GetBounds(circle); expect(result.x).toBe(50); }); it('should set y to circle.top', function () { var result = GetBounds(circle); expect(result.y).toBe(50); }); it('should set width to circle.diameter', function () { var result = GetBounds(circle); expect(result.width).toBe(100); }); it('should set height to circle.diameter', function () { var result = GetBounds(circle); expect(result.height).toBe(100); }); it('should populate a provided Rectangle out object', function () { var out = new Rectangle(); var result = GetBounds(circle, out); expect(result).toBe(out); expect(out.x).toBe(50); expect(out.y).toBe(50); expect(out.width).toBe(100); expect(out.height).toBe(100); }); it('should populate a plain object as out', function () { var out = { x: 0, y: 0, width: 0, height: 0 }; var result = GetBounds(circle, out); expect(result).toBe(out); expect(out.x).toBe(50); expect(out.y).toBe(50); expect(out.width).toBe(100); expect(out.height).toBe(100); }); it('should return the out parameter that was passed in', function () { var out = new Rectangle(); var result = GetBounds(circle, out); expect(result).toBe(out); }); it('should handle a circle at the origin with zero radius', function () { var zeroCircle = { left: 0, top: 0, diameter: 0 }; var result = GetBounds(zeroCircle); expect(result.x).toBe(0); expect(result.y).toBe(0); expect(result.width).toBe(0); expect(result.height).toBe(0); }); it('should handle a circle with negative position', function () { var negCircle = { left: -150, top: -75, diameter: 50 }; var result = GetBounds(negCircle); expect(result.x).toBe(-150); expect(result.y).toBe(-75); expect(result.width).toBe(50); expect(result.height).toBe(50); }); it('should handle floating point values', function () { var floatCircle = { left: 10.5, top: 20.25, diameter: 33.75 }; var result = GetBounds(floatCircle); expect(result.x).toBeCloseTo(10.5); expect(result.y).toBeCloseTo(20.25); expect(result.width).toBeCloseTo(33.75); expect(result.height).toBeCloseTo(33.75); }); it('should produce equal width and height since both come from diameter', function () { var result = GetBounds(circle); expect(result.width).toBe(result.height); }); });