#if !UNITY_5_6_OR_NEWER using NUnit.Framework; namespace LinearAlgebra.Test { using Vector2 = Vector2Float; public class Vector2FloatTest { [SetUp] public void Setup() { } [Test] public void FromPolar() { } [Test] public void Equality() { Vector2 v1 = new(4, 5); Vector2 v2 = new(1, 2); Assert.IsFalse(v1 == v2, "4 5 == 1 2"); Assert.IsTrue(v1 != v2, "4 5 != 1 2"); v2 = new(4, 5); Assert.IsTrue(v1 == v2, "4 5 == 4 5"); Assert.IsFalse(v1 != v2, "4 5 != 4 5"); } [Test] public void Magnitude() { Vector2 v = new(1, 2); float m = 0; m = v.magnitude; Assert.AreEqual(m, 2.236068F, "v.magnitude 1 2"); m = Vector2.MagnitudeOf(v); Assert.AreEqual(m, 2.236068F, "MagnitudeOf 1 2"); v = new(-1, -2); m = v.magnitude; Assert.AreEqual(m, 2.236068F, "v.magnitude -1 -2"); v = new(0, 0); m = v.magnitude; Assert.AreEqual(m, 0, "v.magnitude 0 0"); } [Test] public void SqrMagnitude() { Vector2 v = new(1, 2); float m = 0; m = v.sqrMagnitude; Assert.AreEqual(m, 5, "v.sqrMagnitude 1 2"); m = Vector2.SqrMagnitudeOf(v); Assert.AreEqual(m, 5, "SqrMagnitudeOf 1 2"); v = new(-1, -2); m = v.sqrMagnitude; Assert.AreEqual(m, 5, "v.sqrMagnitude -1 -2"); v = new(0, 0); m = v.sqrMagnitude; Assert.AreEqual(m, 0, "v.sqrMagnitude 0 0"); } [Test] public void Distance() { Vector2 v1 = new(4, 5); Vector2 v2 = new(1, 2); float f = 0; f = Vector2.Distance(v1, v2); Assert.AreEqual(f, 4.24264002f, 1.0E-05F, "Distance(4 5, 1 2)"); v2 = new(-1, -2); f = Vector2.Distance(v1, v2); Assert.AreEqual(f, 8.602325F, "Distance(4 5, 1 2)"); v2 = new(0, 0); f = Vector2.Distance(v1, v2); Assert.AreEqual(f, 6.403124F, 1.0E-05F, "Distance(4 5, 1 2)"); } [Test] public void Normalize() { Vector2 v = new(0, 3); Vector2Float r; r = v.normalized; Assert.AreEqual(0, r.horizontal, "normalized 0 3 H"); Assert.AreEqual(1, r.vertical, "normalized 0 3 V"); r = Vector2.Normalize(v); Assert.AreEqual(0, r.horizontal, "Normalize 0 3 H"); Assert.AreEqual(1, r.vertical, "Normalize 0 3 V"); v = new(0, -3); r = v.normalized; Assert.AreEqual(0, r.horizontal, "normalized 0 -3 H"); Assert.AreEqual(-1, r.vertical, "normalized 0 -3 V"); v = new(0, 0); r = v.normalized; Assert.AreEqual(0, r.horizontal, "normalized 0 0 H"); Assert.AreEqual(0, r.vertical, "normalized 0 0 V"); } [Test] public void Negate() { Vector2 v = new(4, 5); Vector2 r; r = -v; Assert.AreEqual(-4, r.horizontal, "- 4 5 H"); Assert.AreEqual(-5, r.vertical, "- 4 5 V"); v = new(-4, -5); r = -v; Assert.AreEqual(4, r.horizontal, "- -4 -5 H"); Assert.AreEqual(5, r.vertical, "- -4 -5 V"); v = new(0, 0); r = -v; Assert.AreEqual(0, r.horizontal, "- 0 0 H"); Assert.AreEqual(0, r.vertical, "- 0 0 V"); } [Test] public void Subtract() { Vector2 v1 = new(4, 5); Vector2 v2 = new(1, 2); Vector2 r = Vector2.zero; r = v1 - v2; Assert.IsTrue(r == new Vector2(3, 3), "4 5 - 1 2"); v2 = new(-1, -2); r = v1 - v2; Assert.IsTrue(r == new Vector2(5, 7), "4 5 - -1 -2"); v2 = new(4, 5); r = v1 - v2; Assert.IsTrue(r == new Vector2(0, 0), "4 5 - 4 5"); r = v1; r -= v2; Assert.AreEqual(r, new Vector2(0, 0), "4 5 - 4 5"); v2 = new(0, 0); r = v1 - v2; Assert.AreEqual(r, new Vector2(4, 5), "4 5 - 0 0"); r -= v2; Assert.AreEqual(r, new Vector2(4, 5), "4 5 - 0 0"); } [Test] public void Addition() { Vector2 v1 = new(4, 5); Vector2 v2 = new(1, 2); Vector2 r = Vector2.zero; r = v1 + v2; Assert.IsTrue(r == new Vector2(5, 7), "4 5 + 1 2"); v2 = new(-1, -2); r = v1 + v2; Assert.IsTrue(r == new Vector2(3, 3), "4 5 + -1 -2"); r = v1; r += v2; Assert.AreEqual(r, new Vector2(3, 3), "4 5 + -1 -2"); v2 = new(0, 0); r = v1 + v2; Assert.AreEqual(r, new Vector2(4, 5), "4 5 + 0 0"); r += v2; Assert.AreEqual(r, new Vector2(4, 5), "4 5 + 0 0"); } [Test] public void Scale() { Vector2 v1 = new(4, 5); Vector2 v2 = new(1, 2); Vector2 r; r = Vector2.Scale(v1, v2); Assert.AreEqual(4, r.horizontal, "Scale 4 5 , 1 2 H"); Assert.AreEqual(10, r.vertical, "Scale 4 5 , 1 2 V"); v2 = new(-1, -2); r = Vector2.Scale(v1, v2); Assert.AreEqual(-4, r.horizontal, "Scale 4 5 , -1 -2 H"); Assert.AreEqual(-10, r.vertical, "Scale 4 5 , -1 -2 V"); v2 = new(0, 0); r = Vector2.Scale(v1, v2); Assert.AreEqual(0, r.horizontal, "Scale 4 5 , 0 0 H"); Assert.AreEqual(0, r.vertical, "Scale 4 5 , 0 0 V"); } [Test] public void Multiply() { Vector2 v1 = new(4, 5); int f = 3; Vector2 r; r = v1 * f; Assert.AreEqual(12, r.horizontal, "4 5 * 3 H"); Assert.AreEqual(15, r.vertical, "4 5 * 3 V"); r = f * v1; Assert.AreEqual(12, r.horizontal, "3 * 4 5 H"); Assert.AreEqual(15, r.vertical, "3 * 4 5 V"); f = -3; r = v1 * f; Assert.AreEqual(-12, r.horizontal, "4 5 * -3 H"); Assert.AreEqual(-15, r.vertical, "4 5 * -3 V"); f = 0; r = v1 * f; Assert.AreEqual(0, r.horizontal, "4 5 * 0 H"); Assert.AreEqual(0, r.vertical, "4 5 * 0 V"); } [Test] public void Divide() { Vector2 v1 = new(4, 5); float f = 2; Vector2 r; r = v1 / f; Assert.AreEqual(2, r.horizontal, "4 5 / 2 H"); Assert.AreEqual(2.5, r.vertical, "4 5 / 2 V"); f = -2; r = v1 / f; Assert.AreEqual(-2, r.horizontal, "4 5 / -2 H"); Assert.AreEqual(-2.5, r.vertical, "4 5 / -2 V"); f = 0; r = v1 / f; Assert.AreEqual(float.PositiveInfinity, r.horizontal, "4 5 / 0 H"); Assert.AreEqual(float.PositiveInfinity, r.vertical, "4 5 / 0 V"); } [Test] public void Dot() { Vector2 v1 = new(4, 5); Vector2 v2 = new(1, 2); float f; f = Vector2.Dot(v1, v2); Assert.AreEqual(14, f, "Dot(4 5, 1 2)"); v2 = new(-1, -2); f = Vector2.Dot(v1, v2); Assert.AreEqual(-14, f, "Dot(4 5, -1 -2)"); v2 = new(0, 0); f = Vector2.Dot(v1, v2); Assert.AreEqual(0, f, "Dot(4 5, 0 0)"); } [Test] public void SignedAngle() { Vector2 v1 = new(4, 5); Vector2 v2 = new(1, 2); float f; f = Vector2.SignedAngle(v1, v2); Assert.AreEqual(-12.094758f, f); v2 = new(-1, -2); f = Vector2.SignedAngle(v1, v2); Assert.AreEqual(167.905228f, f); v2 = new(0, 0); f = Vector2.SignedAngle(v1, v2); Assert.AreEqual(0, f); v1 = new(0, 1); v2 = new(1, 0); f = Vector2.SignedAngle(v1, v2); Assert.AreEqual(90, f); v1 = new(0, 1); v2 = new(0, -1); f = Vector2.SignedAngle(v1, v2); Assert.AreEqual(180, f); } [Test] public void UnsignedAngle() { Vector2 v1 = new(4, 5); Vector2 v2 = new(1, 2); float f; f = Vector2.UnsignedAngle(v1, v2); Assert.AreEqual(12.094758f, f); v2 = new(-1, -2); f = Vector2.UnsignedAngle(v1, v2); Assert.AreEqual(167.905228f, f); v2 = new(0, 0); f = Vector2.UnsignedAngle(v1, v2); Assert.AreEqual(0, f); v1 = new(0, 1); v2 = new(1, 0); f = Vector2.UnsignedAngle(v1, v2); Assert.AreEqual(90, f); v1 = new(0, 1); v2 = new(0, -1); f = Vector2.UnsignedAngle(v1, v2); Assert.AreEqual(180, f); } [Test] public void Rotate() { Vector2 v1 = new(1, 2); Vector2 r; r = Vector2.Rotate(v1, AngleFloat.Degrees(0)); Assert.AreEqual(0, Vector2.Distance(r, v1)); r = Vector2.Rotate(v1, AngleFloat.Degrees(180)); Assert.AreEqual(0, Vector2.Distance(r, new Vector2(-1, -2)), 1.0e-06); r = Vector2.Rotate(v1, AngleFloat.Degrees(-90)); Assert.AreEqual(0, Vector2.Distance(r, new Vector2(2, -1)), 1.0e-06); r = Vector2.Rotate(v1, AngleFloat.Degrees(270)); Assert.AreEqual(0, Vector2.Distance(r, new Vector2(2, -1)), 1.0e-06); } [Test] public void Lerp() { Vector2 v1 = new(4, 5); Vector2 v2 = new(1, 2); Vector2 r; r = Vector2.Lerp(v1, v2, 0); Assert.AreEqual(0, Vector2.Distance(r, v1), 0); r = Vector2.Lerp(v1, v2, 1); Assert.AreEqual(0, Vector2.Distance(r, v2), 0); r = Vector2.Lerp(v1, v2, 0.5f); Assert.AreEqual(0, Vector2.Distance(r, new Vector2(2.5f, 3.5f)), 0); r = Vector2.Lerp(v1, v2, -1); Assert.AreEqual(0, Vector2.Distance(r, new Vector2(7, 8)), 0); r = Vector2.Lerp(v1, v2, 2); Assert.AreEqual(0, Vector2.Distance(r, new Vector2(-2, -1)), 0); } } } #endif