public void ChangeState_ValidState_ExitsThenEnters() { // Arrange var log = new StateMachineDiagonosticsLog <TwoStatesID>(); var stubStates = new StubStateWithDiagnostics <TwoStatesID>[] { new StubStateWithDiagnostics <TwoStatesID>(TwoStatesID.One, log), new StubStateWithDiagnostics <TwoStatesID>(TwoStatesID.Two, log), }; var stateMachine = new StateMachine <TwoStatesID>(stubStates, TwoStatesID.One); var expectedLog = new StateMachineDiagonosticsLog <TwoStatesID>(); expectedLog.AddEntry(StateMachineDiagonosticsLog <TwoStatesID> .LogEntry.Callback.Enter, TwoStatesID.One); expectedLog.AddEntry(StateMachineDiagonosticsLog <TwoStatesID> .LogEntry.Callback.Exit, TwoStatesID.One); expectedLog.AddEntry(StateMachineDiagonosticsLog <TwoStatesID> .LogEntry.Callback.Enter, TwoStatesID.Two); // Act stateMachine.ChangeState(TwoStatesID.Two); // Assert Assert.That(log, Is.EqualTo(expectedLog)); }
public void CtorNoReflection_OneState_EntersOnlyInitialState() { // Arrange var log = new StateMachineDiagonosticsLog <TwoStatesID>(); var stubStates = new StubStateWithDiagnostics <TwoStatesID>[] { new StubStateWithDiagnostics <TwoStatesID>(TwoStatesID.One, log), new StubStateWithDiagnostics <TwoStatesID>(TwoStatesID.Two, log), }; var expectedLog = new StateMachineDiagonosticsLog <TwoStatesID>(); expectedLog.AddEntry(StateMachineDiagonosticsLog <TwoStatesID> .LogEntry.Callback.Enter, TwoStatesID.One); // Act new StateMachine <TwoStatesID>(stubStates, TwoStatesID.One); // Assert Assert.That(log, Is.EqualTo(expectedLog)); }