using System; using System.Collections.Generic; using System.Linq; using System.Text; using Azimuth; namespace Annulus.UnitTests { public class RayTests : UnitTestSharp.TestFixture { public class Interpolate : UnitTestSharp.TestFixture { public void Basic() { var ray = new Ray( new Vector(0, 0), new Vector(1, 1) ); var point = ray.Interpolate(2); CheckEqual(new Vector(2, 2), point); } public void Degenerate() { var ray = new Ray( new Vector(0, 0), new Vector(0, 0) ); var point = ray.Interpolate(100); CheckEqual(new Vector(0, 0), point); } public void Straddling0() { var ray = new Ray( new Vector(-1, 0), new Vector(1, 0) ); var point = ray.Interpolate(0.5); CheckEqual(new Vector(-0.5,0), point); } } public class IsDegenerate : UnitTestSharp.TestFixture { public void DegenerateDirection() { var ray = new Ray(new Vector(2, 2), new Vector(0, 0)); Check(ray.IsDegenerate()); } public void NaN_From_X() { var ray = new Ray(new Vector(Scalar.NaN, 0), new Vector(0, 0)); Check(ray.IsDegenerate()); } public void NaN_From_Y() { var ray = new Ray(new Vector(0, Scalar.NaN), new Vector(0, 0)); Check(ray.IsDegenerate()); } public void NaN_Dir_X() { var ray = new Ray(new Vector(0, 0), new Vector(Scalar.NaN, 0)); Check(ray.IsDegenerate()); } public void NaN_Dir_Y() { var ray = new Ray(new Vector(0, 0), new Vector(0, Scalar.NaN)); Check(ray.IsDegenerate()); } public void NotDegenerate() { var ray = new Ray(new Vector(1, 1), new Vector(1, 0)); CheckFalse(ray.IsDegenerate()); } } public class Project : UnitTestSharp.TestFixture { public void Basic() { var ray = new Ray( new Vector(0, 0), new Vector(1, 1) ); var fraction = ray.ProjectPoint(new Vector(2, 2)); CheckEqual(2, fraction); } public void Degenerate() { var ray = new Ray( new Vector(0, 0), new Vector(0, 0) ); CheckThrow(typeof(Exception)); var fraction = ray.ProjectPoint(new Vector(2, 2)); } public void Straddling0() { var ray = new Ray( new Vector(-1, 0), new Vector(2, 0) ); var fraction = ray.ProjectPoint(new Vector(1, 0)); CheckEqual(1, fraction); } } } }