public void Slot_ExpectedBehavior() { // Arrange var builder = new DomainBuilder <MyContext>("Test"); // Act builder.Slot(1); Assert.AreEqual(true, builder.Pointer is TaskRoot); var domain = builder.Build(); var subDomain = new DomainBuilder <MyContext>("sub-domain").Build(); Assert.IsTrue(domain.TrySetSlotDomain(1, subDomain)); // Its valid to add a sub-domain to a slot we have defined in our domain definition, and that is not currently occupied. Assert.IsTrue(domain.TrySetSlotDomain(1, subDomain) == false); // Need to clear slot before we can attach sub-domain to a currently occupied slot. Assert.IsTrue(domain.TrySetSlotDomain(99, subDomain) == false); // Need to define slotId in domain definition before we can attach sub-domain to that slot. Assert.IsTrue(domain.Root.Subtasks.Count == 1); Assert.IsTrue(domain.Root.Subtasks[0] is Slot); var slot = (Slot)domain.Root.Subtasks[0]; Assert.IsTrue(slot.Subtask != null); Assert.IsTrue(slot.Subtask is TaskRoot); Assert.IsTrue(slot.Subtask.Name == "sub-domain"); domain.ClearSlot(1); Assert.IsTrue(slot.Subtask == null); }
public void SelectorBuild_ForgotEnd() { // Arrange var builder = new DomainBuilder <MyContext>("Test"); // Act builder.Select("select test"); var domain = builder.Build(); }
public void BuildInvalidatesPointer_ForgotEnd() { // Arrange var builder = new DomainBuilder <MyContext>("Test"); // Act var domain = builder.Build(); Assert.IsTrue(builder.Pointer == domain.Root); }
public void Build_ForgotEnd() { // Arrange var builder = new DomainBuilder <MyContext>("Test"); // Act var ptr = builder.Pointer; var domain = builder.Build(); Assert.IsTrue(domain.Root != null); Assert.IsTrue(ptr == domain.Root); Assert.AreEqual("Test", domain.Root.Name); }
private static Domain <AIContext> DefineDomain(List <Item> itemsInScreen) { var itemDomainBuilder = new DomainBuilder <AIContext>("Item Sub-domains"); foreach (var item in itemsInScreen) { itemDomainBuilder.Splice(item.Domain); } return(new DomainBuilder <AIContext>("Intro Screen Domain") .Splice(itemDomainBuilder.Build()) .Action("Failed") .Condition("Failed to address goal", (ctx => ctx.HasGoal(GoalState.None) == false)) .Do(Actions.Failed) .Effect("Complete Goal", EffectType.PlanAndExecute, (ctx, type) => ctx.SetGoal(GoalState.None, true, type)) .End() .Action("Idle") .Do(ctx => TaskStatus.Continue) .End() .Build()); }