diff --git a/SharedTests/GeometryTests.cs b/SharedTests/GeometryTests.cs index 4ae36f2..7db8a79 100644 --- a/SharedTests/GeometryTests.cs +++ b/SharedTests/GeometryTests.cs @@ -5,6 +5,41 @@ using System; namespace SemiColinGames.Tests { [TestClass] public class GeometryTests { + + public void AssertVectorsAreEqual(Vector2 v1, Vector2 v2) { + Assert.AreEqual(v1.X, v2.X, 1e-5); + Assert.AreEqual(v1.Y, v2.Y, 1e-5); + } + + [TestMethod] + public void TestVector2Rotate() { + Vector2 v = new Vector2(10, 0); + AssertVectorsAreEqual(new Vector2(10, 0), v.Rotate(FMath.DegToRad(0))); + AssertVectorsAreEqual(new Vector2(0, 10), v.Rotate(FMath.DegToRad(90))); + AssertVectorsAreEqual(new Vector2(-10, 0), v.Rotate(FMath.DegToRad(180))); + AssertVectorsAreEqual(new Vector2(0, -10), v.Rotate(FMath.DegToRad(270))); + AssertVectorsAreEqual(new Vector2(10, 0), v.Rotate(FMath.DegToRad(360))); + AssertVectorsAreEqual(new Vector2(0, 10), v.Rotate(FMath.DegToRad(450))); + + AssertVectorsAreEqual(new Vector2(0, -10), v.Rotate(FMath.DegToRad(-90))); + AssertVectorsAreEqual(new Vector2(-10, 0), v.Rotate(FMath.DegToRad(-180))); + AssertVectorsAreEqual(new Vector2(0, 10), v.Rotate(FMath.DegToRad(-270))); + AssertVectorsAreEqual(new Vector2(10, 0), v.Rotate(FMath.DegToRad(-360))); + AssertVectorsAreEqual(new Vector2(0, -10), v.Rotate(FMath.DegToRad(-450))); + + AssertVectorsAreEqual(new Vector2(7.0710678f, 7.0710678f), v.Rotate(FMath.DegToRad(45))); + AssertVectorsAreEqual(new Vector2(8.6602540f, 5f), v.Rotate(FMath.DegToRad(30))); + AssertVectorsAreEqual(new Vector2(5f, 8.6602540f), v.Rotate(FMath.DegToRad(60))); + AssertVectorsAreEqual(new Vector2(-5f, 8.6602540f), v.Rotate(FMath.DegToRad(120))); + AssertVectorsAreEqual(new Vector2(-8.6602540f, 5f), v.Rotate(FMath.DegToRad(150))); + + AssertVectorsAreEqual(new Vector2(7.0710678f, -7.0710678f), v.Rotate(FMath.DegToRad(-45))); + AssertVectorsAreEqual(new Vector2(8.6602540f, -5f), v.Rotate(FMath.DegToRad(-30))); + AssertVectorsAreEqual(new Vector2(5f, -8.6602540f), v.Rotate(FMath.DegToRad(-60))); + AssertVectorsAreEqual(new Vector2(-5f, -8.6602540f), v.Rotate(FMath.DegToRad(-120))); + AssertVectorsAreEqual(new Vector2(-8.6602540f, -5f), v.Rotate(FMath.DegToRad(-150))); + } + [TestMethod] public void TestIntersectSegmentNotColliding() { AABB box = new AABB(new Vector2(0, 0), new Vector2(8, 8));