示例#1
0
        private void CheckThatNoStateHasAlreadyASuperState(IEnumerable <TState> stateIds, TState newSuperStateId)
        {
            IEnumerable <IState <TState, TEvent> > statesAlreadyHavingASuperState = stateIds.Select(subStateId => this.states[subStateId]).Where(subState => subState.SuperState != null);

            if (statesAlreadyHavingASuperState.Any())
            {
                throw new InvalidOperationException(ExceptionMessages.CannotSetStateAsASuperStateBecauseASuperStateIsAlreadySet(newSuperStateId, statesAlreadyHavingASuperState));
            }
        }
示例#2
0
        private void CheckThatStateHasNotAlreadyASuperState(IState <TState, TEvent> subState)
        {
            Ensure.ArgumentNotNull(subState, "subState");

            if (subState.SuperState != null)
            {
                throw new InvalidOperationException(
                          ExceptionMessages.CannotSetStateAsASuperStateBecauseASuperStateIsAlreadySet(
                              this.superState.Id,
                              subState));
            }
        }
        public void ThrowsExceptionIfSubStateAlreadyHasASuperState()
        {
            const string SubState = "SubState";
            var          subState = new StateDefinition <string, int>(SubState)
            {
                SuperStateModifiable = new StateDefinition <string, int>("SomeOtherSuperState")
            };

            A.CallTo(() => this.states[SubState]).Returns(subState);

            this.testee.Invoking(t => t.WithInitialSubState(SubState))
            .Should().Throw <InvalidOperationException>()
            .WithMessage(ExceptionMessages.CannotSetStateAsASuperStateBecauseASuperStateIsAlreadySet(
                             SuperState,
                             subState));
        }