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); } }
public void ConstructorTest() { var transition = new AiTransition("transitionToAI0", "ai0", _aIs); Assert.IsNotNull(transition); Assert.AreEqual(transition.TargetAi.NameId, _utilityAi.NameId); }
public void LinkUtilityAiActionConstructionTest() { var ai = new UtilityAi(); Assert.IsNotNull(ai); var action = new AiTransition(ai); Assert.IsNotNull(action); Assert.IsNotNull(action.TargetAi); }
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; }); }