public void Constructor_WhenCalledWithEmptyList_StateIsSet()
        {
            //Arrange
            var uiElements = new List <Control>();

            //Act
            var automaton = new FiniteStateAutomatonValidator(uiElements);
            var result    = automaton.GetUiElements();

            //Assert
            Assert.IsTrue(result != null);
            CollectionAssert.AreEqual(result, uiElements);
        }
        public void Constructor_WhenCalled_StateIsSet()
        {
            //Arrange
            var uiElements = GetTestComboBox();

            //Act
            var automaton = new FiniteStateAutomatonValidator(uiElements);
            var result    = automaton.GetUiElements();

            //Assert
            Assert.IsTrue(result != null);
            CollectionAssert.AreEqual(result, uiElements);
        }
        public void DisableAllStates_WhenCalled_AllUiElementsAreDisabled()
        {
            //Arrange
            var uiElements = GetTestComboBox();
            var automaton  = new FiniteStateAutomatonValidator(uiElements);

            //Act
            automaton.DisableAllStates();
            var result = automaton.GetUiElements();

            //Assert
            Assert.IsTrue(result != null);
            Assert.IsTrue(result.All(entry => entry.IsEnabled == false));
        }
        public void EnableValidTransitions_WhenCalledWithVariable_CorrectStatesAreEnabled()
        {
            //Arrange
            var uiElements = GetTestComboBox();
            var nextState  = new VariableObject();
            var automaton  = new FiniteStateAutomatonValidator(uiElements);

            //Act
            automaton.DoTransition(nextState);
            var result = automaton.GetUiElements();

            //Assert
            Assert.IsTrue(result[0].IsEnabled == false);
            Assert.IsTrue(result[2].IsEnabled == false);
            Assert.IsTrue(result[3].IsEnabled); //op
            Assert.IsTrue(result[1].IsEnabled); //leftBracket
            Assert.IsTrue(result[4].IsEnabled == false);
        }