summaryrefslogtreecommitdiff
path: root/src/LivingVillage.Desktop.Tests/PerformanceSummaryTests.fs
blob: cd7c3b104c51ab580fdd20d175f4f34f5b46039b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
namespace LivingVillage.Desktop.Tests

open System
open Microsoft.VisualStudio.TestTools.UnitTesting
open LivingVillage.Desktop

[<TestClass>]
type PerformanceSummaryTests () =

    let close (expected: float) (actual: float) =
        Assert.IsTrue(abs (expected - actual) < 0.0001, sprintf "expected %f but got %f" expected actual)

    [<TestMethod>]
    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<int>(2, summary.Count)
            close 35.0 summary.Mean
            close 30.0 summary.Min
            close 40.0 summary.Max

    [<TestMethod>]
    member _.SummarizeReturnsNoneWhenNoRealSampleRemains () =
        Assert.IsTrue((PerformanceSummary.summarize 5 [ 1.0; 2.0 ]).IsNone)
        Assert.IsTrue((PerformanceSummary.summarize 0 []).IsNone)

    [<TestMethod>]
    member _.SummarizeWithZeroWarmupKeepsEverySample () =
        match PerformanceSummary.summarize 0 [ 60.0; 59.5; 61.0 ] with
        | None -> Assert.Fail("expected a summary")
        | Some summary ->
            Assert.AreEqual<int>(3, summary.Count)
            close 59.5 summary.Min