mirror of
https://github.com/oliverbooth/X10D
synced 2024-10-19 04:26:12 +00:00
91 lines
3.2 KiB
C#
91 lines
3.2 KiB
C#
using System.Numerics;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using X10D.Numerics;
|
|
|
|
namespace X10D.Tests.Numerics;
|
|
|
|
[TestClass]
|
|
public class Vector3Tests
|
|
{
|
|
[TestMethod]
|
|
public void Deconstruct_ShouldReturnCorrectValues()
|
|
{
|
|
var vector = new Vector3(1, 2, 3);
|
|
(float x, float y, float z) = vector;
|
|
|
|
Assert.AreEqual(1, x);
|
|
Assert.AreEqual(2, y);
|
|
Assert.AreEqual(3, z);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Round_ShouldRoundToNearestInteger_GivenNoParameters()
|
|
{
|
|
var vector = new Vector3(1.5f, 2.6f, -5.2f);
|
|
var rounded = vector.Round();
|
|
|
|
Assert.AreEqual(2, rounded.X);
|
|
Assert.AreEqual(3, rounded.Y);
|
|
Assert.AreEqual(-5, rounded.Z);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Round_ShouldRoundToNearest10_GivenPrecision10()
|
|
{
|
|
var vector = new Vector3(1.5f, 25.2f, -12.5f);
|
|
var rounded = vector.Round(10);
|
|
|
|
Assert.AreEqual(0, rounded.X);
|
|
Assert.AreEqual(30, rounded.Y);
|
|
Assert.AreEqual(-10, rounded.Z);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void WithX_ShouldReturnVectorWithNewX_GivenVector()
|
|
{
|
|
Assert.AreEqual(new Vector3(0, 1, 1), Vector3.One.WithX(0));
|
|
Assert.AreEqual(Vector3.Zero, Vector3.Zero.WithX(0));
|
|
Assert.AreEqual(Vector3.Zero, Vector3.UnitX.WithX(0));
|
|
Assert.AreEqual(Vector3.UnitY, Vector3.UnitY.WithX(0));
|
|
Assert.AreEqual(Vector3.UnitZ, Vector3.UnitZ.WithX(0));
|
|
|
|
Assert.AreEqual(Vector3.One, Vector3.One.WithX(1));
|
|
Assert.AreEqual(Vector3.UnitX, Vector3.Zero.WithX(1));
|
|
Assert.AreEqual(Vector3.UnitX, Vector3.UnitX.WithX(1));
|
|
Assert.AreEqual(new Vector3(1, 1, 0), Vector3.UnitY.WithX(1));
|
|
Assert.AreEqual(new Vector3(1, 0, 1), Vector3.UnitZ.WithX(1));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void WithY_ShouldReturnVectorWithNewY_GivenVector()
|
|
{
|
|
Assert.AreEqual(new Vector3(1, 0, 1), Vector3.One.WithY(0));
|
|
Assert.AreEqual(Vector3.Zero, Vector3.Zero.WithY(0));
|
|
Assert.AreEqual(Vector3.UnitX, Vector3.UnitX.WithY(0));
|
|
Assert.AreEqual(Vector3.Zero, Vector3.UnitY.WithY(0));
|
|
Assert.AreEqual(Vector3.UnitZ, Vector3.UnitZ.WithY(0));
|
|
|
|
Assert.AreEqual(Vector3.One, Vector3.One.WithY(1));
|
|
Assert.AreEqual(Vector3.UnitY, Vector3.Zero.WithY(1));
|
|
Assert.AreEqual(new Vector3(1, 1, 0), Vector3.UnitX.WithY(1));
|
|
Assert.AreEqual(Vector3.UnitY, Vector3.UnitY.WithY(1));
|
|
Assert.AreEqual(new Vector3(0, 1, 1), Vector3.UnitZ.WithY(1));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void WithZ_ShouldReturnVectorWithNewZ_GivenVector()
|
|
{
|
|
Assert.AreEqual(new Vector3(1, 1, 0), Vector3.One.WithZ(0));
|
|
Assert.AreEqual(Vector3.Zero, Vector3.Zero.WithZ(0));
|
|
Assert.AreEqual(Vector3.UnitX, Vector3.UnitX.WithZ(0));
|
|
Assert.AreEqual(Vector3.UnitY, Vector3.UnitY.WithZ(0));
|
|
Assert.AreEqual(Vector3.Zero, Vector3.UnitZ.WithZ(0));
|
|
|
|
Assert.AreEqual(Vector3.One, Vector3.One.WithZ(1));
|
|
Assert.AreEqual(Vector3.UnitZ, Vector3.Zero.WithZ(1));
|
|
Assert.AreEqual(new Vector3(1, 0, 1), Vector3.UnitX.WithZ(1));
|
|
Assert.AreEqual(new Vector3(0, 1, 1), Vector3.UnitY.WithZ(1));
|
|
Assert.AreEqual(Vector3.UnitZ, Vector3.UnitZ.WithZ(1));
|
|
}
|
|
}
|