зеркало из https://github.com/stride3d/opentk.git
290 строки
8.7 KiB
C#
290 строки
8.7 KiB
C#
using System;
|
|
using NUnit.Framework;
|
|
using OpenTK;
|
|
|
|
namespace OpenTK.Tests
|
|
{
|
|
[TestFixture]
|
|
public class Matrix4Test
|
|
{
|
|
[Test]
|
|
public void Matrix4_SixteenValueConstructor()
|
|
{
|
|
Matrix4 A = new Matrix4( 0, 1, 2, 3,
|
|
4, 5, 6, 7,
|
|
8, 9, 10, 11,
|
|
12, 13, 14, 15);
|
|
|
|
Assert.AreEqual(0, A.M11);
|
|
Assert.AreEqual(1, A.M12);
|
|
Assert.AreEqual(2, A.M13);
|
|
Assert.AreEqual(3, A.M14);
|
|
|
|
Assert.AreEqual(4, A.M21);
|
|
Assert.AreEqual(5, A.M22);
|
|
Assert.AreEqual(6, A.M23);
|
|
Assert.AreEqual(7, A.M24);
|
|
|
|
Assert.AreEqual(8, A.M31);
|
|
Assert.AreEqual(9, A.M32);
|
|
Assert.AreEqual(10, A.M33);
|
|
Assert.AreEqual(11, A.M34);
|
|
|
|
Assert.AreEqual(12, A.M41);
|
|
Assert.AreEqual(13, A.M42);
|
|
Assert.AreEqual(14, A.M43);
|
|
Assert.AreEqual(15, A.M44);
|
|
}
|
|
|
|
[Test]
|
|
public void Matrix4_Matrix3Constructor()
|
|
{
|
|
Matrix3 B = new Matrix3( 1, 2, 3,
|
|
4, 5, 6,
|
|
7, 8, 9);
|
|
|
|
Matrix4 A = new Matrix4(B);
|
|
|
|
Assert.AreEqual(B.M11, A.M11);
|
|
Assert.AreEqual(B.M12, A.M12);
|
|
Assert.AreEqual(B.M13, A.M13);
|
|
|
|
Assert.AreEqual(B.M21, A.M21);
|
|
Assert.AreEqual(B.M22, A.M22);
|
|
Assert.AreEqual(B.M23, A.M23);
|
|
|
|
Assert.AreEqual(B.M31, A.M31);
|
|
Assert.AreEqual(B.M32, A.M32);
|
|
Assert.AreEqual(B.M33, A.M33);
|
|
}
|
|
|
|
[Test]
|
|
public void Matrix4_FourVector4Constructor()
|
|
{
|
|
Vector4 V = new Vector4(1, 2, 3, 4);
|
|
Vector4 U = new Vector4(5, 6, 7, 8);
|
|
Vector4 S = new Vector4(9, 10, 11, 12);
|
|
Vector4 T = new Vector4(13, 14, 15, 16);
|
|
|
|
Matrix4 A = new Matrix4(V, U, S, T);
|
|
|
|
Assert.AreEqual(V.X, A.M11);
|
|
Assert.AreEqual(V.Y, A.M12);
|
|
Assert.AreEqual(V.Z, A.M13);
|
|
Assert.AreEqual(V.W, A.M14);
|
|
|
|
Assert.AreEqual(U.X, A.M21);
|
|
Assert.AreEqual(U.Y, A.M22);
|
|
Assert.AreEqual(U.Z, A.M23);
|
|
Assert.AreEqual(U.W, A.M24);
|
|
|
|
Assert.AreEqual(S.X, A.M31);
|
|
Assert.AreEqual(S.Y, A.M32);
|
|
Assert.AreEqual(S.Z, A.M33);
|
|
Assert.AreEqual(S.W, A.M34);
|
|
|
|
Assert.AreEqual(T.X, A.M41);
|
|
Assert.AreEqual(T.Y, A.M42);
|
|
Assert.AreEqual(T.Z, A.M43);
|
|
Assert.AreEqual(T.W, A.M44);
|
|
|
|
}
|
|
|
|
[Test]
|
|
public void Matrix4_Equal_operator()
|
|
{
|
|
Matrix4 A = new Matrix4( 0, 1, 2, 3,
|
|
4, 5, 6, 7,
|
|
8, 9, 10, 11,
|
|
12, 13, 14, 15);
|
|
|
|
Matrix4 B = new Matrix4( 0, 1, 2, 3,
|
|
4, 5, 6, 7,
|
|
8, 9, 10, 11,
|
|
12, 13, 14, 15);
|
|
|
|
Assert.IsTrue(A == B);
|
|
}
|
|
|
|
[Test]
|
|
public void Matrix4_Matrix4TimesMatrix4_operator()
|
|
{
|
|
Matrix4 A = new Matrix4( 0, 1, 2, 3,
|
|
4, 5, 6, 7,
|
|
8, 9, 10, 11,
|
|
12, 13, 14, 15);
|
|
|
|
Matrix4 B = new Matrix4( 0, 1, 2, 3,
|
|
4, 5, 6, 7,
|
|
8, 9, 10, 11,
|
|
12, 13, 14, 15);
|
|
|
|
Matrix4 expected = new Matrix4( 56, 62, 68, 74,
|
|
152, 174, 196, 218,
|
|
248, 286, 324, 362,
|
|
344, 398, 452, 506);
|
|
|
|
Matrix4 result = A * B;
|
|
Assert.IsTrue(expected == result);
|
|
}
|
|
|
|
[Test]
|
|
public void Matrix4_Matrix4PlusMatrix4_operator()
|
|
{
|
|
Matrix4 A = new Matrix4( 0, 1, 2, 3,
|
|
4, 5, 6, 7,
|
|
8, 9, 10, 11,
|
|
12, 13, 14, 15);
|
|
|
|
Matrix4 B = new Matrix4( 0, 1, 2, 3,
|
|
4, 5, 6, 7,
|
|
8, 9, 10, 11,
|
|
12, 13, 14, 15);
|
|
|
|
Matrix4 expected = new Matrix4( 0, 2, 4, 6,
|
|
8, 10, 12, 14,
|
|
16, 18, 20, 22,
|
|
24, 26, 28, 30);
|
|
|
|
Matrix4 result = A + B;
|
|
Assert.IsTrue(expected == result);
|
|
}
|
|
|
|
[Test]
|
|
public void Matrix4_Matrix4MinusMatrix4_operator()
|
|
{
|
|
Matrix4 A = new Matrix4( 0, 1, 2, 3,
|
|
4, 5, 6, 7,
|
|
8, 9, 10, 11,
|
|
12, 13, 14, 15);
|
|
|
|
Matrix4 B = new Matrix4( 0, 1, 2, 3,
|
|
4, 5, 6, 7,
|
|
8, 9, 10, 11,
|
|
12, 13, 14, 15);
|
|
|
|
Matrix4 expected = new Matrix4( 0, 0, 0, 0,
|
|
0, 0, 0, 0,
|
|
0, 0, 0, 0,
|
|
0, 0, 0, 0);
|
|
|
|
Matrix4 result = A - B;
|
|
Assert.IsTrue(expected == result);
|
|
}
|
|
|
|
[Test]
|
|
public void Matrix4_Index_Operator()
|
|
{
|
|
Matrix4 A = new Matrix4();
|
|
A[0, 0] = 0;
|
|
A[0, 1] = 1;
|
|
A[0, 2] = 2;
|
|
A[0, 3] = 3;
|
|
A[1, 0] = 4;
|
|
A[1, 1] = 5;
|
|
A[1, 2] = 6;
|
|
A[1, 3] = 7;
|
|
A[2, 0] = 8;
|
|
A[2, 1] = 9;
|
|
A[2, 2] = 10;
|
|
A[2, 3] = 11;
|
|
A[3, 0] = 12;
|
|
A[3, 1] = 13;
|
|
A[3, 2] = 14;
|
|
A[3, 3] = 15;
|
|
Assert.AreEqual(0, A[0, 0]);
|
|
Assert.AreEqual(1, A[0, 1]);
|
|
Assert.AreEqual(2, A[0, 2]);
|
|
Assert.AreEqual(3, A[0, 3]);
|
|
Assert.AreEqual(4, A[1, 0]);
|
|
Assert.AreEqual(5, A[1, 1]);
|
|
Assert.AreEqual(6, A[1, 2]);
|
|
Assert.AreEqual(7, A[1, 3]);
|
|
Assert.AreEqual(8, A[2, 0]);
|
|
Assert.AreEqual(9, A[2, 1]);
|
|
Assert.AreEqual(10, A[2, 2]);
|
|
Assert.AreEqual(11, A[2, 3]);
|
|
Assert.AreEqual(12, A[3, 0]);
|
|
Assert.AreEqual(13, A[3, 1]);
|
|
Assert.AreEqual(14, A[3, 2]);
|
|
Assert.AreEqual(15, A[3, 3]);
|
|
}
|
|
|
|
[Test]
|
|
public void Matrix4_Index_NegativeIndexException()
|
|
{
|
|
Matrix4 A = new Matrix4();
|
|
bool negativeIndexException = false;
|
|
try
|
|
{
|
|
A[-1, 2] = 0;
|
|
}
|
|
catch(Exception)
|
|
{
|
|
negativeIndexException = true;
|
|
}
|
|
Assert.IsTrue(negativeIndexException);
|
|
|
|
negativeIndexException = false;
|
|
try
|
|
{
|
|
A[1, -2] = 0;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
negativeIndexException = true;
|
|
}
|
|
Assert.IsTrue(negativeIndexException);
|
|
|
|
negativeIndexException = false;
|
|
try
|
|
{
|
|
A[-1, -2] = 0;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
negativeIndexException = true;
|
|
}
|
|
Assert.IsTrue(negativeIndexException);
|
|
}
|
|
|
|
[Test]
|
|
public void Matrix4_Index_LargeIndexException()
|
|
{
|
|
Matrix4 A = new Matrix4();
|
|
bool largeIndexException = false;
|
|
try
|
|
{
|
|
A[5, 2] = 0;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
largeIndexException = true;
|
|
}
|
|
Assert.IsTrue(largeIndexException);
|
|
|
|
largeIndexException = false;
|
|
try
|
|
{
|
|
A[1, 6] = 0;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
largeIndexException = true;
|
|
}
|
|
Assert.IsTrue(largeIndexException);
|
|
|
|
largeIndexException = false;
|
|
try
|
|
{
|
|
A[7, 12] = 0;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
largeIndexException = true;
|
|
}
|
|
Assert.IsTrue(largeIndexException);
|
|
}
|
|
}
|
|
}
|