public void Update() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); float2 a = float2.zero; testSpline2D.AddControlPoint(float2.zero); float2 b = new float2(1f, 0f); testSpline2D.AddControlPoint(b); Assert.AreEqual(2, testSpline2D.ControlPointCount); Assert.AreEqual(2, testSpline2D.Modes.Count); Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count); TestHelpers.CheckFloat2(a, testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point)); TestHelpers.CheckFloat2(b, testSpline2D.Get2DPointWorld(1f)); TestHelpers.CheckFloat2(b, testSpline2D.GetControlPoint(1, SplinePoint.Point)); //update 0 point position float2 a2 = new float2(-1f, -1f); testSpline2D.UpdateControlPointLocal(0, a2, SplinePoint.Point); TestHelpers.CheckFloat2(a2, testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(a2, testSpline2D.GetControlPoint(0, SplinePoint.Point)); //update 1 point position float2 b2 = new float2(2f, 2f); testSpline2D.UpdateControlPointLocal(1, b2, SplinePoint.Point); TestHelpers.CheckFloat2(b2, testSpline2D.Get2DPointWorld(1f)); TestHelpers.CheckFloat2(b2, testSpline2D.GetControlPoint(1, SplinePoint.Point)); }
public void Point3() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); float2 a = float2.zero; float2 b = new float2(2.5f, 0f); float2 c = new float2(7.5f, 0f); float2 d = new float2(10f, 0f); testSpline2D.AddControlPoint(a); testSpline2D.AddControlPoint(b); testSpline2D.AddControlPoint(c); testSpline2D.AddControlPoint(d); Assert.AreEqual(4, testSpline2D.ControlPointCount); Assert.AreEqual(4, testSpline2D.Modes.Count); Assert.AreEqual(10f, testSpline2D.Length()); Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count); Assert.AreEqual(0.5f, testSpline2D.Times[0]); Assert.AreEqual(1f, testSpline2D.Times[1]); TestHelpers.CheckFloat2(a, testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(new float2(5f, 0f), testSpline2D.Get2DPointWorld(0.5f)); TestHelpers.CheckFloat2(d, testSpline2D.Get2DPointWorld(1f)); TestHelpers.CheckFloat2(d, testSpline2D.Get2DPointWorld(1.5f)); TestHelpers.CheckFloat2(d, testSpline2D.Get2DPointWorld(5f)); }
public void InsertWithOne() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); float2 a = float2.zero; testSpline2D.AddControlPoint(float2.zero); Assert.AreEqual(1, testSpline2D.ControlPointCount); Assert.AreEqual(1, testSpline2D.Modes.Count); Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count); TestHelpers.CheckFloat2(a, testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point)); float2 b = new float2(10f, 0f); testSpline2D.InsertControlPoint(1000, b); TestHelpers.CheckFloat2(b, testSpline2D.Get2DPointWorld(1f)); TestHelpers.CheckFloat2(b, testSpline2D.GetControlPoint(1, SplinePoint.Point)); Assert.AreEqual(2, testSpline2D.ControlPointCount); Assert.AreEqual(2, testSpline2D.Modes.Count); Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count); }
public void InsertAtStart() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); float2 a = float2.zero; testSpline2D.AddControlPoint(float2.zero); float2 b = new float2(2f, 0f); testSpline2D.AddControlPoint(b); Assert.AreEqual(2, testSpline2D.ControlPointCount); Assert.AreEqual(2, testSpline2D.Modes.Count); Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count); TestHelpers.CheckFloat2(a, testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point)); TestHelpers.CheckFloat2(b, testSpline2D.Get2DPointWorld(1f)); TestHelpers.CheckFloat2(b, testSpline2D.GetControlPoint(1, SplinePoint.Point)); //insert point float2 c = new float2(-2f, 0f); testSpline2D.InsertControlPoint(0, c); Assert.AreEqual(3, testSpline2D.ControlPointCount); Assert.AreEqual(3, testSpline2D.Modes.Count); Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count); TestHelpers.CheckFloat2(c, testSpline2D.GetControlPoint(0, SplinePoint.Point)); TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(1, SplinePoint.Point)); TestHelpers.CheckFloat2(b, testSpline2D.GetControlPoint(2, SplinePoint.Point)); }
public void ProgressUnder([NUnit.Framework.Range(0, 8)] int nodeAmount) { const float offsetX = 2f; const float offsetY = 2f; ISimpleTestSpline2D testSpline2D = PrepareSpline(); float2 first = float2.zero; for (int i = 0; i < nodeAmount; i++) { float2 pos = new float2(offsetX * (i + 1), offsetY * (i + 1)); if (i == 0) { first = pos; } testSpline2D.AddControlPoint(pos); } Assert.AreEqual(nodeAmount, testSpline2D.ControlPointCount); Assert.AreEqual(first, testSpline2D.Get2DPointWorld(0f)); Assert.AreEqual(first, testSpline2D.Get2DPointWorld(-0.5f)); Assert.AreEqual(first, testSpline2D.Get2DPointWorld(-1f)); }
public void Point2() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); float2 a = float2.zero; testSpline2D.AddControlPoint(float2.zero); float2 b = c_xOne; testSpline2D.AddControlPoint(b); float2 c = c_xTwo; testSpline2D.AddControlPoint(c); Assert.AreEqual(3, testSpline2D.ControlPointCount); Assert.AreEqual(2f, testSpline2D.Length()); Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count); //Assert.AreEqual(0.5f, testSpline.Times[0]); //Assert.AreEqual(1f, testSpline.Times[1]); TestHelpers.CheckFloat2(a, testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(new float2(1f, 0f), testSpline2D.Get2DPointWorld(0.5f)); //TestHelpers.CheckFloat2(c * 0.77f, spline.GetPoint(0.77f)); // fails due to bezier point bunching issues }
public void NoPoints() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); Assert.AreEqual(0, testSpline2D.ControlPointCount); TestHelpers.CheckFloat2(float2.zero, testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(float2.zero, testSpline2D.Get2DPointWorld(1f)); TestHelpers.CheckFloat2(float2.zero, testSpline2D.Get2DPointWorld(0.5f)); }
public void Loopback() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); float2 topLeft = new float2(1f, 2f); float2 bottomLeft = new float2(1f, 1f); float2 bottomRight = new float2(2f, 1f); testSpline2D.AddControlPoint(topLeft); testSpline2D.AddControlPoint(bottomLeft); testSpline2D.AddControlPoint(bottomRight); Assert.AreEqual(3, testSpline2D.ControlPointCount); Assert.AreEqual(2, testSpline2D.SegmentPointCount); Assert.AreEqual(topLeft, testSpline2D.Get2DPointWorld(0f)); Assert.AreNotEqual(topLeft, testSpline2D.Get2DPointWorld(1f)); Assert.AreEqual(bottomRight, testSpline2D.Get2DPointWorld(1f)); }
public void Circle() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); float2 topLeft = new float2(1f, 2f); float2 bottomLeft = new float2(1f, 1f); float2 bottomRight = new float2(2f, 1f); float2 topRight = new float2(2f, 2f); testSpline2D.AddControlPoint(topLeft); testSpline2D.AddControlPoint(bottomLeft); testSpline2D.AddControlPoint(bottomRight); testSpline2D.AddControlPoint(topRight); Assert.AreEqual(4, testSpline2D.ControlPointCount); Assert.AreEqual(3, testSpline2D.SegmentPointCount); TestHelpers.CheckFloat2(topLeft, testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(topLeft, testSpline2D.Get2DPointWorld(-0.1f)); TestHelpers.CheckFloat2(topRight, testSpline2D.Get2DPointWorld(1f)); TestHelpers.CheckFloat2(topRight, testSpline2D.Get2DPointWorld(1.1f)); (testSpline2D as ILoopingSpline).Looped = true; Assert.AreEqual(4, testSpline2D.ControlPointCount); Assert.AreEqual(5, testSpline2D.SegmentPointCount); Assert.AreNotEqual(topLeft, testSpline2D.Get2DPointWorld(-1f)); Assert.AreNotEqual(topRight, testSpline2D.Get2DPointWorld(2f)); }
public void Update2() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); float2 a = float2.zero; testSpline2D.AddControlPoint(float2.zero); float2 b = new float2(1f, 0f); testSpline2D.AddControlPoint(b); float2 c = new float2(2f, 0f); testSpline2D.AddControlPoint(c); Assert.AreEqual(3, testSpline2D.ControlPointCount); Assert.AreEqual(3, testSpline2D.Modes.Count); Assert.AreEqual(1, testSpline2D.Times.Count); TestHelpers.CheckFloat2(new float2(0.5f, 0f), testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point)); TestHelpers.CheckFloat2(b, testSpline2D.Get2DPointWorld(0.5f)); TestHelpers.CheckFloat2(b, testSpline2D.GetControlPoint(1, SplinePoint.Point)); TestHelpers.CheckFloat2(new float2(1.5f, 0f), testSpline2D.Get2DPointWorld(1f)); TestHelpers.CheckFloat2(c, testSpline2D.GetControlPoint(2, SplinePoint.Point)); //update 0 point position testSpline2D.UpdateControlPointLocal(0, new float2(0.5f, 1f), SplinePoint.Point); TestHelpers.CheckFloat2(new float2(0.75f, 0.5f), testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(new float2(0.5f, 1f), testSpline2D.GetControlPoint(0, SplinePoint.Point)); //update 1 point position float2 b2 = new float2(1f, 1f); testSpline2D.UpdateControlPointLocal(1, b2, SplinePoint.Point); TestHelpers.CheckFloat2(b2, testSpline2D.GetControlPoint(1, SplinePoint.Point)); //update 2 point position testSpline2D.UpdateControlPointLocal(2, new float2(2f, 1f), SplinePoint.Point); TestHelpers.CheckFloat2(new float2(1.5f, 1f), testSpline2D.Get2DPointWorld(1f)); TestHelpers.CheckFloat2(new float2(2f, 1f), testSpline2D.GetControlPoint(2, SplinePoint.Point)); }
public void NoTouch4Point() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); float2 topLeft = new float2(1f, 2f); float2 bottomLeft = new float2(1f, 1f); float2 bottomRight = new float2(2f, 1f); float2 topRight = new float2(2f, 2f); testSpline2D.AddControlPoint(topLeft); testSpline2D.AddControlPoint(bottomLeft); testSpline2D.AddControlPoint(bottomRight); testSpline2D.AddControlPoint(topRight); Assert.AreEqual(4, testSpline2D.ControlPointCount); Assert.AreEqual(3, testSpline2D.SegmentPointCount); TestHelpers.CheckFloat2(topLeft, testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(topLeft, testSpline2D.Get2DPointWorld(-0.1f)); TestHelpers.CheckFloat2(topRight, testSpline2D.Get2DPointWorld(1f)); TestHelpers.CheckFloat2(topRight, testSpline2D.Get2DPointWorld(1.1f), 0.025f); Assert.AreNotEqual(bottomLeft, testSpline2D.Get2DPointWorld(0.33f)); Assert.AreNotEqual(topRight, testSpline2D.Get2DPointWorld(0.66f)); }
public void Point4() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); float2 a = new float2(3f, 3f); testSpline2D.AddControlPoint(a); Assert.AreEqual(1, testSpline2D.ControlPointCount); Assert.AreEqual(0f, testSpline2D.Length()); TestHelpers.CheckFloat2(new float2(3f, 3f), testSpline2D.Get2DPointWorld(0.5f)); }
public void Point2() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); float2 a = float2.zero; testSpline2D.AddControlPoint(float2.zero); float2 b = new float2(1f, 0f); testSpline2D.AddControlPoint(b); float2 c = new float2(2f, 0f); testSpline2D.AddControlPoint(c); Assert.AreEqual(3, testSpline2D.ControlPointCount); Assert.AreEqual(1f, testSpline2D.Length()); Assert.AreEqual(1, testSpline2D.Times.Count); Assert.AreEqual(1f, testSpline2D.Times[0]); TestHelpers.CheckFloat2(new float2(0.5f, 0f), testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(new float2(1f, 0f), testSpline2D.Get2DPointWorld(0.5f)); }
public void InsertEmpty() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); Assert.AreEqual(0, testSpline2D.ControlPointCount); Assert.AreEqual(0, testSpline2D.Modes.Count); Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count); float2 a = float2.zero; testSpline2D.InsertControlPoint(12, a); Assert.AreEqual(1, testSpline2D.ControlPointCount); Assert.AreEqual(1, testSpline2D.Modes.Count); Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count); TestHelpers.CheckFloat2(a, testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point)); }
public void Point5() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); float2 a = new float2(1f, 10f); testSpline2D.AddControlPoint(a); float2 b = new float2(2f, 10f); testSpline2D.AddControlPoint(b); float2 c = new float2(3f, 10f); testSpline2D.AddControlPoint(c); Assert.AreEqual(3, testSpline2D.ControlPointCount); Assert.AreEqual(2f, testSpline2D.Length()); TestHelpers.CheckFloat2(new float2(2.5f, 10f), testSpline2D.Get2DPointWorld(0.7f), 0.01f); }
public void MultiMidPoint([NUnit.Framework.Range(1, 12)] int points) { ISimpleTestSpline2D testSpline2D = PrepareSpline(); for (int i = 0; i < points; i++) { testSpline2D.AddControlPoint(new float2(i)); } // todo figure out how to get catmull to like this test set // catmull has issues with long straights Assume.That(testSpline2D.SplineDataType != SplineType.CatmullRom, "Catmull rom spline currently not supported by this test"); Assert.AreEqual(points, testSpline2D.ControlPointCount); Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count); float2 point = testSpline2D.Get2DPointWorld(0.5f); TestHelpers.CheckFloat2(new float2((points - 1) / 2f), point); }
public void Translation() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); float3 move = new float3(10f, 0f, 10f); ((MonoBehaviour)testSpline2D).transform.position = move; Assert.AreEqual(0, testSpline2D.ControlPointCount); Assert.AreEqual(0, testSpline2D.Modes.Count); Assert.AreEqual(1, testSpline2D.Times.Count); float2 a = float2.zero; testSpline2D.InsertControlPoint(12, a); Assert.AreEqual(1, testSpline2D.ControlPointCount); Assert.AreEqual(1, testSpline2D.Modes.Count); Assert.AreEqual(1, testSpline2D.Times.Count); TestHelpers.CheckFloat2(a, testSpline2D.Get2DPointLocal(0f)); TestHelpers.CheckFloat2(move.xy + a, testSpline2D.Get2DPointWorld(0f)); TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point)); }