use super::*;
#[test]
fn empty() {
#[rustfmt::skip]
let empty = Node::root();
assert_eq!(Bot::new(true).select(&empty, ToCompletion), None);
}
#[test]
fn depth_one() {
#[rustfmt::skip]
let depth_one = Node::root().with_children(&[
Node::new(true, 0),
Node::new(true, 2),
Node::new(true, 1),
]);
assert_eq!(Bot::new(true).select(&depth_one, ToCompletion), Some(1));
}
#[test]
fn different_depths() {
#[rustfmt::skip]
let different_depths = Node::root().with_children(&[
Node::new(false, 0).with_children(&[
Node::new(true, 0),
]),
Node::new(false, 1),
]);
assert_eq!(
Bot::new(true).select(&different_depths, ToCompletion),
Some(1)
);
}
#[test]
fn alpha_reuse() {
#[rustfmt::skip]
let alpha_reuse = Node::root().with_children(&[
Node::new(false, 0).with_children(&[
Node::new(false, 5).with_children(&[
Node::new(true, 3),
]),
]),
Node::new(false, 1).with_children(&[
Node::new(false, 6).with_children(&[
Node::new(true, 4),
Node::new(true, 2),
]),
]),
]);
assert_eq!(Bot::new(true).select(&alpha_reuse, ToCompletion), Some(0));
}
#[test]
fn premature_termination() {
#[rustfmt::skip]
let premature_termination = Node::root().with_children(&[
Node::new(false, 0).with_children(&[
Node::new(false, 0).with_children(&[
Node::new(false, 0).with_children(&[
Node::new(false, 0),
]),
]),
]),
Node::new(false, 0).with_children(&[
Node::new(true, 5).with_children(&[
Node::new(true, 5).with_children(&[
Node::new(true, 3),
]),
]),
]),
Node::new(false, 0).with_children(&[
Node::new(false, 4),
Node::new(false, 2).with_children(&[
Node::new(false, 2),
]),
]),
]);
assert_eq!(
Bot::new(true).select(&premature_termination, ToCompletion),
Some(1)
);
}
#[test]
fn fuzz_one() {
#[rustfmt::skip]
let fuzz_one = Node::root().with_children(&[
Node::new(true, 0).with_children(&[
Node::new(false, 0).with_children(&[
Node::new(false, 1),
]),
Node::new(true, 0),
]),
Node::new(false, 0).with_children(&[
Node::new(false, 0).with_children(&[
Node::new(true, 2).with_children(&[
Node::new(true, 3).with_children(&[
Node::new(true, 0),
]),
]),
]),
]),
Node::new(true, 0),
]);
assert_eq!(Bot::new(true).select(&fuzz_one, ToCompletion), Some(0));
}
#[test]
fn fuzz_two() {
#[rustfmt::skip]
let fuzz_two = Node::root().with_children(&[
Node::new(true, 74).with_children(&[
Node::new(true, 2).with_children(&[
Node::new(false, 1).with_children(&[
Node::new(false, -119),
]),
Node::new(true, 42),
]),
]),
Node::new(true, 0).with_children(&[
Node::new(false, 0).with_children(&[
Node::new(true, -1),
Node::new(true, 42),
]),
Node::new(true, 0),
]),
]);
assert_eq!(Bot::new(true).select(&fuzz_two, ToCompletion), Some(0));
}
#[test]
fn fuzz_three() {
#[rustfmt::skip]
let fuzz_three = Node::root().with_children(&[
Node::new(false, 1).with_children(&[
Node::new(false, 2).with_children(&[
Node::new(true, 10).with_children(&[
Node::new(true, 3),
Node::new(true, 10).with_children(&[
Node::new(true, 0),
]),
]),
]),
]),
Node::new(true, 8).with_children(&[
Node::new(true, 2),
Node::new(false, 0).with_children(&[
Node::new(true, 8),
Node::new(true, 10),
]),
]),
]);
assert_eq!(Bot::new(true).select(&fuzz_three, ToCompletion), Some(1));
}
#[test]
fn fuzz_four() {
#[rustfmt::skip]
let fuzz_four = Node::root().with_children(&[
Node::new(true, 0).with_children(&[
Node::new(true, 32).with_children(&[
Node::new(false, 127),
]),
]),
Node::new(false, 0).with_children(&[
Node::new(false, 0),
])
]);
assert_eq!(Bot::new(true).select(&fuzz_four, ToCompletion), Some(0));
}
#[test]
fn fuzz_five() {
#[rustfmt::skip]
let fuzz_five = Node::root().with_children(&[
Node::new(true, -26).with_children(&[
Node::new(true, 0),
]),
Node::new(false, 32).with_children(&[
Node::new(true, 127).with_children(&[
Node::new(false, 127),
])
])
]);
assert_eq!(Bot::new(true).select(&fuzz_five, ToCompletion), Some(1));
}
#[test]
fn subtree_cutoff() {
let subtree_cutoff = Node::root().with_children(&[
Node::new(true, -63).with_children(&[
Node::new(true, 1),
Node::new(false, -2).with_children(&[
Node::new(false, 10).with_children(&[Node::new(true, -63)]),
Node::new(true, 1),
]),
]),
Node::new(false, -2),
]);
assert_eq!(
Bot::new(true).select(&subtree_cutoff, ToCompletion),
Some(0)
);
}
#[test]
fn with_my_dying_breath() {
#[rustfmt::skip]
let tree = Node::root().with_children(&[
Node::new(true, 0).with_children(&[
Node::new(true, i8::MIN),
]),
Node::new(true, i8::MIN),
]);
assert_eq!(Bot::new(true).select(&tree, ToCompletion), Some(0));
#[rustfmt::skip]
let tree = Node::root().with_children(&[
Node::new(true, 0).with_children(&[
Node::new(true, i8::MIN),
]),
Node::new(true, 0).with_children(&[
Node::new(true, 0).with_children(&[
Node::new(true, i8::MIN),
]),
]),
Node::new(true, i8::MIN),
]);
assert_eq!(Bot::new(true).select(&tree, ToCompletion), Some(1));
}