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);
        }
Example #4
0
        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);
        }