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 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)); }