예제 #1
0
 public override PhiAccrualState Actual()
 {
     return(new PhiAccrualState()
     {
         History = HeartbeatHistory.Apply(_sampleSize.Get)
     });
 }
        public void StatisticsForHeartbeats_must_calculate_correct_mean_and_variance()
        {
            var samples = new[] { 100L, 200L, 125L, 340L, 130L };
            var stats   = samples.Aggregate(HeartbeatHistory.Apply(20), (current, stat) => current + stat);

            ShouldBe(stats.Mean, 179.0D, 0.00001);
            ShouldBe(stats.Variance, 7584.0D, 0.00001);
        }
        public void StatisticsForHeartbeats_must_be_capped_by_the_specified_maxSampleSize()
        {
            var history3 = HeartbeatHistory.Apply(3) + 100 + 110 + 90;

            ShouldBe(history3.Mean, 100.0D, 0.00001D);
            ShouldBe(history3.Variance, 66.6666667D, 0.00001D);

            var history4 = history3 + 140;

            ShouldBe(history4.Mean, 113.333333D, 0.00001D);
            ShouldBe(history4.Variance, 422.222222D, 0.00001D);

            var history5 = history4 + 80;

            ShouldBe(history5.Mean, 103.333333D, 0.00001D);
            ShouldBe(history5.Variance, 688.88888889D, 0.00001D);
        }
        public void StatisticsForHeartbeats_must_have_zero_variance_for_one_sample()
        {
            var history = HeartbeatHistory.Apply(600) + 1000L;

            ShouldBe(history.Variance, 0.0, 0.00001D);
        }