using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnitTestSharp; using Annulus; using Azimuth; namespace Annulus.UnitTests { public class PolygonTests : UnitTestSharp.TestFixture { public class CalculatePerimeterTests : UnitTestSharp.TestFixture { public void Basic() { var poly = new Polygon(new Vector[] { new Vector(2, 0), new Vector(2, 2), new Vector(0, 2), new Vector(0, 0), }); CheckEqual(8, poly.CalculatePerimeter()); } public void Basic_ReverseWinding() { var poly = new Polygon(new Vector[] { new Vector(2, 0), new Vector(0, 0), new Vector(0, 2), new Vector(2, 2), }); CheckEqual(8, poly.CalculatePerimeter()); } } public class GetEdgeBeetweenVertices : UnitTestSharp.TestFixture { public static Polygon poly = new Polygon(new Vector[] { new Vector(2, 0), new Vector(2, 2), new Vector(0, 2), new Vector(0, 0), }); public void PrevNext() { var edge = Polygon.GetEdgeBetweenVertices(poly.GetVertex(2), poly.GetVertex(3)); CheckEqual(poly.GetEdge(2), edge); } public void NextPrev() { var edge = Polygon.GetEdgeBetweenVertices(poly.GetVertex(3), poly.GetVertex(2)); CheckEqual(poly.GetEdge(2), edge); } public void Unneighboring() { CheckThrow(typeof(Exception)); var edge = Polygon.GetEdgeBetweenVertices(poly.GetVertex(2), poly.GetVertex(0)); } } public class CalculateBoundingCircle : UnitTestSharp.TestFixture { public void Empty() { var poly = new Polygon(new Vector[] { }); var expected = new Circle { Radius = 0, }; CheckEqual(expected, poly.CalculateBoundingCircle()); } public void Square() { var poly = new Polygon(new Vector[] { new Vector(1, 1), new Vector(1, -1), new Vector(-1, -1), new Vector(-1, 1), }); var expected = new Circle { Radius = Math.Sqrt(2), }; CheckEqual(expected, poly.CalculateBoundingCircle()); } public void Empty_OffOrigin() { var poly = new Polygon(new Vector[] { }); var expected = new Circle { Radius = 0, }; CheckEqual(expected, poly.CalculateBoundingCircle(Vector.UnitX)); } public void Square_OffOrigin() { var poly = new Polygon(new Vector[] { new Vector(1, 1), new Vector(1, -1), new Vector(-1, -1), new Vector(-1, 1), }); var expected = new Circle { Radius = Math.Sqrt(11*11+21*21), }; CheckEqual(expected, poly.CalculateBoundingCircle(new Vector(10, 20))); } } } }