Exemplo n.º 1
0
    public void FailureTest()
    {
        BT_Failure      failure = new BT_Failure();
        ResultContainer result  = failure.Next();

        Assert.AreEqual(BT_Result.FAILURE, result.Result);
    }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
    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);
    }