UNPKG

phaser

Version:

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

117 lines (92 loc) 3.54 kB
var Centroid = require('../../../src/geom/triangle/Centroid'); describe('Phaser.Geom.Triangle.Centroid', function () { it('should return a Vector2 when no out parameter is provided', function () { var triangle = { x1: 0, y1: 0, x2: 6, y2: 0, x3: 3, y3: 6 }; var result = Centroid(triangle); expect(result).toBeDefined(); expect(typeof result.x).toBe('number'); expect(typeof result.y).toBe('number'); }); it('should calculate the centroid of a simple triangle', function () { var triangle = { x1: 0, y1: 0, x2: 6, y2: 0, x3: 3, y3: 6 }; var result = Centroid(triangle); expect(result.x).toBe(3); expect(result.y).toBe(2); }); it('should calculate the centroid of an equilateral triangle', function () { var triangle = { x1: 0, y1: 0, x2: 6, y2: 0, x3: 3, y3: 3 }; var result = Centroid(triangle); expect(result.x).toBe(3); expect(result.y).toBe(1); }); it('should write result to the provided out object', function () { var triangle = { x1: 0, y1: 0, x2: 9, y2: 0, x3: 0, y3: 9 }; var out = { x: 0, y: 0 }; var result = Centroid(triangle, out); expect(result).toBe(out); expect(out.x).toBe(3); expect(out.y).toBe(3); }); it('should return the out object itself', function () { var triangle = { x1: 0, y1: 0, x2: 3, y2: 0, x3: 0, y3: 3 }; var out = { x: 0, y: 0 }; var result = Centroid(triangle, out); expect(result).toBe(out); }); it('should handle negative coordinates', function () { var triangle = { x1: -3, y1: -3, x2: 3, y2: -3, x3: 0, y3: 3 }; var result = Centroid(triangle); expect(result.x).toBe(0); expect(result.y).toBeCloseTo(-1, 5); }); it('should handle a degenerate triangle where all points are the same', function () { var triangle = { x1: 5, y1: 5, x2: 5, y2: 5, x3: 5, y3: 5 }; var result = Centroid(triangle); expect(result.x).toBe(5); expect(result.y).toBe(5); }); it('should handle a degenerate triangle where all points are collinear', function () { var triangle = { x1: 0, y1: 0, x2: 3, y2: 3, x3: 6, y3: 6 }; var result = Centroid(triangle); expect(result.x).toBe(3); expect(result.y).toBe(3); }); it('should handle floating point coordinates', function () { var triangle = { x1: 0.5, y1: 0.5, x2: 1.5, y2: 0.5, x3: 1.0, y3: 1.5 }; var result = Centroid(triangle); expect(result.x).toBeCloseTo(1.0, 5); expect(result.y).toBeCloseTo(0.8333, 3); }); it('should handle a triangle at the origin', function () { var triangle = { x1: 0, y1: 0, x2: 0, y2: 0, x3: 0, y3: 0 }; var result = Centroid(triangle); expect(result.x).toBe(0); expect(result.y).toBe(0); }); it('should handle large coordinate values', function () { var triangle = { x1: 1000, y1: 2000, x2: 3000, y2: 4000, x3: 5000, y3: 6000 }; var result = Centroid(triangle); expect(result.x).toBe(3000); expect(result.y).toBe(4000); }); it('should overwrite existing values in the out object', function () { var triangle = { x1: 0, y1: 0, x2: 3, y2: 0, x3: 0, y3: 3 }; var out = { x: 999, y: 888 }; Centroid(triangle, out); expect(out.x).toBe(1); expect(out.y).toBe(1); }); });