public void StateTransitionRule_WhenInvalid_ReturnsFalse()
        {
            // ARRANGE
            GameStateTransition nullToIntro       = new GameStateTransition(GameState.NullState, GameState.Intro);
            GameStateTransition introToMainMenu   = new GameStateTransition(GameState.Intro, GameState.MainMenu);
            GameStateTransition mainMenuToNewGame = new GameStateTransition(GameState.MainMenu, GameState.NewGame);
            GameStateTransition actualTransition  = new GameStateTransition(GameState.NullState, GameState.MainMenu);

            // ACT
            var transitionNullToIntro       = new StateTransitionRule(nullToIntro);
            var transitionIntroToMainMenu   = new StateTransitionRule(introToMainMenu);
            var transitionMainMenuToNewGame = new StateTransitionRule(mainMenuToNewGame);

            // Create the rule engine and add the rules
            var stateTransitionRuleEngine = new RuleEngine <GameStateTransition>();

            stateTransitionRuleEngine.ActualValue = actualTransition;

            stateTransitionRuleEngine.Add(transitionNullToIntro);
            stateTransitionRuleEngine.Add(transitionIntroToMainMenu);
            stateTransitionRuleEngine.Add(transitionMainMenuToNewGame);

            // Get the result
            var result = stateTransitionRuleEngine.MatchAny();

            // ASSERT
            Assert.IsFalse(result);
        }
        public void StateTransitionRule_WhenValid_ReturnsTrue()
        {
            // ARRANGE
            GameStateTransition nullToIntro = new GameStateTransition(GameState.NullState, GameState.Intro);
            GameStateTransition introToMainMenu = new GameStateTransition(GameState.Intro, GameState.MainMenu);
            GameStateTransition mainMenuToNewGame = new GameStateTransition(GameState.MainMenu, GameState.NewGame);
            GameStateTransition actualTransition = new GameStateTransition(GameState.Intro, GameState.MainMenu);

            // ACT
            var transitionNullToIntro = new StateTransitionRule(nullToIntro);
            var transitionIntroToMainMenu = new StateTransitionRule(introToMainMenu);
            var transitionMainMenuToNewGame = new StateTransitionRule(mainMenuToNewGame);

            // Create the rule engine and add the rules
            var stateTransitionRuleEngine = new RuleEngine<GameStateTransition>();
            stateTransitionRuleEngine.ActualValue = actualTransition;

            stateTransitionRuleEngine.Add(transitionNullToIntro);
            stateTransitionRuleEngine.Add(transitionIntroToMainMenu);
            stateTransitionRuleEngine.Add(transitionMainMenuToNewGame);

            // Get the result
            var result = stateTransitionRuleEngine.MatchAny();

            // ASSERT
            Assert.IsTrue(result);
        }
Exemplo n.º 3
0
        public void GreaterThanRule_MultipleValuesWhenGreater_ResultsTrueForAll()
        {
            // ARRANGE
            int threshold = 5;
            int actual1   = 7;
            int actual2   = 10;

            // ACT
            var integerRule = new IntegerGreaterThanRule(threshold);

            var integerRuleEngine = new RuleEngine <int>();

            integerRuleEngine.Add(integerRule);

            // Set the first actual and get the result
            integerRuleEngine.ActualValue = actual1;
            var result1 = integerRuleEngine.MatchAll();

            // Set the second actual and get the result
            integerRuleEngine.ActualValue = actual2;
            var result2 = integerRuleEngine.MatchAll();

            // ASSERT
            Assert.IsTrue(result1);
            Assert.IsTrue(result2);
        }
Exemplo n.º 4
0
        public void GreaterThanRule_MultipleValuesWhenGreater_ResultsTrueForAll()
        {
            // ARRANGE
            int threshold = 5;
            int actual1 = 7;
            int actual2 = 10;

            // ACT
            var integerRule = new IntegerGreaterThanRule(threshold);

            var integerRuleEngine = new RuleEngine<int>();
            integerRuleEngine.Add(integerRule);

            // Set the first actual and get the result
            integerRuleEngine.ActualValue = actual1;
            var result1 = integerRuleEngine.MatchAll();

            // Set the second actual and get the result
            integerRuleEngine.ActualValue = actual2;
            var result2 = integerRuleEngine.MatchAll();

            // ASSERT
            Assert.IsTrue(result1);
            Assert.IsTrue(result2);
        }
Exemplo n.º 5
0
        public void GreaterThanRule_WhenGreater_ResultsTrue()
        {
            // ARRANGE
            int threshold = 5;
            int actual = 10;

            // ACT
            var integerRule = new IntegerGreaterThanRule(threshold);

            var integerRuleEngine = new RuleEngine<int>();
            integerRuleEngine.ActualValue = actual;
            integerRuleEngine.Add(integerRule);

            // Get the result
            var result = integerRuleEngine.MatchAll();

            // ASSERT
            Assert.IsTrue(result);
        }
Exemplo n.º 6
0
        public void IntegerGreaterThanEqualToRule_WhenLessThan_ResultsFalse()
        {
            // ARRANGE
            int threshold = 5;
            int actual    = 3;

            // ACT
            var integerRule = new IntegerGreaterThanEqualToRule(threshold);

            var integerRuleEngine = new RuleEngine <int>();

            integerRuleEngine.ActualValue = actual;
            integerRuleEngine.Add(integerRule);

            // Get the result
            var result = integerRuleEngine.MatchAny();

            // ASSERT
            Assert.IsFalse(result);
        }
Exemplo n.º 7
0
        public void GreaterThanRule_WhenGreater_ResultsTrue()
        {
            // ARRANGE
            int threshold = 5;
            int actual    = 10;

            // ACT
            var integerRule = new IntegerGreaterThanRule(threshold);

            var integerRuleEngine = new RuleEngine <int>();

            integerRuleEngine.ActualValue = actual;
            integerRuleEngine.Add(integerRule);

            // Get the result
            var result = integerRuleEngine.MatchAll();

            // ASSERT
            Assert.IsTrue(result);
        }
Exemplo n.º 8
0
        public void IntegerGreaterThanEqualToRule_WhenEqualTo_ResultsTrue()
        {
            // ARRANGE
            int threshold = 5;
            int actual    = 5;

            // ACT
            var integerRule = new IntegerGreaterThanEqualToRule(threshold);
            //integerRule.Initialize(threshold, actual);

            var integerRuleEngine = new RuleEngine <int>();

            integerRuleEngine.ActualValue = actual;
            integerRuleEngine.Add(integerRule);

            // Get the result
            var result = integerRuleEngine.MatchAny();

            // ASSERT
            Assert.IsTrue(result);
        }
Exemplo n.º 9
0
        public void IntegerGreaterThanEqualToRule_WhenLessThan_ResultsFalse()
        {
            // ARRANGE
            int threshold = 5;
            int actual = 3;

            // ACT
            var integerRule = new IntegerGreaterThanEqualToRule(threshold);

            var integerRuleEngine = new RuleEngine<int>();
            integerRuleEngine.ActualValue = actual;
            integerRuleEngine.Add(integerRule);

            // Get the result
            var result = integerRuleEngine.MatchAny();

            // ASSERT
            Assert.IsFalse(result);
        }
Exemplo n.º 10
0
        public void IntegerGreaterThanEqualToRule_WhenEqualTo_ResultsTrue()
        {
            // ARRANGE
            int threshold = 5;
            int actual = 5;

            // ACT
            var integerRule = new IntegerGreaterThanEqualToRule(threshold);
            //integerRule.Initialize(threshold, actual);

            var integerRuleEngine = new RuleEngine<int>();
            integerRuleEngine.ActualValue = actual;
            integerRuleEngine.Add(integerRule);

            // Get the result
            var result = integerRuleEngine.MatchAny();

            // ASSERT
            Assert.IsTrue(result);
        }