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