209 lines
7.5 KiB
C#
209 lines
7.5 KiB
C#
#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);
|
|
|
|
// 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 |