UNPKG

phaser

Version:

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

136 lines (111 loc) 4.4 kB
var Decompose = require('../../../src/geom/triangle/Decompose'); describe('Phaser.Geom.Triangle.Decompose', function () { it('should return an array', function () { var triangle = { x1: 0, y1: 0, x2: 1, y2: 0, x3: 0, y3: 1 }; var result = Decompose(triangle); expect(Array.isArray(result)).toBe(true); }); it('should return an array with three elements', function () { var triangle = { x1: 0, y1: 0, x2: 1, y2: 0, x3: 0, y3: 1 }; var result = Decompose(triangle); expect(result.length).toBe(3); }); it('should return the correct x and y values for each point', function () { var triangle = { x1: 10, y1: 20, x2: 30, y2: 40, x3: 50, y3: 60 }; var result = Decompose(triangle); expect(result[0].x).toBe(10); expect(result[0].y).toBe(20); expect(result[1].x).toBe(30); expect(result[1].y).toBe(40); expect(result[2].x).toBe(50); expect(result[2].y).toBe(60); }); it('should create a new array if no out array is provided', function () { var triangle = { x1: 0, y1: 0, x2: 1, y2: 0, x3: 0, y3: 1 }; var result = Decompose(triangle); expect(result).toBeDefined(); expect(Array.isArray(result)).toBe(true); }); it('should append to the provided out array', function () { var triangle = { x1: 1, y1: 2, x2: 3, y2: 4, x3: 5, y3: 6 }; var out = []; var result = Decompose(triangle, out); expect(result).toBe(out); expect(out.length).toBe(3); }); it('should append points to an existing out array without clearing it', function () { var triangle = { x1: 1, y1: 2, x2: 3, y2: 4, x3: 5, y3: 6 }; var out = [{ x: 99, y: 99 }]; Decompose(triangle, out); expect(out.length).toBe(4); expect(out[0].x).toBe(99); expect(out[0].y).toBe(99); }); it('should return the same out array reference', function () { var triangle = { x1: 0, y1: 0, x2: 1, y2: 0, x3: 0, y3: 1 }; var out = []; var result = Decompose(triangle, out); expect(result).toBe(out); }); it('should handle negative coordinate values', function () { var triangle = { x1: -10, y1: -20, x2: -30, y2: -40, x3: -50, y3: -60 }; var result = Decompose(triangle); expect(result[0].x).toBe(-10); expect(result[0].y).toBe(-20); expect(result[1].x).toBe(-30); expect(result[1].y).toBe(-40); expect(result[2].x).toBe(-50); expect(result[2].y).toBe(-60); }); it('should handle floating point coordinate values', function () { var triangle = { x1: 1.5, y1: 2.5, x2: 3.7, y2: 4.2, x3: 5.1, y3: 6.9 }; var result = Decompose(triangle); expect(result[0].x).toBeCloseTo(1.5); expect(result[0].y).toBeCloseTo(2.5); expect(result[1].x).toBeCloseTo(3.7); expect(result[1].y).toBeCloseTo(4.2); expect(result[2].x).toBeCloseTo(5.1); expect(result[2].y).toBeCloseTo(6.9); }); 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 = Decompose(triangle); expect(result.length).toBe(3); expect(result[0].x).toBe(5); expect(result[0].y).toBe(5); expect(result[1].x).toBe(5); expect(result[1].y).toBe(5); expect(result[2].x).toBe(5); expect(result[2].y).toBe(5); }); it('should handle zero coordinate values', function () { var triangle = { x1: 0, y1: 0, x2: 0, y2: 0, x3: 0, y3: 0 }; var result = Decompose(triangle); expect(result[0].x).toBe(0); expect(result[0].y).toBe(0); expect(result[1].x).toBe(0); expect(result[1].y).toBe(0); expect(result[2].x).toBe(0); expect(result[2].y).toBe(0); }); it('should produce point objects with only x and y properties from the triangle vertices', function () { var triangle = { x1: 7, y1: 8, x2: 9, y2: 10, x3: 11, y3: 12 }; var result = Decompose(triangle); expect(result[0]).toEqual({ x: 7, y: 8 }); expect(result[1]).toEqual({ x: 9, y: 10 }); expect(result[2]).toEqual({ x: 11, y: 12 }); }); });