Add an ellipse benchmark + unit test (WIP)
[master-thesis.git] / Parasitemia / ParasitemiaCore / Types.fs
index 84d4548..f13043c 100644 (file)
@@ -44,7 +44,19 @@ type Ellipse (cx : float32, cy : float32, a : float32, b : float32, alpha : floa
         PI * (3.f * (this.A + this.B) - sqrt ((3.f * this.A + this.B) * (this.A + 3.f * this.B)))
 
     override this.ToString () =
-        sprintf "{Ellipse: cx = %f, cy = %f, a = %f, b = %f, alpha = %f}" this.Cx this.Cy this.A this.B this.Alpha
+        $"{{Ellipse: cx = %f{this.Cx}, cy = %f{this.Cy}, a = %f{this.A}, b = %f{this.B}, alpha = %f{this.Alpha}}}"
+
+    override this.Equals (other : obj) =
+        match other with
+        | :? Ellipse as otherEllipse ->
+            otherEllipse.Cx = this.Cx &&
+            otherEllipse.Cy = this.Cy &&
+            otherEllipse.A = this.A &&
+            otherEllipse.B = this.B &&
+            otherEllipse.Alpha = this.Alpha
+        | _ -> false
+
+    override this.GetHashCode () = HashCode.Combine (this.Cx, this.Cy, this.A, this.B, this.Alpha)
 
 [<Struct>]
 type CellClass = HealthyRBC | InfectedRBC | Peculiar