public void ShouldInvokeCorrectDelegateBasedOnCondition() { var factoryCollection = new StateFactoryCollection(new[] {new StateCreationRule(Dummy.Condition(true), Dummy.CreateNextState())}); var state = factoryCollection.Execute(Dummy.NewResponse, Dummy.StateVariables, Dummy.ClientCapabilities); Assert.AreEqual(Dummy.NewState, state); }
public void ShouldReturnUnsuccesfulStateIfNoConditionIsSatisfiedAndDefaultFactoryIsNotSupplied() { var dummyCondition = MockRepository.GenerateStub<ICondition>(); dummyCondition.Expect(c => c.IsApplicable(Dummy.NewResponse, Dummy.StateVariables)).Return(false); var factoryCollection = new StateFactoryCollection(new[] {new StateCreationRule(Dummy.Condition(false), Dummy.CreateNextState())}); Assert.IsInstanceOf(typeof (UnsuccessfulState), factoryCollection.Execute(Dummy.NewResponse, Dummy.StateVariables, Dummy.ClientCapabilities)); }
public void ShouldInvokeDefaultDelegateIfNoConditionIsSatisfied() { var defaultState = MockRepository.GenerateStub<IState>(); CreateStateDelegate createDefaultState = (r, v, c) => defaultState; var factoryCollection = new StateFactoryCollection(new[] {new StateCreationRule(Dummy.Condition(false), Dummy.CreateNextState())}, createDefaultState); var state = factoryCollection.Execute(Dummy.NewResponse, Dummy.StateVariables, Dummy.ClientCapabilities); Assert.AreEqual(defaultState, state); }
public IRule Return(IEnumerable<StateCreationRule> stateCreationRules, CreateNextStateDelegate defaultCreateNextStateDelegate = null) { Check.IsNotNull(stateCreationRules, "stateCreationRules"); if (defaultCreateNextStateDelegate == null) { return new Rule(condition, requestAction, new StateFactoryCollection(stateCreationRules)); } var stateFactoryCollection = new StateFactoryCollection(stateCreationRules, (r, v, c) => defaultCreateNextStateDelegate(r, v)); return new Rule(condition, requestAction, stateFactoryCollection); }