Exemple #1
0
        public void StopThrowsWhenAlreadyStopped()
        {
            var metric = new ManualMetric(Name, Description);

            metric.Start();
            metric.Stop();
            Action validate = () => metric.Stop();

            validate.Should().Throw <InvalidOperationException>()
            .Which.Message.Should().Be("The manual timing has not been started.");
        }
Exemple #2
0
        public void ManualMetric()
        {
            var metric = new ManualMetric(MetricName);

            metric.Start();
            metric.Stop();
            metric.Validate(out _);
        }
Exemple #3
0
        public void ValidateReturnsTrueWhenStartedAndStopped()
        {
            var metric = new ManualMetric(Name, Description);

            metric.Start();
            metric.Stop();
            metric.Validate(out _).Should().BeTrue();
        }
Exemple #4
0
        public void DurationHasValueOnceStopped()
        {
            var metric = new ManualMetric(Name, Description);

            metric.Start();
            metric.Stop();
            metric.Duration.HasValue.Should().BeTrue();
        }
Exemple #5
0
        public void IsRunningUpdatedWhenStartingAndStopping()
        {
            var metric = new ManualMetric(Name, Description);

            metric.IsRunning.Should().BeFalse();

            metric.Start();
            metric.IsRunning.Should().BeTrue();

            metric.Stop();
            metric.IsRunning.Should().BeFalse();
        }
Exemple #6
0
        public async Task CanStartAndStoppedMultipleTimes()
        {
            var metric = new ManualMetric(Name, Description);

            const int iterations = 10;
            var       durations  = new List <double?>(iterations);

            for (var i = 0; i < iterations; i++)
            {
                metric.Start();
                await Task.Delay(1);

                metric.Stop();
                durations.Add(metric.Duration);
            }

            durations.Should().NotContainNulls().And.BeInAscendingOrder();
        }