using System; using System.Collections.Generic; using System.Linq; using System.Text; using Annulus.DiscreteCollisionDetection; using Annulus; using Azimuth; namespace Annulus.UnitTests.DiscreteCollisionDetection { public class SegmentPointTests : UnitTestSharp.TestFixture { public class DistanceTests : UnitTestSharp.TestFixture { public void Basic() { Scalar distance = SegmentPoint.DistanceSquared(new Line { From = new Vector(-10, 0), To = new Vector(3, 0), }, new Vector(0, 3)); CheckEqual(9, distance); } public void TooLeft() { Scalar distance = SegmentPoint.DistanceSquared(new Line { From = new Vector(-1, 0), To = new Vector(1, 0), }, new Vector(-3, 0)); CheckEqual(4, distance); } public void TooRight() { Scalar distance = SegmentPoint.DistanceSquared(new Line { From = new Vector(-1, 0), To = new Vector(1, 0), }, new Vector(3, 0)); CheckEqual(4, distance); } public void DegenerateLine_SamePoint() { Scalar distance = SegmentPoint.DistanceSquared(new Line { From = new Vector(1, 0), To = new Vector(1, 0), }, new Vector(1, 0)); CheckEqual(0, distance); } public void DegenerateLine_DifferentPoint() { Scalar distance = SegmentPoint.DistanceSquared(new Line { From = new Vector(1, 0), To = new Vector(1, 0), }, new Vector(5, 0)); CheckEqual(16, distance); } public void NaNs_Line() { Scalar distance = SegmentPoint.DistanceSquared(new Line { From = new Vector(Scalar.NaN, 0), To = new Vector(1, 0), }, new Vector(5, 0)); Check(Scalar.IsNaN(distance)); } public void NaNs_Point() { Scalar distance = SegmentPoint.DistanceSquared(new Line { From = new Vector(2, 0), To = new Vector(1, 0), }, new Vector(Scalar.NaN, 0)); Check(Scalar.IsNaN(distance)); } } } }