Add an ellipse benchmark + unit test (WIP)
[master-thesis.git] / Parasitemia / Tests / ParasitemiaCore.Tests / EllipsesTests.fs
diff --git a/Parasitemia/Tests/ParasitemiaCore.Tests/EllipsesTests.fs b/Parasitemia/Tests/ParasitemiaCore.Tests/EllipsesTests.fs
new file mode 100644 (file)
index 0000000..185c43d
--- /dev/null
@@ -0,0 +1,35 @@
+namespace ParasitemiaCore.Tests
+
+open Xunit
+open Xunit.Abstractions
+
+open Swensen.Unquote
+
+open ParasitemiaCore.Ellipse
+
+type EllipsesTests (output : ITestOutputHelper) =
+
+    [<Fact>]
+    member this.``Compare the old and new ellipse construction implementations`` () =
+        let rng = System.Random (42)
+
+        let generateParameters () : float * float * float * float * float * float * float * float =
+            rng.NextDouble (),
+            rng.NextDouble (),
+            rng.NextDouble (),
+            rng.NextDouble (),
+            rng.NextDouble (),
+            rng.NextDouble (),
+            rng.NextDouble (),
+            rng.NextDouble ()
+
+        for i in 1 .. 100 do
+            let p1x, p1y, m1, p2x, p2y, m2, p3x, p3y = generateParameters ()
+            let e = ellipse p1x p1y m1 p2x p2y m2 p3x p3y
+            let e' = ellipse' p1x p1y m1 p2x p2y m2 p3x p3y
+
+            output.WriteLine (string e)
+
+            test <@ e = e' @>
+
+        ()
\ No newline at end of file