예제 #1
0
        public void RatePerSecond_BasicVerification()
        {
            var counter = new RatePerSecond();

            foreach (var item in FibonacciHelper.ComputeTo(47).Skip(7).Take(7))
            {
                counter.Increment(item);
            }
            Assert.AreEqual(589, counter.Value);
        }
예제 #2
0
        public void MeanAverage_BasicVerification()
        {
            var counter             = new MeanAverage();
            var expectedCount       = 0L;
            var expectedTotalCounts = 0L;

            foreach (var count in FibonacciHelper.ComputeTo(47))
            {
                counter.Increment(count);
                (counter.Denominator as ISupportsIncrement <long>)?.Increment();
                expectedCount       += count;
                expectedTotalCounts += 1;
                Assert.AreEqual(expectedCount / expectedTotalCounts, counter.Value);
            }
        }
예제 #3
0
        public void MovingAverage_BasicVerification()
        {
            var seriesLength  = byte.MaxValue;
            var counter       = new MovingAverage(seriesLength);
            var series        = new Queue <long>();
            var approximation = 0L;

            foreach (var count in FibonacciHelper.ComputeTo(47))
            {
                counter.Increment(count);
                series.Enqueue(count);
                approximation += count;
                if (series.Count > seriesLength)
                {
                    approximation -= series.Dequeue();
                }
                Assert.AreEqual(approximation / seriesLength, counter.Value);
            }
        }
예제 #4
0
        public void MedianAverage_BasicVerification()
        {
            var counter = new MedianAverage();

            // verify 'tween' result
            // with initial series: 1,1,2,3,5,8,13,21,34,55,89 !,! 144,233,377,610,987,1597,2584,4181,6765,10946,17711
            foreach (var count in FibonacciHelper.ComputeTo(21))
            {
                counter.Increment(count);
            }
            Assert.AreEqual(72, counter.Value);

            // verify 'non-tween' result
            // with additional series: 34,55,89,144,233,377, !610! ,987,1597,2584,4181,6765,10946,17711
            foreach (var count in FibonacciHelper.ComputeTo(27).Skip(8))
            {
                counter.Increment(count);
            }
            Assert.AreEqual(377, counter.Value);

            // verify performant enough not to timeout test tool
            var fib = FibonacciHelper.ComputeTo(127).ToArray();

            for (int i = 0; i < ushort.MaxValue; i++)
            {
                counter.Increment(fib[i++ % fib.Length]);
            }
            Assert.AreEqual(4807526976, counter.Value);

            // confirm outlier does not pull average
            counter.Reset();
            counter.Increment(1);
            counter.Increment(1);
            counter.Increment(1);
            counter.Increment(int.MaxValue);
            Assert.AreEqual(1, counter.Value);
        }