Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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;
 }