public async Task Given_Evaluator_When_Evaluate_Then_ResultAndDisposeDependencies() { var result = await _sut.EvaluateAsync(); Assert.That(result, Is.Not.Null); Assert.That(result.Met, Is.True); Assert.That(result.Completed, Is.True); TestDependenciesCleanUp(); }
public async Task Given_AlreadyEvaluating_When_Evaluate_Then_Throws() { // For an await with a timeout evaluator _sut = new ExpectationEvaluator( TimeSpan.FromMilliseconds(500), new MockComponentEvaluator(TimeSpan.FromMilliseconds(1000), 5), new List <Func <IAsyncEnumerable <ConditionInstance>, IAsyncEnumerable <ConditionInstance> > >(), _criteriaFactory); var evaluatorTask = _sut.EvaluateAsync(); Assert.ThrowsAsync <InvalidOperationException>(() => _sut.EvaluateAsync()); await evaluatorTask; // Allow to finish }
public async Task Given_Evaluator_When_CancelToken_Then_ResultIsInconclusive() { // Prepare for evaluator to take longer than cancelling _sut = new ExpectationEvaluator( TimeSpan.FromMilliseconds(1000), // Cancel second new MockComponentEvaluator(TimeSpan.FromMilliseconds(1000), null), new List <Func <IAsyncEnumerable <ConditionInstance>, IAsyncEnumerable <ConditionInstance> > >(), _criteriaFactory); // Go var tokenSource = new CancellationTokenSource(); var evaluateTask = Task.Run(async() => await _sut.EvaluateAsync(tokenSource.Token)); // Cancel first await Task.Delay(250); tokenSource.Cancel(); Assert.ThrowsAsync <TaskCanceledException>(() => evaluateTask); }
public async Task Given_CriteriaMetEarly_When_Evaluate_Then_StopCheckingInstances(int incompleteCount) { var results = new List <bool>(); results.AddRange(Enumerable.Repeat(false, incompleteCount)); results.Add(true); A.CallTo(() => _criteriaEvaluator.Evaluate(A <ConditionInstance> ._)).ReturnsNextFromSequence(results.ToArray()); _componentEvaluator = new MockComponentEvaluator(TimeSpan.FromMilliseconds(10), 5); _sut = new ExpectationEvaluator( TimeSpan.FromMilliseconds(1000), _componentEvaluator, new List <Func <IAsyncEnumerable <ConditionInstance>, IAsyncEnumerable <ConditionInstance> > >(), _criteriaFactory); await _sut.EvaluateAsync(); Assert.That(_componentEvaluator.InstanceCount, Is.EqualTo(incompleteCount + 1)); }
public async Task Given_Evaluator_When_Timeout_Then_ResultCompleted() { // Prepare for evaluator to take longer than cancelling _sut = new ExpectationEvaluator( TimeSpan.FromMilliseconds(100), // Cancel first new MockComponentEvaluator(TimeSpan.FromMilliseconds(1000), null), new List <Func <IAsyncEnumerable <ConditionInstance>, IAsyncEnumerable <ConditionInstance> > >(), _criteriaFactory); // Go var tokenSource = new CancellationTokenSource(); var evaluateTask = Task.Run(async() => await _sut.EvaluateAsync(tokenSource.Token)); // Cancel second await Task.Delay(300); tokenSource.Cancel(); var result = await evaluateTask; Assert.That(result, Is.Not.Null); Assert.True(result.Completed); Assert.That(result.Met, Is.Not.Null); }