Esempio n. 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);
            }
        }
Esempio n. 2
0
 public void ConstructorThrowsNameIdEmptyOrNullTest()
 {
     _aIs.ClearAll();
     Assert.Throws <ActionBase.NameIdEmptyOrNullException>(() => new AiTransition("", "a", _aIs));
     _aIs.ClearAll();
     Assert.Throws <ActionBase.NameIdEmptyOrNullException>(() => new AiTransition(null, "a", _aIs));
     _aIs.ClearAll();
     Assert.Throws <ActionBase.NameIdEmptyOrNullException>(() => new AiTransition("some", "", _aIs));
     _aIs.ClearAll();
     Assert.Throws <ActionBase.NameIdEmptyOrNullException>(() => new AiTransition("some", null, _aIs));
 }