Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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);
        }