NanoBrain-unitypackage/test/Vector2FloatTest.cs
Pascal Serrarens 220e1e4ead Squashed 'Assets/NanoBrain/LinearAlgebra/' content from commit 15c08f2
git-subtree-dir: Assets/NanoBrain/LinearAlgebra
git-subtree-split: 15c08f215655988682ecc6207c2783fa047b65e3
2026-01-05 10:55:07 +01:00

364 lines
11 KiB
C#

#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