public async Task MessageProcessed_ShouldGrowQueueIfNewEventIsLaterThanLatestTimePeriod()
        {
            var sut = new PerformanceStats(TimeSpan.FromMilliseconds(50), 3);

            sut.MessageProcessed("something arbitrary");

            await Task.Delay(60);

            sut.Records.Should().HaveCount(2);

            await Task.Delay(60);

            sut.MessageProcessed("something arbitrary");
            sut.Records.Should().HaveCount(3);
        }
        public async Task MessageProcessed_ShouldNotGrowQueueIfNewEventIsWithinTheLatestTimePeriod()
        {
            var sut = new PerformanceStats(TimeSpan.FromHours(1), 3);
            await Task.Delay(5);

            sut.MessageProcessed("something arbitrary");
            await Task.Delay(5);

            sut.Records.Should().HaveCount(1);

            sut.MessageProcessed("something arbitrary");
            await Task.Delay(5);

            sut.Records.Should().HaveCount(1);
        }
        public async Task TidyRecords_WhenAddingRecords_ShouldGrowUpToMaximumSize()
        {
            var sut = new PerformanceStats(TimeSpan.FromMilliseconds(50), 3);

            await Task.Delay(60);

            sut.MessageProcessed("something arbitrary");

            sut.Records.Should().HaveCount(2);

            await Task.Delay(60);

            sut.MessageProcessed("something arbitrary");
            sut.Records.Should().HaveCount(3);

            sut.MessageProcessed("something arbitrary");
            sut.Records.Should().HaveCount(3);
        }