namespace LivingVillage.Desktop.Tests open System open Microsoft.VisualStudio.TestTools.UnitTesting open LivingVillage.Desktop [] type PerformanceSummaryTests () = let close (expected: float) (actual: float) = Assert.IsTrue(abs (expected - actual) < 0.0001, sprintf "expected %f but got %f" expected actual) [] member _.SummarizeDropsWarmupAndReportsMeanMinMax () = match PerformanceSummary.summarize 2 [ 10.0; 20.0; 30.0; 40.0 ] with | None -> Assert.Fail("expected a summary") | Some summary -> Assert.AreEqual(2, summary.Count) close 35.0 summary.Mean close 30.0 summary.Min close 40.0 summary.Max [] member _.SummarizeReturnsNoneWhenNoRealSampleRemains () = Assert.IsTrue((PerformanceSummary.summarize 5 [ 1.0; 2.0 ]).IsNone) Assert.IsTrue((PerformanceSummary.summarize 0 []).IsNone) [] member _.SummarizeWithZeroWarmupKeepsEverySample () = match PerformanceSummary.summarize 0 [ 60.0; 59.5; 61.0 ] with | None -> Assert.Fail("expected a summary") | Some summary -> Assert.AreEqual(3, summary.Count) close 59.5 summary.Min