public void CanCreateBindingDelegateFor_CalledWhenAllInnerBindersReturnFalse_ExpectFalseIsReturned( [WithinInclusiveRange(1, 10)] int numberOfInnerBinders, Type requestType) { var innerBinders = CreateNumberOfStubServiceRequestBindersUnableToCreateDelegate(numberOfInnerBinders, requestType); var chain = new ServiceRequestBinderChain(innerBinders); chain.CanCreateBindingDelegateFor(requestType).Should().BeFalse(); }
public void CanCreateBindingDelegateFor_CalledWhenAtLeastOneInnerBinderReturnsTrue_ExpectTrueIsReturned( [WithinInclusiveRange(0, 10)] int numberOfFalseInnerBinders, [WithinInclusiveRange(1, 10)] int numberOfTrueInnerBinders, Type requestType) { var falseBinders = CreateNumberOfStubServiceRequestBindersUnableToCreateDelegate(numberOfFalseInnerBinders, requestType); var trueBinders = CreateNumberOfStubServiceRequestBindersAbleToCreateDelegate(numberOfTrueInnerBinders, requestType); var chain = new ServiceRequestBinderChain(falseBinders.Concat(trueBinders).Shuffle()); chain.CanCreateBindingDelegateFor(requestType).Should().BeTrue(); }
public void CanCreateBindingDelegateFor_CalledMultipleTimes_ExpectEnumerableOfInnerBindersIsOnlyEnumeratedOnce( Type requestType1, Type requestType2) { var innerBinders = Mock.Enumerable <IServiceRequestBinder>(); var chain = new ServiceRequestBinderChain(innerBinders); chain.CanCreateBindingDelegateFor(requestType1); chain.CanCreateBindingDelegateFor(requestType2); innerBinders.AssertWasCalled(x => x.GetEnumerator(), x => x.Repeat.Once()); }
public void CreateBindingDelegate_CalledMultipleTimes_ExpectEnumerableOfInnerBindersIsOnlyEnumeratedOnce( Type requestType1, ServiceRequestBinderContext context1, Type requestType2, ServiceRequestBinderContext context2) { var innerBinders = Mock.Enumerable <IServiceRequestBinder>(); var chain = new ServiceRequestBinderChain(innerBinders); chain.Invoking(x => x.CreateBindingDelegate(requestType1, context1)).ShouldThrow <Exception>(); chain.Invoking(x => x.CreateBindingDelegate(requestType2, context2)).ShouldThrow <Exception>(); innerBinders.AssertWasCalled(x => x.GetEnumerator(), x => x.Repeat.Once()); }
public void CreateBindingDelegate_CalledWhenAtLeastOneInnerBinderCanCreateDelegate_ExpectReturnedDelegateIsFromInnerBinder( [WithinInclusiveRange(0, 10)] int numberOfFalseInnerBinders, [WithinInclusiveRange(1, 10)] int numberOfTrueInnerBinders, Type requestType, ServiceRequestBinderContext context) { Func <object, object> constructedDelegate = x => new object(); var falseBinders = CreateNumberOfStubServiceRequestBindersUnableToCreateDelegate(numberOfFalseInnerBinders, requestType); var trueBinders = CreateNumberOfStubServiceRequestBindersAbleToCreateDelegate(numberOfTrueInnerBinders, requestType); trueBinders.ForEach(inv => inv.Stub( x => x.CreateBindingDelegate(Arg <Type> .Is.Same(requestType), Arg <ServiceRequestBinderContext> .Is.Same(context))) .Return(constructedDelegate)); var chain = new ServiceRequestBinderChain(falseBinders.Concat(trueBinders).Shuffle()); chain.CreateBindingDelegate(requestType, context).Should().BeSameAs(constructedDelegate); }
public void CanCreateBindingDelegateFor_CalledMultipleTimes_ExpectEnumerableOfInnerBindersIsOnlyEnumeratedOnce( Type requestType1, Type requestType2) { var innerBinders = Mock.Enumerable<IServiceRequestBinder>(); var chain = new ServiceRequestBinderChain(innerBinders); chain.CanCreateBindingDelegateFor(requestType1); chain.CanCreateBindingDelegateFor(requestType2); innerBinders.AssertWasCalled(x => x.GetEnumerator(), x => x.Repeat.Once()); }
public void CreateBindingDelegate_CalledMultipleTimes_ExpectEnumerableOfInnerBindersIsOnlyEnumeratedOnce( Type requestType1, ServiceRequestBinderContext context1, Type requestType2, ServiceRequestBinderContext context2) { var innerBinders = Mock.Enumerable<IServiceRequestBinder>(); var chain = new ServiceRequestBinderChain(innerBinders); chain.Invoking(x => x.CreateBindingDelegate(requestType1, context1)).ShouldThrow<Exception>(); chain.Invoking(x => x.CreateBindingDelegate(requestType2, context2)).ShouldThrow<Exception>(); innerBinders.AssertWasCalled(x => x.GetEnumerator(), x => x.Repeat.Once()); }
public void CreateBindingDelegate_CalledWhenAtLeastOneInnerBinderCanCreateDelegate_ExpectReturnedDelegateIsFromInnerBinder( [WithinInclusiveRange(0, 10)] int numberOfFalseInnerBinders, [WithinInclusiveRange(1, 10)] int numberOfTrueInnerBinders, Type requestType, ServiceRequestBinderContext context) { Func<object, object> constructedDelegate = x => new object(); var falseBinders = CreateNumberOfStubServiceRequestBindersUnableToCreateDelegate(numberOfFalseInnerBinders, requestType); var trueBinders = CreateNumberOfStubServiceRequestBindersAbleToCreateDelegate(numberOfTrueInnerBinders, requestType); trueBinders.ForEach(inv => inv.Stub( x => x.CreateBindingDelegate(Arg<Type>.Is.Same(requestType), Arg<ServiceRequestBinderContext>.Is.Same(context))) .Return(constructedDelegate)); var chain = new ServiceRequestBinderChain(falseBinders.Concat(trueBinders).Shuffle()); chain.CreateBindingDelegate(requestType, context).Should().BeSameAs(constructedDelegate); }