#if !UNITY_5_6_OR_NEWER using System; using System.Formats.Asn1; using NUnit.Framework; namespace LinearAlgebra.Test { public class AngleTests { [SetUp] public void Setup() { } [Test] public void Construct() { // Degrees float angle = 0.0f; Angle a = Angle.Degrees(angle); Assert.AreEqual(angle, a.inDegrees); angle = -180.0f; a = Angle.Degrees(angle); Assert.AreEqual(angle, a.inDegrees); angle = 270.0f; a = Angle.Degrees(angle); Assert.AreEqual(-90, a.inDegrees); // Radians angle = 0.0f; a = Angle.Radians(angle); Assert.AreEqual(angle, a.inRadians); angle = (float)-Math.PI; a = Angle.Radians(angle); Assert.AreEqual(angle, a.inRadians); angle = (float)Math.PI * 1.5f; a = Angle.Radians(angle); Assert.AreEqual(-Math.PI * 0.5f, a.inRadians, 1.0E-05F); // Revolutions angle = 0.0f; a = Angle.Revolutions(angle); Assert.AreEqual(angle, a.inRevolutions); angle = -0.5f; a = Angle.Revolutions(angle); Assert.AreEqual(angle, a.inRevolutions); angle = 0.75f; a = Angle.Revolutions(angle); Assert.AreEqual(-0.25f, a.inRevolutions); } // [Test] // public void Normalize() { // float r = 0; // r = Angle.Normalize(90); // Assert.AreEqual(r, 90, "Normalize 90"); // r = Angle.Normalize(-90); // Assert.AreEqual(r, -90, "Normalize -90"); // r = Angle.Normalize(270); // Assert.AreEqual(r, -90, "Normalize 270"); // r = Angle.Normalize(270 + 360); // Assert.AreEqual(r, -90, "Normalize 270+360"); // r = Angle.Normalize(-270); // Assert.AreEqual(r, 90, "Normalize -270"); // r = Angle.Normalize(-270 - 360); // Assert.AreEqual(r, 90, "Normalize -270-360"); // r = Angle.Normalize(0); // Assert.AreEqual(r, 0, "Normalize 0"); // r = Angle.Normalize(float.PositiveInfinity); // Assert.AreEqual(r, float.PositiveInfinity, "Normalize INFINITY"); // r = Angle.Normalize(float.NegativeInfinity); // Assert.AreEqual(r, float.NegativeInfinity, "Normalize INFINITY"); // } [Test] public void Clamp() { float r = 0; r = Angle.Clamp(Angle.Degrees(1), Angle.Degrees(0), Angle.Degrees(2)); Assert.AreEqual(r, 1, "Clamp 1 0 2"); r = Angle.Clamp(Angle.Degrees(-1), Angle.Degrees(0), Angle.Degrees(2)); Assert.AreEqual(r, 0, "Clamp -1 0 2"); r = Angle.Clamp(Angle.Degrees(3), Angle.Degrees(0), Angle.Degrees(2)); Assert.AreEqual(r, 2, "Clamp 3 0 2"); r = Angle.Clamp(Angle.Degrees(1), Angle.Degrees(0), Angle.Degrees(0)); Assert.AreEqual(r, 0, "Clamp 1 0 0"); r = Angle.Clamp(Angle.Degrees(0), Angle.Degrees(0), Angle.Degrees(0)); Assert.AreEqual(r, 0, "Clamp 0 0 0"); r = Angle.Clamp(Angle.Degrees(0), Angle.Degrees(1), Angle.Degrees(-1)); Assert.AreEqual(r, 1, "Clamp 0 1 -1"); r = Angle.Clamp(Angle.Degrees(1), Angle.Degrees(0), Angle.Degrees(float.PositiveInfinity)); Assert.AreEqual(r, 1, "Clamp 1 0 INFINITY"); r = Angle.Clamp(Angle.Degrees(1), Angle.Degrees(float.NegativeInfinity), Angle.Degrees(1)); Assert.AreEqual(r, 1, "Clamp 1 -INFINITY 1"); } // [Test] // public void Difference() { // float r = 0; // r = Angle.Difference(0, 90); // Assert.AreEqual(r, 90, "Difference 0 90"); // r = Angle.Difference(0, -90); // Assert.AreEqual(r, -90, "Difference 0 -90"); // r = Angle.Difference(0, 270); // Assert.AreEqual(r, -90, "Difference 0 270"); // r = Angle.Difference(0, -270); // Assert.AreEqual(r, 90, "Difference 0 -270"); // r = Angle.Difference(90, 0); // Assert.AreEqual(r, -90, "Difference 90 0"); // r = Angle.Difference(-90, 0); // Assert.AreEqual(r, 90, "Difference -90 0"); // r = Angle.Difference(0, 0); // Assert.AreEqual(r, 0, "Difference 0 0"); // r = Angle.Difference(90, 90); // Assert.AreEqual(r, 0, "Difference 90 90"); // r = Angle.Difference(0, float.PositiveInfinity); // Assert.AreEqual(r, float.PositiveInfinity, "Difference 0 INFINITY"); // r = Angle.Difference(0, float.NegativeInfinity); // Assert.AreEqual(r, float.NegativeInfinity, "Difference 0 -INFINITY"); // r = Angle.Difference(float.NegativeInfinity, float.PositiveInfinity); // Assert.AreEqual(r, float.PositiveInfinity, "Difference -INFINITY INFINITY"); // } [Test] public void MoveTowards() { Angle r = Angle.zero; r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(90), 30); Assert.AreEqual(r.inDegrees, 30, "MoveTowards 0 90 30"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(90), 90); Assert.AreEqual(r.inDegrees, 90, "MoveTowards 0 90 90"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(90), 180); Assert.AreEqual(r.inDegrees, 90, "MoveTowards 0 90 180"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(90), 270); Assert.AreEqual(r.inDegrees, 90, "MoveTowrads 0 90 270"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(90), -30); Assert.AreEqual(r.inDegrees, 0, "MoveTowards 0 90 -30"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(-90), -30); Assert.AreEqual(r.inDegrees, 0, "MoveTowards 0 -90 -30"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(-90), -90); Assert.AreEqual(r.inDegrees, 0, "MoveTowards 0 -90 -90"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(-90), -180); Assert.AreEqual(r.inDegrees, 0, "MoveTowards 0 -90 -180"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(-90), -270); Assert.AreEqual(r.inDegrees, 0, "MoveTowrads 0 -90 -270"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(90), 0); Assert.AreEqual(r.inDegrees, 0, "MoveTowards 0 90 0"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(0), 0); Assert.AreEqual(r.inDegrees, 0, "MoveTowards 0 0 0"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(0), 30); Assert.AreEqual(r.inDegrees, 0, "MoveTowrads 0 0 30"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(90), float.PositiveInfinity); Assert.AreEqual(r.inDegrees, 90, "MoveTowards 0 90 INFINITY"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(float.PositiveInfinity), 30); Assert.AreEqual(r.inDegrees, 30, "MoveTowrads 0 INFINITY 30"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(-90), float.NegativeInfinity); Assert.AreEqual(r.inDegrees, 0, "MoveTowards 0 -90 -INFINITY"); r = Angle.MoveTowards(Angle.Degrees(0), Angle.Degrees(float.NegativeInfinity), -30); Assert.AreEqual(r.inDegrees, 0, "MoveTowrads 0 -INFINITY -30"); } } } #endif