Exemple #1
0
        public void ThinkRecursionDetectionTest()
        {
            _aic.ClearAll();
            var s = new Scheduler();
            // The main AI
            var ta            = new AiTransition("TransitionToCircularAi", "circularAi", _aic);
            var circularAi    = new UtilityAi("circularAi", _aic);
            var coreBehaviour = new Behaviour("cb", _bc);

            coreBehaviour.Selector = new MaxUtilitySelector();
            var circularOption = new ConstantUtilityOption("recursive", _oc);

            circularOption.DefaultUtility = new Utility(1f, 1f);
            circularOption.SetAction("TransitionToCircularAi");

            Assert.That(coreBehaviour.AddOption("recursive"), Is.True);
            Assert.That(circularAi.AddBehaviour(coreBehaviour.NameId), Is.True);

            var dm = new DecisionMaker(circularAi, _toon, s);

            Assert.Throws <DecisionMakerBase.PotentialCircularDependencyException>(dm.Think);
            try {
                dm.Think();
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
Exemple #2
0
        public void ConstructorTest()
        {
            var transition = new AiTransition("transitionToAI0", "ai0", _aIs);

            Assert.IsNotNull(transition);
            Assert.AreEqual(transition.TargetAi.NameId, _utilityAi.NameId);
        }
Exemple #3
0
        public void LinkUtilityAiActionConstructionTest()
        {
            var ai = new UtilityAi();

            Assert.IsNotNull(ai);
            var action = new AiTransition(ai);

            Assert.IsNotNull(action);
            Assert.IsNotNull(action.TargetAi);
        }
Exemple #4
0
        public void TargetAiDoesNotExistExceptionTest()
        {
            _aIs.ClearAll();
            var transition = new AiTransition("transition", "ai5", _aIs);

            Assert.Throws <AiTransition.TargetAiDoesNotExistException>(() => {
                var t = transition.TargetAi;
            });
            var ai5 = new UtilityAi("ai5", _aIs);

            Assert.DoesNotThrow(() => {
                var t = transition.TargetAi;
            });
        }