using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Azimuth; using Annulus; namespace Annulus.UnitTests { public class ConvexPolygonTests : UnitTestSharp.TestFixture { public void Square() { var vertices = new Vector[] { new Vector (10, 10), new Vector (10, -10), new Vector (-10, -10), new Vector (-10, 10), }; var poly = new ConvexPolygon(vertices); CheckEqual(poly.VertexList, vertices); } public void ConcaveShape() { var vertices = new Vector[] { new Vector (10, 10), new Vector (0, 0), new Vector (10, -10), new Vector (-10, -10), new Vector (-10, 10), }; CheckThrow(typeof(Exception)); var poly = new ConvexPolygon(vertices); } public class SupportVertexTests : UnitTestSharp.TestFixture { public void Basic() { var vertices = new Vector[] { new Vector (10, 10), new Vector (10, -10), new Vector (-10, -10), new Vector (-10, 10), }; var poly = new ConvexPolygon(vertices); var vertex = poly.SupportVertex(new Vector(-1, 1)); CheckEqual(poly.GetVertex(3), vertex); } public void ZeroMagnitudeDirection() { var vertices = new Vector[] { new Vector (10, 10), new Vector (10, -10), new Vector (-10, -10), new Vector (-10, 10), }; var poly = new ConvexPolygon(vertices); var vertex = poly.SupportVertex(new Vector(0, 0)); CheckEqual(poly.GetVertex(0), vertex); } public void AmbiguousDirection() { var vertices = new Vector[] { new Vector (10, 10), new Vector (10, -10), new Vector (-10, -10), new Vector (-10, 10), }; var poly = new ConvexPolygon(vertices); var vertex = poly.SupportVertex(new Vector(-1, 0)); CheckEqual(poly.GetVertex(2), vertex); } } } }