public void CtorNoReflection_CorrectNumberOfStatesButDuplicates_Throws() { // Arrange var log = new StateMachineDiagonosticsLog <TwoStatesID>(); var stubStates = new StubStateWithDiagnostics <TwoStatesID>[] { new StubStateWithDiagnostics <TwoStatesID>(TwoStatesID.One, log), new StubStateWithDiagnostics <TwoStatesID>(TwoStatesID.One, log), }; // Both "DuplicateStates" and "NotEnoughStates" would be valid errors var notEnoughMessage = string.Concat( "StateMachine trying to initialize with an invalid set of states. " + "Not enough states passed in. Missing states: Two"); var duplicatesMessage = string.Concat( "StateMachine trying to initialize with an invalid set of states. " + "Duplicate states passed in. Duplicate states: One"); // Act / Assert var exception = Assert.Throws <System.ArgumentException>( () => new StateMachine <TwoStatesID>(stubStates, TwoStatesID.One)); Assert.That(exception.Message, Is.EqualTo(notEnoughMessage).Or.EqualTo(duplicatesMessage)); }
public void CtorNoReflection_NotEnoughStates_Throws() { // Arrange var log = new StateMachineDiagonosticsLog <TwoStatesID>(); var stubStates = new StubStateWithDiagnostics <TwoStatesID>[] { new StubStateWithDiagnostics <TwoStatesID>(TwoStatesID.One, log) }; var expectedMessage = string.Concat( "StateMachine trying to initialize with an invalid set of states. " + "Not enough states passed in. Missing states: Two"); // Act / Assert var exception = Assert.Throws <System.ArgumentException>( () => new StateMachine <TwoStatesID>(stubStates, TwoStatesID.One)); Assert.That(exception.Message, Is.EqualTo(expectedMessage)); }
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)); }
public void ChangeState_CurrentState_DoesNothing() { // 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); // Act stateMachine.ChangeState(TwoStatesID.One); // Assert Assert.That(log, Is.EqualTo(expectedLog)); }
public StubStateWithDiagnostics(T id, StateMachineDiagonosticsLog <T> diagonosticsLog) { this.ID = id; this.Log = diagonosticsLog; }