public void Reset_should_clear_average()
        {
            var subject = new ExponentiallyWeightedMovingAverage(1);

            subject.AddSample(TimeSpan.FromSeconds(10));

            subject.Average.Should().NotBe(default);
        public void Average_should_be_properly_computed(double alpha, int[] samples, double result)
        {
            var subject = new ExponentiallyWeightedMovingAverage(alpha);

            foreach (var sample in samples)
            {
                subject.AddSample(TimeSpan.FromMilliseconds(sample));
            }

            subject.Average.TotalMilliseconds.Should().Be(result);
        }
        public void Average_should_be_properly_computed(double alpha, int[] samples, double result)
        {
            var subject = new ExponentiallyWeightedMovingAverage(alpha);

            foreach (var sample in samples)
            {
                subject.AddSample(TimeSpan.FromMilliseconds(sample));
            }

            subject.Average.TotalMilliseconds.Should().Be(result);
        }
        public void RunTestDefinition(BsonDocument definition)
        {
            var subject = new ExponentiallyWeightedMovingAverage(0.2);

            var current = definition["avg_rtt_ms"];
            if (current.ToString() != "NULL")
            {
                subject.AddSample(TimeSpan.FromMilliseconds(current.ToDouble())); // the first value
            }

            var nextValue = definition["new_rtt_ms"].ToDouble();
            subject.AddSample(TimeSpan.FromMilliseconds(nextValue));
            var expected = definition["new_avg_rtt"].ToDouble();

            subject.Average.Should().BeCloseTo(TimeSpan.FromMilliseconds(expected), 1);
        }