using System; using System.Collections.Generic; using System.Linq; using System.Text; using Azimuth; using Annulus.Splines; namespace Annulus.UnitTests.Splines { public class PiecewiseSplineTests : UnitTestSharp.TestFixture { public void JustOneSpline() { var spline = new PiecewiseSpline(new LinearSpline(10, -10)); CheckEqual(-110, spline.EvaluateAt(-10)); CheckEqual(-10, spline.EvaluateAt(0)); CheckEqual(90, spline.EvaluateAt(10)); } public void TwoSplinesDisjoint() { var spline = new PiecewiseSpline(new LinearSpline(10, -10)); spline.AddNewMotion(new ConstantSpline(1000), 1); CheckEqual(-110, spline.EvaluateAt(-10)); CheckEqual(-10, spline.EvaluateAt(0)); CheckEqual(0, spline.EvaluateAt(1)); CheckEqual(0, spline.EvaluateAt(10)); CheckEqual(0, spline.EvaluateAt(1000)); } public void StompValues() { var spline = new PiecewiseSpline(new LinearSpline(10, -10)); spline.AddNewMotion(new ConstantSpline(1000), 10); spline.AddNewMotion(new ConstantSpline(1000), 1); CheckEqual(-110, spline.EvaluateAt(-10)); CheckEqual(-10, spline.EvaluateAt(0)); CheckEqual(0, spline.EvaluateAt(1)); CheckEqual(0, spline.EvaluateAt(10)); CheckEqual(0, spline.EvaluateAt(1000)); } public void RecentersTime() { var spline = new PiecewiseSpline(new LinearSpline(10, -10)); spline.AddNewMotion(new QuadraticSpline(1, 0, 0), 2); CheckEqual(-110, spline.EvaluateAt(-10)); CheckEqual(-10, spline.EvaluateAt(0)); CheckEqual(10, spline.EvaluateAt(2)); CheckEqual(14, spline.EvaluateAt(4)); CheckEqual(110, spline.EvaluateAt(12)); } public void AABB_ScalarTest() { var spline = new PiecewiseSpline(new LinearSpline(2, -4)); spline.AddNewMotion(new ConstantSpline(8), 6); var range = new Interval(-1, 20); var expected = new AABB(-6, 8); var observed = spline.GetAABB(range); CheckEqual(expected, observed); } public void AABB_VectorTest() { var spline = new PiecewiseSpline(new LinearSpline(new Vector(2, 3), new Vector(-4,2))); spline.AddNewMotion(new ConstantSpline(new Vector(8, 20)), 6); var range = new Interval(-1, 20); var expected = new AABB(new Vector(-6, -1), new Vector(8, 20)); var observed = spline.GetAABB(range); CheckEqual(expected, observed); } } }