public static StateTransition Replace(IAmATrafficLightState state)
 {
     if (state == null)
     {
         throw new ArgumentNullException("state");
     }
     return(new StateTransition(TransitionTypeOptions.Replace, state));
 }
Esempio n. 2
0
        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;
        }