public void GetAvailableEvents_WhenValidState_ReturnsAvailableEvents( string currentState, string[] expectedEvents) { var sut = new StateMachine(GetTestTransitionTable()); IEnumerable<string> result = sut.GetAvailableEvents(currentState); Assert.Equal(expectedEvents, result.ToArray()); }
public void GetAvailableEvents_WhenInvalidState_Throws() { var sut = new StateMachine(GetTestTransitionTable()); var ex = Assert.Throws<InvalidOperationException>( () => sut.GetAvailableEvents("Bogus")); Assert.Equal("Invalid state: 'Bogus'.", ex.Message); }
public void GetAvailableEvents_WhenTerminalState_ReturnsEmpty() { const string TerminalState = "Terminal"; var transitionTable = new List<Transition> { new Transition("Whatever", "something", TerminalState) }; var sut = new StateMachine(transitionTable); IEnumerable<string> result = sut.GetAvailableEvents(TerminalState); Assert.Empty(result); }
public void GetAvailableEvents_WhenCurrentStateIsNull_Throws() { var sut = new StateMachine(GetTestTransitionTable()); Assert.Throws<ArgumentNullException>( () => sut.GetAvailableEvents(null)); }