using System; using System.Collections.Generic; using System.Linq; using System.Text; using Azimuth; namespace Annulus.UnitTests { public class LineTests : UnitTestSharp.TestFixture { public class Project : UnitTestSharp.TestFixture { public void Basic() { var line = new Line( new Vector(0, 0), new Vector(1, 1) ); var fraction = line.ProjectPoint(new Vector(2,2)); CheckEqual(2, fraction); } public void Degenerate() { var line = new Line( new Vector(0, 0), new Vector(0, 0) ); CheckThrow(typeof(Exception)); var fraction = line.ProjectPoint(new Vector(2,2)); } public void Straddling0() { var line = new Line( new Vector(-1, 0), new Vector(1, 0) ); var fraction = line.ProjectPoint(new Vector(1, 0)); CheckEqual(1, fraction); } } public class Interpolate : UnitTestSharp.TestFixture { public void Basic() { var line = new Line( new Vector(0, 0), new Vector(1, 1) ); var point = line.Interpolate(2); CheckEqual(new Vector(2, 2), point); } public void Degenerate() { var line = new Line( new Vector(0, 0), new Vector(0, 0) ); var point = line.Interpolate(100); CheckEqual(new Vector(0, 0), point); } public void Straddling0() { var line = new Line( new Vector(-1, 0), new Vector(1, 0) ); var point = line.Interpolate(0.5); CheckEqual(new Vector(0,0), point); } } public class IsDegenerate : UnitTestSharp.TestFixture { public void Basic() { var line = new Line(new Vector(0, 0), new Vector(0, 0)); Check(line.IsDegenerate()); } public void NaN_X() { var line = new Line(new Vector(Scalar.NaN, 0), new Vector(0, 0)); Check(line.IsDegenerate()); } public void NaN_Y() { var line = new Line(new Vector(0, Scalar.NaN), new Vector(0, 0)); Check(line.IsDegenerate()); } public void NotDegenerate() { var line = new Line(new Vector(1, 1), new Vector(0, 0)); CheckFalse(line.IsDegenerate()); } } } }