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));
        }
Beispiel #4
0
            public void Expect(IComponentConditionSpecification conditionSpecification, Action <IExpectationConfigurator> config)
            {
                var expecationSpec = new ExpectationSpecification();

                config(expecationSpec);

                _specs.Add(
                    (
                        conditionSpecification ?? throw new ArgumentNullException(nameof(conditionSpecification)),
                        expecationSpec
                    ));
            }
        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}"));
        }
Beispiel #6
0
        public void SetUp()
        {
            _spec = new ExpectationSpecification();
            var config = (IExpectationConfigurator)_spec;

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

            _criteriaSpec = A.Fake <IExpectationCriteriaSpecification>();
            A.CallTo(() => _criteriaSpec.Build()).Returns(criteriaFactory);

            config.Must(_criteriaSpec);

            _componentEvaluator = A.Dummy <IComponentConditionEvaluator>();
        }
        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}"));
        }