git-subtree-dir: Assets/NanoBrain/LinearAlgebra git-subtree-split: 15c08f215655988682ecc6207c2783fa047b65e3
202 lines
6.7 KiB
C#
202 lines
6.7 KiB
C#
#if !UNITY_5_6_OR_NEWER
|
|
using System;
|
|
using NUnit.Framework;
|
|
|
|
namespace LinearAlgebra.Test {
|
|
public class DirectionTest {
|
|
|
|
[Test]
|
|
public void RadiansForward() {
|
|
Direction d = Direction.Radians(0, 0);
|
|
Assert.AreEqual(0, d.horizontal.inDegrees, 0.0001f);
|
|
Assert.AreEqual(0, d.vertical.inDegrees, 0.0001f);
|
|
}
|
|
|
|
[Test]
|
|
public void RadiansUp() {
|
|
Direction d = Direction.Radians(0, (float)Math.PI / 2);
|
|
Assert.AreEqual(0, d.horizontal.inDegrees, 0.0001f);
|
|
Assert.AreEqual(90, d.vertical.inDegrees, 0.0001f);
|
|
}
|
|
|
|
[Test]
|
|
public void RadiansDown() {
|
|
Direction d = Direction.Radians(0, -(float)Math.PI / 2);
|
|
Assert.AreEqual(0, d.horizontal.inDegrees, 0.0001f);
|
|
Assert.AreEqual(-90, d.vertical.inDegrees, 0.0001f);
|
|
}
|
|
|
|
[Test]
|
|
public void RadiansArbitrary() {
|
|
Direction d = Direction.Radians((float)Math.PI / 4, (float)Math.PI / 6);
|
|
Assert.AreEqual(45, d.horizontal.inDegrees, 0.0001f);
|
|
Assert.AreEqual(30, d.vertical.inDegrees, 0.0001f);
|
|
}
|
|
|
|
[Test]
|
|
public void RadiansEquivalentToDegreesConversion() {
|
|
Direction d1 = Direction.Radians((float)Math.PI / 3, (float)Math.PI / 4);
|
|
Direction d2 = Direction.Degrees(60, 45);
|
|
Assert.AreEqual(d1.horizontal.inDegrees, d2.horizontal.inDegrees, 0.0001f);
|
|
Assert.AreEqual(d1.vertical.inDegrees, d2.vertical.inDegrees, 0.0001f);
|
|
}
|
|
|
|
[Test]
|
|
public void ToVector3Forward() {
|
|
Direction d = Direction.forward;
|
|
Vector3Float v = d.ToVector3();
|
|
Assert.AreEqual(0, v.horizontal, 0.0001f);
|
|
Assert.AreEqual(0, v.vertical, 0.0001f);
|
|
Assert.AreEqual(1, v.depth, 0.0001f);
|
|
}
|
|
|
|
[Test]
|
|
public void ToVector3Up() {
|
|
Direction d = Direction.up;
|
|
Vector3Float v = d.ToVector3();
|
|
Assert.AreEqual(0, v.horizontal, 0.0001f);
|
|
Assert.AreEqual(1, v.vertical, 0.0001f);
|
|
Assert.AreEqual(0, v.depth, 0.0001f);
|
|
}
|
|
|
|
[Test]
|
|
public void ToVector3Down() {
|
|
Direction d = Direction.down;
|
|
Vector3Float v = d.ToVector3();
|
|
Assert.AreEqual(0, v.horizontal, 0.0001f);
|
|
Assert.AreEqual(-1, v.vertical, 0.0001f);
|
|
Assert.AreEqual(0, v.depth, 0.0001f);
|
|
}
|
|
|
|
[Test]
|
|
public void FromVector3Forward() {
|
|
Vector3Float v = new(0, 0, 1);
|
|
Direction d = Direction.FromVector3(v);
|
|
Assert.AreEqual(0, d.horizontal.inDegrees, 0.0001f);
|
|
Assert.AreEqual(0, d.vertical.inDegrees, 0.0001f);
|
|
}
|
|
|
|
[Test]
|
|
public void ToVector3AndBack() {
|
|
Direction d1 = Direction.Degrees(45, 30);
|
|
Vector3Float v = d1.ToVector3();
|
|
Direction d2 = Direction.FromVector3(v);
|
|
Assert.AreEqual(d1.horizontal.inDegrees, d2.horizontal.inDegrees, 0.0001f);
|
|
Assert.AreEqual(d1.vertical.inDegrees, d2.vertical.inDegrees, 0.0001f);
|
|
}
|
|
|
|
[Test]
|
|
public void Compare() {
|
|
Direction d1 = Direction.Degrees(45, 135);
|
|
Direction d2 = new(AngleFloat.Degrees(45), AngleFloat.Degrees(135));
|
|
bool r;
|
|
r = d1 == d2;
|
|
Assert.True(r);
|
|
Assert.AreEqual(d1, d2);
|
|
}
|
|
|
|
[Test]
|
|
public void NotEqualWithDifferentHorizontal() {
|
|
Direction d1 = Direction.Degrees(45, 30);
|
|
Direction d2 = Direction.Degrees(90, 30);
|
|
Assert.True(d1 != d2);
|
|
}
|
|
|
|
[Test]
|
|
public void NotEqualWithDifferentVertical() {
|
|
Direction d1 = Direction.Degrees(45, 30);
|
|
Direction d2 = Direction.Degrees(45, 60);
|
|
Assert.True(d1 != d2);
|
|
}
|
|
|
|
[Test]
|
|
public void NotEqualWithDifferentBoth() {
|
|
Direction d1 = Direction.Degrees(45, 30);
|
|
Direction d2 = Direction.Degrees(90, 60);
|
|
Assert.True(d1 != d2);
|
|
}
|
|
|
|
[Test]
|
|
public void NotEqualWithSameValues() {
|
|
Direction d1 = Direction.Degrees(45, 30);
|
|
Direction d2 = Direction.Degrees(45, 30);
|
|
Assert.False(d1 != d2);
|
|
}
|
|
|
|
|
|
[Test]
|
|
public void EqualsWithSameValues() {
|
|
Direction d1 = Direction.Degrees(45, 30);
|
|
Direction d2 = Direction.Degrees(45, 30);
|
|
Assert.True(d1.Equals(d2));
|
|
}
|
|
|
|
[Test]
|
|
public void EqualsWithDifferentHorizontal() {
|
|
Direction d1 = Direction.Degrees(45, 30);
|
|
Direction d2 = Direction.Degrees(90, 30);
|
|
Assert.False(d1.Equals(d2));
|
|
}
|
|
|
|
[Test]
|
|
public void EqualsWithDifferentVertical() {
|
|
Direction d1 = Direction.Degrees(45, 30);
|
|
Direction d2 = Direction.Degrees(45, 60);
|
|
Assert.False(d1.Equals(d2));
|
|
}
|
|
|
|
[Test]
|
|
public void EqualsWithDifferentBoth() {
|
|
Direction d1 = Direction.Degrees(45, 30);
|
|
Direction d2 = Direction.Degrees(90, 60);
|
|
Assert.False(d1.Equals(d2));
|
|
}
|
|
|
|
[Test]
|
|
public void EqualsWithNonDirectionObject() {
|
|
Direction d = Direction.Degrees(45, 30);
|
|
Assert.False(d.Equals("not a direction"));
|
|
}
|
|
|
|
[Test]
|
|
public void EqualsWithNull() {
|
|
Direction d = Direction.Degrees(45, 30);
|
|
Assert.False(d.Equals(null));
|
|
}
|
|
|
|
[Test]
|
|
public void EqualsWithZeros() {
|
|
Direction d1 = Direction.forward;
|
|
Direction d2 = Direction.Degrees(0, 0);
|
|
Assert.True(d1.Equals(d2));
|
|
}
|
|
|
|
[Test]
|
|
public void HashCode() {
|
|
Direction d1 = Direction.Degrees(45, 30);
|
|
Direction d2 = Direction.Degrees(45, 30);
|
|
Assert.AreEqual(d1.GetHashCode(), d2.GetHashCode());
|
|
|
|
d1 = Direction.Degrees(45, 30);
|
|
d2 = Direction.Degrees(90, 30);
|
|
Assert.AreNotEqual(d1.GetHashCode(), d2.GetHashCode());
|
|
|
|
d1 = Direction.Degrees(45, 30);
|
|
d2 = Direction.Degrees(45, 60);
|
|
Assert.AreNotEqual(d1.GetHashCode(), d2.GetHashCode());
|
|
|
|
Direction d = Direction.Degrees(45, 30);
|
|
int hash1 = d.GetHashCode();
|
|
int hash2 = d.GetHashCode();
|
|
Assert.AreEqual(hash1, hash2);
|
|
|
|
d1 = Direction.forward;
|
|
d2 = Direction.Degrees(0, 0);
|
|
Assert.AreEqual(d1.GetHashCode(), d2.GetHashCode());
|
|
}
|
|
|
|
};
|
|
}
|
|
#endif
|
|
|