From ca0d54953444d91ae396476963a535a6161e1fd8 Mon Sep 17 00:00:00 2001 From: Jarl Gullberg Date: Thu, 1 Jun 2017 16:05:14 +0200 Subject: [PATCH] Add row property tests. --- tests/OpenTK.Tests/Matrix4Tests.fs | 82 +++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/tests/OpenTK.Tests/Matrix4Tests.fs b/tests/OpenTK.Tests/Matrix4Tests.fs index a37cd92..9c453b1 100644 --- a/tests/OpenTK.Tests/Matrix4Tests.fs +++ b/tests/OpenTK.Tests/Matrix4Tests.fs @@ -152,6 +152,54 @@ module Matrix4 = Assert.Equal(R42, AB.M42) Assert.Equal(R43, AB.M43) Assert.Equal(R44, AB.M44) + + [] + let ``Matrix multiplication by scalar is the same as row multiplication by scalar`` (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, scalar : float32) = + let A = Matrix4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) + + let R1 = Vector4(a, b, c, d) * scalar + let R2 = Vector4(e, f, g, h) * scalar + let R3 = Vector4(i, j, k, l) * scalar + let R4 = Vector4(m, n, o, p) * scalar + + let AScaled = A * scalar + + Assert.Equal(R1, AScaled.Row0) + Assert.Equal(R1, AScaled.Row1) + Assert.Equal(R1, AScaled.Row2) + Assert.Equal(R1, AScaled.Row3) + + [] + let ``Static method matrix multiplication by scalar is the same as row multiplication by scalar`` (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, scalar : float32) = + let A = Matrix4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) + + let R1 = Vector4(a, b, c, d) * scalar + let R2 = Vector4(e, f, g, h) * scalar + let R3 = Vector4(i, j, k, l) * scalar + let R4 = Vector4(m, n, o, p) * scalar + + let AScaled = Matrix4.Mult(A, scalar) + + Assert.Equal(R1, AScaled.Row0) + Assert.Equal(R1, AScaled.Row1) + Assert.Equal(R1, AScaled.Row2) + Assert.Equal(R1, AScaled.Row3) + + [] + let ``Static method matrix multiplication by reference by scalar is the same as row multiplication by scalar`` (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, scalar : float32) = + let A = Matrix4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) + + let R1 = Vector4(a, b, c, d) * scalar + let R2 = Vector4(e, f, g, h) * scalar + let R3 = Vector4(i, j, k, l) * scalar + let R4 = Vector4(m, n, o, p) * scalar + + let AScaled = Matrix4.Mult(ref A, scalar) + + Assert.Equal(R1, AScaled.Row0) + Assert.Equal(R1, AScaled.Row1) + Assert.Equal(R1, AScaled.Row2) + Assert.Equal(R1, AScaled.Row3) [ |])>] @@ -299,4 +347,36 @@ module Matrix4 = Assert.Throws(invalidIndexingAccessR) |> ignore Assert.Throws(invalidIndexingAccessC) |> ignore - Assert.Throws(invalidIndexingAccessRC) |> ignore \ No newline at end of file + Assert.Throws(invalidIndexingAccessRC) |> ignore + + [ |])>] + module ``Row and column properties`` = + // + [] + let ``Matrix row properties return the correct components`` (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) = + let A = Matrix4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) + + let R0 = A.Row0 + let R1 = A.Row1 + let R2 = A.Row2 + let R3 = A.Row3 + + Assert.Equal(a, R0.X) + Assert.Equal(b, R0.Y) + Assert.Equal(c, R0.Z) + Assert.Equal(d, R0.W) + + Assert.Equal(e, R1.X) + Assert.Equal(f, R1.Y) + Assert.Equal(g, R1.Z) + Assert.Equal(h, R1.W) + + Assert.Equal(i, R2.X) + Assert.Equal(j, R2.Y) + Assert.Equal(k, R2.Z) + Assert.Equal(l, R2.W) + + Assert.Equal(m, R3.X) + Assert.Equal(n, R3.Y) + Assert.Equal(o, R3.Z) + Assert.Equal(p, R3.W) \ No newline at end of file -- 2.7.4