behavior-tree 0.0.3

Yet another behavior tree library for rust!
Documentation
use behavior_tree::*;

#[test]
fn test_simple_select() {
    let mut bt: Node<()> = Node::select(vec![
        Node::action("fail", |_| Status::Failure),
        Node::action("fail", |_| Status::Failure),
        YesTick::action(),
        NoTick::action(),
        NoTick::action(),
    ]);

    let (res, debug_repr) = bt.tick(1.0, &mut ());
    assert_eq!(res, Status::Success);
    assert_eq!(debug_repr.cursor.index(), 2);
}

#[test]
fn test_simple_select_inv() {
    let mut bt: Node<()> = Node::select(vec![
        Node::action("success", |_| Status::Success),
        NoTick::action(),
        NoTick::action(),
        NoTick::action(),
        NoTick::action(),
    ]);

    let (res, debug_repr) = bt.tick(1.0, &mut ());
    assert_eq!(res, Status::Success);
    assert_eq!(debug_repr.cursor.index(), 0);
}

#[test]
fn test_simple_select_running() {
    let mut bt: Node<()> = Node::select(vec![
        Node::action("fail", |_| Status::Failure),
        Node::action("fail", |_| Status::Failure),
        Node::action("fail", |_| Status::Failure),
        AlwaysRunning::action(),
        NoTick::action(),
        NoTick::action(),
        NoTick::action(),
        NoTick::action(),
    ]);

    let (res, debug_repr) = bt.tick(1.0, &mut ());
    assert_eq!(res, Status::Running);
    assert_eq!(debug_repr.cursor.index(), 3);
}

#[test]
fn test_simple_select_fail() {
    let mut bt: Node<()> = Node::select(vec![
        Node::action("fail", |_| Status::Failure),
        Node::action("fail", |_| Status::Failure),
        Node::action("fail", |_| Status::Failure),
        Node::action("fail", |_| Status::Failure),
        Node::action("fail", |_| Status::Failure),
    ]);

    let (res, debug_repr) = bt.tick(1.0, &mut ());
    assert_eq!(res, Status::Failure);
    assert_eq!(debug_repr.cursor.index(), 5);
}