public void SetUp() { _componentEvaluator1 = new MockComponentEvaluator(TimeSpan.FromMilliseconds(1000), null); _criteriaEvaluator1 = A.Fake <IExpectationCriteriaEvaluator>(); A.CallTo(() => _criteriaEvaluator1.Met).Returns(true); _criteriaFactory1 = A.Fake <IExpectationCriteriaEvaluatorFactory>(); A.CallTo(() => _criteriaFactory1.CreateInstance()).Returns(_criteriaEvaluator1); _expectation1 = new ExpectationEvaluator( TimeSpan.FromMilliseconds(500), _componentEvaluator1, new List <Func <IAsyncEnumerable <ConditionInstance>, IAsyncEnumerable <ConditionInstance> > >(), _criteriaFactory1); _componentEvaluator2 = new MockComponentEvaluator(TimeSpan.FromMilliseconds(1000), null); _criteriaEvaluator2 = A.Fake <IExpectationCriteriaEvaluator>(); A.CallTo(() => _criteriaEvaluator2.Met).Returns(true); _criteriaFactory2 = A.Fake <IExpectationCriteriaEvaluatorFactory>(); A.CallTo(() => _criteriaFactory2.CreateInstance()).Returns(_criteriaEvaluator2); _expectation2 = new ExpectationEvaluator( TimeSpan.FromMilliseconds(500), _componentEvaluator2, new List <Func <IAsyncEnumerable <ConditionInstance>, IAsyncEnumerable <ConditionInstance> > >(), _criteriaFactory2); }
public void TearDown() { _componentEvaluator = null; _criteriaEvaluator = null; _criteriaFactory = null; _sut = null; }
public async Task Given_AnExpectationNotMetWhileShortCircuit_When_Verify_Then_ExpectationsNotMet() { _expectation1 = new ExpectationEvaluator( TimeSpan.FromMilliseconds(100), _componentEvaluator1, new List <Func <IAsyncEnumerable <ConditionInstance>, IAsyncEnumerable <ConditionInstance> > >(), _criteriaFactory1); _expectation2 = new ExpectationEvaluator( TimeSpan.FromMilliseconds(200), _componentEvaluator2, new List <Func <IAsyncEnumerable <ConditionInstance>, IAsyncEnumerable <ConditionInstance> > >(), _criteriaFactory2); A.CallTo(() => _criteriaEvaluator1.Met).Returns(false); var sut = new Verifier(new List <ExpectationEvaluator> { _expectation1, _expectation2 }, shortCircuit: true); var result = await sut.VerifyAsync(); Assert.That(result, Is.Not.Null); Assert.False(result.ExpectationsMet); Assert.That(result.ExpectationResults, Is.Not.Empty); Assert.That(result.ExpectationResults.All(x => x.Met ?? false), Is.False); Assert.That(result.ExpectationResults.Any(x => x.Met == false), Is.True); Assert.That(result.ExpectationResults.All(x => x.Completed), Is.False); Assert.That(result.ExpectationResults.Any(x => x.Completed), Is.True); }
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 void SetUp() { _componentEvaluator = new MockComponentEvaluator(TimeSpan.FromMilliseconds(50), 1); _criteriaEvaluator = A.Fake <IExpectationCriteriaEvaluator>(); A.CallTo(() => _criteriaEvaluator.Met).Returns(true); _criteriaFactory = A.Fake <IExpectationCriteriaEvaluatorFactory>(); A.CallTo(() => _criteriaFactory.CreateInstance()).Returns(_criteriaEvaluator); _sut = new ExpectationEvaluator( TimeSpan.FromMilliseconds(100), _componentEvaluator, new List <Func <IAsyncEnumerable <ConditionInstance>, IAsyncEnumerable <ConditionInstance> > >(), _criteriaFactory); }
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); }