public void MoveTo(LightSwitchState nextState) { if (nextState.GetType() != _currentState.GetType()) //TODO explain this! { _currentState = nextState; _currentState.OnEnter(this); //what about OnExit()? } }
public LightSwitchStateMachine( LightSwitchState initialState, int numSwitches, Func <object> powerUpLight, Func <object> powerDownLight) { CurrentState = initialState; NumSwitches = numSwitches; PowerUpLight = powerUpLight; PowerDownLight = powerDownLight; }
static void Main(string[] args) { LightSwitchState state = LightSwitchState.ON; Console.WriteLine((int)state); Enum.GetNames(typeof(LightSwitchState)).ToList().ForEach(s => Console.WriteLine(s)); LightSwitchState[] arr = (LightSwitchState[] )Enum.GetValues(typeof(LightSwitchState)); Enum.TryParse("OFF", out LightSwitchState result); Console.WriteLine(result); }
/// <summary> /// This method retrieves the transition array for a light switch for the given target state, /// i.e. to reach a target state of 'On' first a 'SwitchingOn' state must be processed, /// so it will be included in the array earlier than the target state. /// </summary> /// <param name="state"></param> /// <returns></returns> private LightSwitchState[] GetLightSwitchTransition(LightSwitchState state) { switch (state) { case LightSwitchState.On: return(new[] { LightSwitchState.SwitchingOn, LightSwitchState.On }); case LightSwitchState.Off: return(new[] { LightSwitchState.SwitchingOff, LightSwitchState.Off }); } throw new InvalidEnumArgumentException(nameof(state), (int)state, typeof(LightSwitchState)); }
public bool SendLightsState(IEnumerable <int> lightIds, LightSwitchState state) { var lightIdsMessage = new StringBuilder(); foreach (var id in lightIds ?? Enumerable.Empty <int>()) { lightIdsMessage.Append($"{id} "); } var message = $"{(int) state}, {lightIdsMessage.ToString().TrimEnd()}"; return(SendMessage(message)); }
public void ChangeState() { if (State != LightSwitchState.BROKEN) { //if (State == "On") //{ // State = "Off"; //} //else //{ // State = "On"; //} State = State == LightSwitchState.BROKEN ? LightSwitchState.BROKEN : State == LightSwitchState.OFF ? LightSwitchState.ON : LightSwitchState.OFF; } }
private static SynchronizedLightSwitch CreateLightSwitchStateMachine( LightSwitchState lightSwitchState) { return(new SynchronizedLightSwitch(new LightSwitchStateMachine( lightSwitchState))); }
public void ElectricShock() { State = LightSwitchState.BROKEN; }
public LightSwitch() { this.State = LightSwitchState.OFF; }
public LightSwitchStateMachine(LightSwitchState initialState) { _currentState = initialState; _currentState.OnEnter(this); //has to be the last line!!! Alternative - Start() method }
public void MoveTo(LightSwitchState nextState) { _currentState = nextState; _currentState.OnEnter(); //what about OnExit()? }
//etc. etc. private static void AssertMachineIsIn(LightSwitchState nextState, LightSwitchContext machine) { nextState.Received(1).SwitchOn(machine); }
public LightSwitchStateMachine(LightSwitchState initialState) { MoveTo(initialState); //has to be the last line!!! Alternative - Start() method }