public void Splice_ThrowsIfNotCompoundPointer()
        {
            // Arrange
            var builder = new DomainBuilder <MyContext>("Test");

            // Act
            var domain = new DomainBuilder <MyContext>("sub-domain").Build();

            builder.Action("test");
            builder.Splice(domain);
        }
        public void Splice_ExpectedBehavior()
        {
            // Arrange
            var builder = new DomainBuilder <MyContext>("Test");

            // Act
            var domain = new DomainBuilder <MyContext>("sub-domain").Build();

            builder.Splice(domain);

            Assert.AreEqual(true, builder.Pointer is TaskRoot);
        }
        public void Splice_ForgotEnd()
        {
            // Arrange
            var builder = new DomainBuilder <MyContext>("Test");

            // Act
            var domain = new DomainBuilder <MyContext>("sub-domain").Build();

            builder.Select("test");
            builder.Splice(domain);

            Assert.AreEqual(true, builder.Pointer is Selector);
        }
        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());
        }