public void EvaluateTask_TenIterations_WithIterationEvent()
{
// Arrange
var shark = new BenchShark {EnableUnoptimizedEvaluations = true};
var counter = 0;
var passed = false;
shark.IterationCompleted += (sender, args) =>
{
// Assert the current iteration
Assert.IsTrue(args.CurrentIteration.ElapsedTicks > args.CurrentIteration.ExecutionTime.TotalMilliseconds);
// Assert the current evaluation
Assert.AreEqual(++counter, args.CurrentEvaluation.IterationsCount);
Assert.AreEqual(null, args.CurrentEvaluation.Name);
// The following is true when more than one iteration is performed
if (args.CurrentEvaluation.IterationsCount > 1)
{
Assert.IsTrue(args.CurrentEvaluation.AverageElapsedTicks < args.CurrentEvaluation.TotalElapsedTicks);
Assert.IsTrue(args.CurrentEvaluation.AverageExecutionTime < args.CurrentEvaluation.TotalExecutionTime);
Assert.IsTrue(args.CurrentEvaluation.WorstExecutionTime > args.CurrentEvaluation.BestExecutionTime);
Assert.IsTrue(args.CurrentEvaluation.WorstElapsedTicks > args.CurrentEvaluation.BestElapsedTicks);
passed = true;
}
};
// Act
var result = shark.EvaluateTask(TaskToEvaluate, 10);
// Assert
Assert.AreEqual(10, result.IterationsCount);
Assert.IsTrue(passed);
}