public void SequenceTest2() { // sequence algorithm test // // 1 __ success1 __ ex1 // root - sequence -| // 2 --- failure __ ex2 // | // 3 --- success2 --- ex3 // // ex1 : should be activated once // ex2 : should be activated twice // ex3 : should not be activated BT_Root root = new BT_Root(); BT_Sequence sequence = new BT_Sequence(); BT_Success success1 = new BT_Success(); BT_Success success2 = new BT_Success(); BT_Failure failure = new BT_Failure(); BT_Execute ex1 = new BT_Execute(); BT_Execute ex2 = new BT_Execute(); BT_Execute ex3 = new BT_Execute(); root.AddChild(sequence); sequence.AddChild(success1); sequence.AddChild(failure); sequence.AddChild(success2); success1.AddChild(ex1); failure.AddChild(ex2); success2.AddChild(ex3); bool isOK1 = false, isOK2 = false, isOK3 = false; ex1.AddEvent(() => { isOK1 = !isOK1; }); ex2.AddEvent(() => { isOK2 = !isOK2; }); ex3.AddEvent(() => { isOK3 = !isOK3; }); root.Next(); Assert.AreEqual(true, isOK1); Assert.AreEqual(false, isOK2); Assert.AreEqual(false, isOK3); root.Next(); Assert.AreEqual(true, isOK1); Assert.AreEqual(true, isOK2); Assert.AreEqual(false, isOK3); root.Next(); Assert.AreEqual(true, isOK1); Assert.AreEqual(false, isOK2); Assert.AreEqual(false, isOK3); }
public void SequenceTest1() { // sequence stopable test // // 1 __ success1 __ ex1 // root - sequence -| // 2 --- success2 --- ex2 // // ex1: should be activated // ex2: should be activated BT_Root root = new BT_Root(); BT_Sequence sequence = new BT_Sequence(); BT_Success success1 = new BT_Success(); BT_Success success2 = new BT_Success(); BT_Execute ex1 = new BT_Execute(); BT_Execute ex2 = new BT_Execute(); root.AddChild(sequence); sequence.AddChild(success1); sequence.AddChild(success2); success1.AddChild(ex1); success2.AddChild(ex2); bool isOK1 = false, isOK2 = false; ex1.AddEvent(() => { isOK1 = !isOK1; }); ex2.AddEvent(() => { isOK2 = !isOK2; }); root.Next(); Assert.AreEqual(true, isOK1); Assert.AreEqual(false, isOK2); root.Next(); Assert.AreEqual(true, isOK1); Assert.AreEqual(true, isOK2); root.Next(); Assert.AreEqual(false, isOK1); Assert.AreEqual(true, isOK2); }
public void RootTest() { BT_Root root = new BT_Root(); root.AddChild(new BT_Success()); ResultContainer result = root.Next(); Assert.AreEqual(BT_Result.SUCCESS, result.Result); }
public void ExecuteTest() { bool isOK = false; BT_Root root = new BT_Root(); BT_Execute execute = new BT_Execute(); execute.AddEvent(() => { isOK = true; }); root.AddChild(execute); ResultContainer result = root.Next(); Assert.AreEqual(true, isOK); }
public void SelectorTest2() { // selector algorithm test // // 1 __ failure __ ex1 //root - selector -| // 2 | -- ex2 -- succcess // 3 ----ex3 // // ex1 : should be activated // ex2 : should be activated // ex3 : should not be activated BT_Root root = new BT_Root(); BT_Selector selector = new BT_Selector(); BT_Failure failure = new BT_Failure(); BT_Execute ex1 = new BT_Execute(); BT_Execute ex2 = new BT_Execute(); BT_Execute ex3 = new BT_Execute(); BT_Success success = new BT_Success(); root.AddChild(selector); selector.AddChild(failure); selector.AddChild(ex2); selector.AddChild(ex3); failure.AddChild(ex1); ex2.AddChild(success); bool isOK1 = false, isOK2 = false, isOK3 = true; ex1.AddEvent(() => { isOK1 = true; }); ex2.AddEvent(() => { isOK2 = true; }); ex3.AddEvent(() => { isOK3 = false; }); root.Next(); Assert.AreEqual(true, isOK1); Assert.AreEqual(true, isOK2); Assert.AreEqual(true, isOK3); }
public void IfTest() { // if test // // root - if1 - ex1 - if2 - ex2 // // ex1 : should be activated // ex2 : should not be activated // if1 : return true // if2 : return false BT_Root root = new BT_Root(); BT_If if1 = new BT_If(); BT_If if2 = new BT_If(); BT_Execute ex1 = new BT_Execute(); BT_Execute ex2 = new BT_Execute(); root.AddChild(if1); if1.AddChild(ex1); ex1.AddChild(if2); if2.AddChild(ex2); if1.SetCondition(() => { return(true); }); if2.SetCondition(() => { return(false); }); bool isOK1 = false, isOK2 = true; ex1.AddEvent(() => { isOK1 = true; }); ex2.AddEvent(() => { isOK2 = false; }); ResultContainer result = root.Next(); Assert.AreEqual(true, isOK1); Assert.AreEqual(true, isOK2); Assert.AreEqual(BT_Result.FAILURE, result.Result); }
public void SelectorTest1() { // selector stopable test // // 1 _ failure1 _ ex1 //root - selector-| // 2 - failure2 - ex2 // // ex1: should be activated // ex2: should be activated bool isOK1 = false; bool isOK2 = false; BT_Root root = new BT_Root(); BT_Selector s = new BT_Selector(); BT_Failure failure1 = new BT_Failure(); s.AddChild(failure1); BT_Failure failure2 = new BT_Failure(); s.AddChild(failure2); BT_Execute ex1 = new BT_Execute(); ex1.AddEvent(() => { isOK1 = true; }); failure1.AddChild(ex1); BT_Execute ex2 = new BT_Execute(); ex2.AddEvent(() => { isOK2 = true; }); failure2.AddChild(ex2); root.AddChild(s); root.Next(); Assert.AreEqual(true, isOK1); Assert.AreEqual(true, isOK2); }