Files
ray-tracing-fsharp/RayTracing.Test/TestPlane.fs
Patrick Stevens 38bb5c94f2 Fix workflow (#16)
2024-07-14 13:06:41 +01:00

27 lines
837 B
Forth

namespace RayTracing.Test
open NUnit.Framework
open FsCheck
open FsCheck.FSharp
open RayTracing
[<TestFixture>]
module TestPlane =
[<Test>]
let ``Orthogonalise does make orthogonal vectors`` () =
let property (p : Plane) : bool =
let orth = Plane.orthonormalise p |> ValueOption.get
let v1, v2 = Plane.basis (Vector.make 0.0 1.0 0.0) orth
let dotVectors = UnitVector.dot (Ray.vector v1) (Ray.vector v2)
let v1Length = UnitVector.dot (Ray.vector v1) (Ray.vector v1)
let v2Length = UnitVector.dot (Ray.vector v2) (Ray.vector v2)
Float.equal dotVectors 0.0
&& Float.equal v1Length 1.0
&& Float.equal v2Length 1.0
property
|> Prop.forAll (Arb.fromGen TestUtils.planeGen)
|> Check.QuickThrowOnFailure