mirror of
https://github.com/Ryujinx/Opentk.git
synced 2025-07-06 10:00:44 +00:00
Complete coverage for Vector2.
This commit is contained in:
parent
a658d7a1cd
commit
d352853f47
|
@ -4,6 +4,7 @@ open Xunit
|
||||||
open FsCheck
|
open FsCheck
|
||||||
open FsCheck.Xunit
|
open FsCheck.Xunit
|
||||||
open System
|
open System
|
||||||
|
open System.Runtime.InteropServices
|
||||||
open OpenTK
|
open OpenTK
|
||||||
|
|
||||||
module Vector2 =
|
module Vector2 =
|
||||||
|
@ -29,17 +30,17 @@ module Vector2 =
|
||||||
let r = Vector2.Clamp(a,b,c)
|
let r = Vector2.Clamp(a,b,c)
|
||||||
Assert.Equal(clamp a.X b.X c.X,r.X)
|
Assert.Equal(clamp a.X b.X c.X,r.X)
|
||||||
Assert.Equal(clamp a.Y b.Y c.Y,r.Y)
|
Assert.Equal(clamp a.Y b.Y c.Y,r.Y)
|
||||||
|
|
||||||
[<Property>]
|
|
||||||
let ``Length is always >= 0`` (a : Vector2) =
|
|
||||||
//
|
|
||||||
Assert.True(a.Length >= 0.0f)
|
|
||||||
|
|
||||||
[<Properties(Arbitrary = [| typeof<OpenTKGen> |])>]
|
[<Properties(Arbitrary = [| typeof<OpenTKGen> |])>]
|
||||||
module Length =
|
module Length =
|
||||||
//
|
//
|
||||||
[<Property>]
|
[<Property>]
|
||||||
let ``Length method works`` (a, b) =
|
let ``Length is always >= 0`` (a : Vector2) =
|
||||||
|
//
|
||||||
|
Assert.True(a.Length >= 0.0f)
|
||||||
|
|
||||||
|
[<Property>]
|
||||||
|
let ``Length follows the pythagorean theorem`` (a, b) =
|
||||||
let v = Vector2(a, b)
|
let v = Vector2(a, b)
|
||||||
let l = System.Math.Sqrt((float)(a * a + b * b))
|
let l = System.Math.Sqrt((float)(a * a + b * b))
|
||||||
|
|
||||||
|
@ -555,3 +556,36 @@ module Vector2 =
|
||||||
|
|
||||||
Assert.Equal(expX, res.X)
|
Assert.Equal(expX, res.X)
|
||||||
Assert.Equal(expY, res.Y)
|
Assert.Equal(expY, res.Y)
|
||||||
|
|
||||||
|
[<Properties(Arbitrary = [| typeof<OpenTKGen> |])>]
|
||||||
|
module Transformation =
|
||||||
|
//
|
||||||
|
[<Property>]
|
||||||
|
let ``Transformation by quaternion is the same as multiplication by quaternion and its conjugate`` (v : Vector2, q : Quaternion) =
|
||||||
|
let vectorQuat = Quaternion(v.X, v.Y, (float32)0, (float32)0)
|
||||||
|
let inverse = Quaternion.Invert(q)
|
||||||
|
|
||||||
|
let transformedQuat = q * vectorQuat * inverse
|
||||||
|
let transformedVector = Vector2(transformedQuat.X, transformedQuat.Y)
|
||||||
|
|
||||||
|
Assert.Equal(transformedVector, Vector2.Transform(v, q))
|
||||||
|
|
||||||
|
[<Property>]
|
||||||
|
let ``Transformation by quaternion by reference is the same as multiplication by quaternion and its conjugate`` (v : Vector2, q : Quaternion) =
|
||||||
|
let vectorQuat = Quaternion(v.X, v.Y, (float32)0, (float32)0)
|
||||||
|
let inverse = Quaternion.Invert(q)
|
||||||
|
|
||||||
|
let transformedQuat = q * vectorQuat * inverse
|
||||||
|
let transformedVector = Vector2(transformedQuat.X, transformedQuat.Y)
|
||||||
|
|
||||||
|
Assert.Equal(transformedVector, Vector2.Transform(ref v, ref q))
|
||||||
|
|
||||||
|
[<Properties(Arbitrary = [| typeof<OpenTKGen> |])>]
|
||||||
|
module Serialization =
|
||||||
|
//
|
||||||
|
[<Property>]
|
||||||
|
let ``The absolute size of a Vector2 is always the size of its components`` (v : Vector2) =
|
||||||
|
let expectedSize = sizeof<float32> * 2
|
||||||
|
|
||||||
|
Assert.Equal(expectedSize, Vector2.SizeInBytes)
|
||||||
|
Assert.Equal(expectedSize, Marshal.SizeOf(Vector2()))
|
Loading…
Reference in a new issue