public void Test__BasicSync() { // Arrange var paylod = new TestPayload(); var fsm = SimpleFsmBuilder <TestStates, TestPayload> .New() .SetStartState(TestStates.Start) .SetEndState(TestStates.End) .AddTransition(TestStates.Start, TestStates.Step1) .AddHandler(TestStates.Step1, (currentState, payload) => { payload.Value = "Test1"; return(TestStates.Step2); }) .AddHandler(TestStates.Step2, (currentState, payload) => { payload.Value = "Test2"; return(TestStates.Step3); }).AddHandler(TestStates.Step3, (currentState, payload) => { payload.Value = "Test3"; return(TestStates.End); }) .Build(); // Act fsm.Start(paylod); // Assert Assert.Equal("Test3", paylod.Value); }
public void Test__ExceptionHandler() { // Arrange var paylod = new TestPayload(); var expectedException = new Exception(); // Act, Assert SimpleFsmBuilder <TestStates, TestPayload> .New() .SetStartState(TestStates.Start) .SetEndState(TestStates.End) .AddTransition(TestStates.Start, TestStates.Step1) .AddHandler(TestStates.Step1, (currentState, payload) => { payload.Value = "Test1"; // Throw some exception throw expectedException; }) .SetExceptionHandler((currentState, payload, exception) => { // Validate the exception Assert.Equal(expectedException, exception); return(TestStates.End); }) .Build() .Start(paylod); }