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}")); }