public static StateTransition Replace(IAmATrafficLightState state) { if (state == null) { throw new ArgumentNullException("state"); } return(new StateTransition(TransitionTypeOptions.Replace, state)); }
public TrafficLight(string trafficLightId, IAmATrafficLightState initialState) { if (string.IsNullOrWhiteSpace(trafficLightId)) { throw new ArgumentNullException("Null/blank trafficLightId specified"); } if (initialState == null) { throw new ArgumentNullException("initialState"); } TrafficLightId = trafficLightId.Trim(); _states = new Stack <IAmATrafficLightState>(); _states.Push(initialState); }
private StateTransition(TransitionTypeOptions transitionType, IAmATrafficLightState newState) { if (!Enum.IsDefined(typeof(TransitionTypeOptions), transitionType)) { throw new ArgumentOutOfRangeException("transitionType"); } if ((transitionType == TransitionTypeOptions.NoChange) || (transitionType == TransitionTypeOptions.Pop)) { if (newState != null) { throw new ArgumentException("newState must be null if transitionType is NoChange or Pop"); } } else if (newState == null) { throw new ArgumentException("newState must be non-null if transitionType is Push or Replace"); } TransitionType = transitionType; NewState = newState; }