Esempio n. 1
0
        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;
 }
Esempio n. 3
0
        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);
        }