using System; using System.Collections.Generic; using System.Linq; using System.Text; using Azimuth; using Annulus; namespace Annulus.UnitTests { public class PolygonEdgeTests : UnitTestSharp.TestFixture { static SimplePolygon box = new SimplePolygon(new Vector[] { new Vector(-1,-1), new Vector(-1,1), new Vector(1,1), new Vector(1,-1), }); public class GetNextEdge : UnitTestSharp.TestFixture { public void Basic() { var edge = box.GetEdge(0); var next = edge.NextEdge; CheckEqual(box.GetEdge(1), next); } public void Wraps() { var edge = box.GetEdge(3); var next = edge.NextEdge; CheckEqual(box.GetEdge(0), next); } } public class GetPrevEdge : UnitTestSharp.TestFixture { public void Basic() { var edge = box.GetEdge(1); var prev = edge.PrevEdge; CheckEqual(box.GetEdge(0), prev); } public void Wraps() { var edge = box.GetEdge(0); var prev = edge.PrevEdge; CheckEqual(box.GetEdge(3), prev); } } public class Direction : UnitTestSharp.TestFixture { public void Basic() { var edge = box.GetEdge(0); CheckEqual(new Vector(0, 2), edge.Direction); } } public class StartVertex : UnitTestSharp.TestFixture { public void Basic() { var edge = box.GetEdge(0); CheckEqual(new Vector(-1, -1), edge.StartVertexPosition); } } public class EndVertex : UnitTestSharp.TestFixture { public void Basic() { var edge = box.GetEdge(0); CheckEqual(new Vector(-1, 1), edge.EndVertexPosition); } } public class LineTests : UnitTestSharp.TestFixture { public void Basic() { var edge = box.GetEdge(0); CheckEqual(new Line { From = edge.StartVertexPosition, To = edge.EndVertexPosition, }, edge.Line); } } public class MostExtreme : UnitTestSharp.TestFixture { public void Identical() { var extreme = Polygon.Edge.MostExtreme(box.GetEdge(0), box.GetEdge(0)); CheckEqual(box.GetEdge(0), extreme); } public void Basic() { var extreme = Polygon.Edge.MostExtreme(box.GetEdge(0), box.GetEdge(2)); CheckEqual(box.GetEdge(0), extreme); } public void Ambiguous() { { var extreme = Polygon.Edge.MostExtreme(box.GetEdge(0), box.GetEdge(1)); CheckEqual(box.GetEdge(0), extreme); } { var extreme = Polygon.Edge.MostExtreme(box.GetEdge(1), box.GetEdge(0)); CheckEqual(box.GetEdge(1), extreme); } } } } }