144 строки
4.0 KiB
C#
144 строки
4.0 KiB
C#
|
|
using System;
|
|
using System.Diagnostics;
|
|
|
|
using Foundation;
|
|
using ObjCRuntime;
|
|
|
|
using OpenTK;
|
|
|
|
using NUnit.Framework;
|
|
|
|
namespace MonoTouchFixtures.Simd {
|
|
[TestFixture]
|
|
[Preserve (AllMembers = true)]
|
|
public class NVector3dTest {
|
|
|
|
[Test]
|
|
public void ElementConstructor ()
|
|
{
|
|
var expected = GetTestVector ();
|
|
var actual = new NVector3d (expected.X, expected.Y, expected.Z);
|
|
Asserts.AreEqual (expected, actual, "ctor 1");
|
|
}
|
|
|
|
[Test]
|
|
public void Equality_Operator ()
|
|
{
|
|
var inputL = GetTestVector ();
|
|
var inputR = GetTestVector ();
|
|
var inputSimdL = (NVector3d) inputL;
|
|
var inputSimdR = (NVector3d) inputR;
|
|
|
|
// matrices are different
|
|
Assert.AreEqual (inputL == inputR, inputSimdL == inputSimdR, "inequality");
|
|
Assert.IsFalse (inputL == inputR, "inequality 2 expected");
|
|
Assert.IsFalse (inputSimdL == inputSimdR, "inequality 2 actual");
|
|
|
|
inputL = inputR;
|
|
inputSimdL = inputSimdR;
|
|
// matrices are identical
|
|
Assert.AreEqual (inputL == inputR, inputSimdL == inputSimdR, "equality");
|
|
Assert.IsTrue (inputL == inputR, "equality 2 expected");
|
|
Assert.IsTrue (inputSimdL == inputSimdR, "equality 2 actual");
|
|
}
|
|
|
|
[Test]
|
|
public void Inequality_Operator ()
|
|
{
|
|
var inputL = GetTestVector ();
|
|
var inputR = GetTestVector ();
|
|
var inputSimdL = (NVector3d) inputL;
|
|
var inputSimdR = (NVector3d) inputR;
|
|
|
|
// matrices are different
|
|
Assert.AreEqual (inputL != inputR, inputSimdL != inputSimdR, "inequality");
|
|
Assert.IsTrue (inputL != inputR, "inequality 2 expected");
|
|
Assert.IsTrue (inputSimdL != inputSimdR, "inequality 2 actual");
|
|
|
|
inputL = inputR;
|
|
inputSimdL = inputSimdR;
|
|
// matrices are identical
|
|
Assert.AreEqual (inputL != inputR, inputSimdL != inputSimdR, "equality");
|
|
Assert.IsFalse (inputL != inputR, "equality 2 expected");
|
|
Assert.IsFalse (inputSimdL != inputSimdR, "equality 2 actual");
|
|
}
|
|
|
|
[Test]
|
|
public void Explicit_Operator_ToVector3 ()
|
|
{
|
|
var expected = GetTestVector ();
|
|
var actual = (Vector3d) expected;
|
|
|
|
Asserts.AreEqual (expected, actual, "ToVector3d");
|
|
}
|
|
|
|
[Test]
|
|
public void Explicit_Operator_FromVector3 ()
|
|
{
|
|
var expected = new Vector3d (2, 3, 7.7d);
|
|
var actual = (NVector3d) expected;
|
|
|
|
Asserts.AreEqual (expected, actual, "FromVector3d");
|
|
}
|
|
|
|
[Test]
|
|
public void ToStringTest ()
|
|
{
|
|
var vector = new NVector3d (1, 2, 3);
|
|
|
|
Assert.AreEqual ("(1, 2, 3)", vector.ToString (), "tostring");
|
|
}
|
|
|
|
// GetHashCode doesn't have to be identical, so no need to test
|
|
|
|
[Test]
|
|
public void Equals_Object ()
|
|
{
|
|
var expectedA = GetTestVector ();
|
|
var expectedB = GetTestVector ();
|
|
var actualA = (NVector3d) expectedA;
|
|
var actualB = (NVector3d) expectedB;
|
|
|
|
Assert.IsTrue (actualA.Equals ((object) actualA), "self");
|
|
Assert.IsFalse (actualA.Equals ((object) actualB), "other");
|
|
Assert.IsFalse (actualA.Equals (null), "null");
|
|
Assert.IsTrue (actualA.Equals (expectedA), "same type");
|
|
}
|
|
|
|
[Test]
|
|
public void Equals_Vector ()
|
|
{
|
|
var expectedA = GetTestVector ();
|
|
var expectedB = GetTestVector ();
|
|
var actualA = (NVector3d) expectedA;
|
|
var actualB = (NVector3d) expectedB;
|
|
|
|
Assert.IsTrue (actualA.Equals (actualA), "self");
|
|
Assert.IsFalse (actualA.Equals (actualB), "other");
|
|
}
|
|
|
|
static NVector3d [] test_vectors = new [] {
|
|
new NVector3d (0.1532144d, 0.5451511d, 0.2004739d),
|
|
new NVector3d (0.7717745d, 0.559364d, 0.00918373d),
|
|
new NVector3d (0.2023053d, 0.4701468d, 0.6618567d),
|
|
new NVector3d (0.4904693d, 0.841727d, 0.2294401d),
|
|
new NVector3d (0.1252193d, 0.08986127d, 0.3407605d),
|
|
new NVector3d (0.006755914d, 0.07464754d, 0.287938d),
|
|
new NVector3d (9.799572E+08d, 1.64794E+09d, 1.117296E+09d),
|
|
new NVector3d (1.102396E+09d, 3.082477E+08d, 1.126484E+09d),
|
|
new NVector3d (2.263112E+08d, 8.79644E+08d, 1.303282E+09d),
|
|
new NVector3d (8.176959E+08d, 1.386156E+09d, 5.956444E+08d),
|
|
};
|
|
|
|
static int counter;
|
|
internal static NVector3d GetTestVector ()
|
|
{
|
|
counter++;
|
|
if (counter == test_vectors.Length)
|
|
counter = 0;
|
|
return test_vectors [counter];
|
|
}
|
|
}
|
|
}
|