public void Input_handles_value_types() { var machine = new FiniteStateMachine<string, int>(); machine.CurrentState = "Start"; machine.Transitions.Add( new StateTransition<string, int>{InputValidator = i => i.Equals(0), FromState = "Start", ToState = "End"} ); machine.Input(0); }
public void Input_throws_ArgumentException_if_more_than_1_transition_found_for_current_state_and_input() { var machine = new FiniteStateMachine<UpdateState, string>(); machine.Transitions.Add(new StateTransition<UpdateState, string> { FromState = UpdateState.Ready, ToState = UpdateState.Cancelling, InputValidator = s => s.Equals("Start") }); machine.Transitions.Add(new StateTransition<UpdateState, string> { FromState = UpdateState.Ready, ToState = UpdateState.DownloadingUpdate, InputValidator = s => s.Equals("Start") }); machine.Input("Start"); }
public void Unknown_input_throws_ArgumentException() { var machine = new FiniteStateMachine<string, string>(); machine.Input("CheckForUpdates"); }
public void Transitions_for_mapped_input() { var machine = new FiniteStateMachine<UpdateState, string>(); machine.Transitions.Add( new StateTransition<UpdateState, string>(){FromState = UpdateState.Ready, InputValidator = s => s.Equals("CheckForUpdates"), ToState = UpdateState.DownloadingUpdate}); machine.Input("CheckForUpdates"); Assert.AreEqual(UpdateState.DownloadingUpdate, machine.CurrentState); }