Increased delta bits and changed quaternion generator.
authorJarl Gullberg <jarl.gullberg@gmail.com>
Thu, 1 Jun 2017 21:22:57 +0000 (23:22 +0200)
committerJarl Gullberg <jarl.gullberg@gmail.com>
Thu, 1 Jun 2017 21:22:57 +0000 (23:22 +0200)
tests/OpenTK.Tests/Assertions.fs
tests/OpenTK.Tests/Generators.fs
tests/OpenTK.Tests/Vector3Tests.fs

index 8b7a292..e4e1c41 100644 (file)
@@ -9,7 +9,7 @@ open OpenTK
 [<AutoOpen>]
 module private AssertHelpers =
     [<Literal>]
-    let private BitAccuracy = 6
+    let private BitAccuracy = 9
 
     let approxEq a b = MathHelper.ApproximatelyEqual(a,b,BitAccuracy)
 
index e7496c4..ec19a3c 100644 (file)
@@ -38,8 +38,8 @@ module private Generators =
 
     let quat =
         singleArb
-        |> Gen.four
-        |> Gen.map Quaternion
+        |> Gen.three
+        |> Gen.map (fun (x,y,z) -> Quaternion(x,y,z,0.0f) |> Quaternion.Normalize)
         |> Arb.fromGen
 
     let mat2 =
index 14cf042..37bac29 100644 (file)
@@ -709,7 +709,7 @@ module Vector3 =
             let transformedQuat = q * vectorQuat * inverse
             let transformedVector = transformedQuat.Xyz
 
-            Assert.Equal(transformedVector, Vector3.Transform(v, q))
+            Assert.ApproximatelyEqual(transformedVector, Vector3.Transform(v, q))
 
         [<Property>]
         let ``Transformation by quaternion by reference is the same as multiplication by quaternion and its conjugate`` (v : Vector3, q : Quaternion) =
@@ -719,4 +719,17 @@ module Vector3 =
             let transformedQuat = q * vectorQuat * inverse
             let transformedVector = transformedQuat.Xyz
 
-            Assert.Equal(transformedVector, Vector3.Transform(ref v, ref q))
\ No newline at end of file
+            Assert.ApproximatelyEqual(transformedVector, Vector3.Transform(ref v, ref q))
+
+        [<Property>]
+        let ``Transformation by identity quaternion does not alter vector`` (v : Vector3) =
+            let q = Quaternion.Identity
+            let vectorQuat = Quaternion(v.X, v.Y, v.Z, 0.0f)
+            let inverse = Quaternion.Invert(q)
+
+            let transformedQuat = q * vectorQuat * inverse
+            let transformedVector = transformedQuat.Xyz
+
+            Assert.ApproximatelyEqual(v, transformedVector)
+            Assert.ApproximatelyEqual(v, Vector3.Transform(v, q))
+            Assert.ApproximatelyEqual(transformedVector, Vector3.Transform(v, q))
\ No newline at end of file