Пример #1
0
        public void Given_HasCriteriaTimeout_When_Build_Then_TimeoutIsCriteriaTimeout()
        {
            var verifierTimeout = TimeSpan.FromMilliseconds(1000);
            var criteriaTimeout = TimeSpan.FromMilliseconds(500);

            A.CallTo(() => _criteriaSpec.Timeout).Returns(criteriaTimeout);

            var evaluator = _spec.Build(verifierTimeout, _componentEvaluator, string.Empty);

            Assert.That(evaluator.Timeout, Is.EqualTo(criteriaTimeout));
            Assert.AreNotEqual(verifierTimeout, evaluator.Timeout);
        }
        public async Task Given_Configured_When_Build_Then_EvaluatorBuilt()
        {
            // Arrange
            var verifierTimeout = TimeSpan.FromMilliseconds(500);

            var spec   = new ExpectationSpecification();
            var config = (IExpectationConfigurator)spec;

            async IAsyncEnumerable <ConditionInstance> FilterImp(IAsyncEnumerable <ConditionInstance> enumerable)
            {
                await foreach (var item in enumerable)
                {
                    if (item.When >= TimeSpan.FromMilliseconds(200))
                    {
                        continue;
                    }

                    yield return(item);
                }
            }

            var filterSpec = A.Fake <IExpectationFilterSpecification>();

            A.CallTo(() => filterSpec.Build()).Returns(FilterImp);

            bool failed   = false;
            var  criteria = A.Fake <IExpectationCriteriaEvaluator>();

            A.CallTo(() => criteria.Evaluate(A <ConditionInstance> ._)).Invokes((ConditionInstance c) =>
            {
                if (c.When >= TimeSpan.FromMilliseconds(200))
                {
                    failed = true;
                }
            });
            A.CallTo(() => criteria.Met).ReturnsLazily(() => !failed);

            var criteriaFactory = A.Fake <IExpectationCriteriaEvaluatorFactory>();

            A.CallTo(() => criteriaFactory.CreateInstance()).Returns(criteria);

            var criteriaSpec = A.Fake <IExpectationCriteriaSpecification>();

            A.CallTo(() => criteriaSpec.Build()).Returns(criteriaFactory);
            A.CallTo(() => criteriaSpec.Timeout).Returns(TimeSpan.FromMilliseconds(500));

            var componentEvaluator = new MockComponentEvaluator(TimeSpan.FromMilliseconds(50), 8);

            config.Where(c => c.AddSpecification(filterSpec))
            .Must(criteriaSpec);

            var evaluator = spec.Build(verifierTimeout, componentEvaluator, string.Empty);

            var result = await evaluator.EvaluateAsync();

            Assert.That(result, Is.Not.Null);
            Assert.That(result.Met, Is.True);
            Assert.That(result.Completed, Is.True);
        }
        public void Given_NullComponent_When_Build_Then_Throw()
        {
            // Arrange
            var spec = new ExpectationSpecification();

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() => spec.Build(TimeSpan.FromMilliseconds(1), null, string.Empty));
        }
        public void Given_NotConfigured_When_Build_Then_Throw()
        {
            // Arrange
            var spec      = new ExpectationSpecification();
            var component = A.Dummy <IComponentConditionEvaluator>();

            // Act & Assert
            Assert.Throws <InvalidOperationException>(() => spec.Build(TimeSpan.FromMilliseconds(1), component, string.Empty));
        }
        public void Given_BuiltInDescriptions_When_EvaluatorDescription_Then_DefaultDescription()
        {
            var spec   = new ExpectationSpecification();
            var config = (IExpectationConfigurator)spec;

            config.Where(c => c.AddSpecification(_filterSpec))
            .Must(_criteriaSpec);

            var evaluator = spec.Build(_verifierTimeout, _componentEvaluator, ConditionDescription);

            Assert.That(evaluator.Description, Is.EqualTo($"{ConditionDescription} WHERE {FilterDescription} MUST {CriteriaDescription}"));
        }
        public void Given_DescriptionOverride_When_EvaluatorDescription_Then_DescriptionOverride()
        {
            const string DescriptionOverride = "Override";

            var spec   = new ExpectationSpecification();
            var config = (IExpectationConfigurator)spec;

            config.Description(DescriptionOverride)
            .Where(c => c.AddSpecification(_filterSpec))
            .Must(_criteriaSpec);

            var evaluator = spec.Build(_verifierTimeout, _componentEvaluator, ConditionDescription);

            Assert.That(evaluator.Description, Is.EqualTo(DescriptionOverride));
        }
        public void Given_MultipleDescriptions_When_EvaluatorDescription_Then_DefaultDescription()
        {
            const string FilterDescription2 = "Filter2";

            var spec   = new ExpectationSpecification();
            var config = (IExpectationConfigurator)spec;

            var filterSpec2 = A.Fake <IExpectationFilterSpecification>();

            A.CallTo(() => filterSpec2.Description).Returns(FilterDescription2);

            config.Where(c => c.AddSpecification(_filterSpec))
            .Where(c => c.AddSpecification(filterSpec2))
            .Must(_criteriaSpec);

            var evaluator = spec.Build(_verifierTimeout, _componentEvaluator, ConditionDescription);

            Assert.That(evaluator.Description, Is.EqualTo($"{ConditionDescription} WHERE {FilterDescription}, {FilterDescription2} MUST {CriteriaDescription}"));
        }