o-x-rust intial complete
This commit is contained in:
55
wasm/o-x-rust/tests/web.rs
Normal file
55
wasm/o-x-rust/tests/web.rs
Normal file
@@ -0,0 +1,55 @@
|
||||
extern crate wasm_bindgen_test;
|
||||
|
||||
use wasm_bindgen_test::*;
|
||||
use o_x_rust::*;
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn find_winner_test() {
|
||||
assert_eq!(find_winner(&[0, 0, 0, 1, 1, 1, 0, 0, 0]), 1);
|
||||
assert_eq!(find_winner(&[2, 1, 1, 1, 2, 1, 0, 0, 2]), 2);
|
||||
assert_eq!(find_winner(&[2, 1, 1, 1, 2, 1, 0, 0, 1]), 1);
|
||||
assert_eq!(find_winner(&[2, 1, 2, 1, 2, 1, 2, 1, 0]), 2);
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn count_empty_test() {
|
||||
assert_eq!(count_empty(&[0, 0, 1, 0, 2, 0, 0, 0, 0]), 7);
|
||||
assert_eq!(count_empty(&[1, 2, 1, 1, 2, 1, 2, 2, 1]), 0);
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn get_turn_test() {
|
||||
assert_eq!(get_turn(1, 2, true, 6), 2);
|
||||
assert_eq!(get_turn(1, 2, false, 7), 2);
|
||||
assert_eq!(get_turn(2, 1, true, 2), 1);
|
||||
assert_eq!(get_turn(2, 1, false, 2), 2);
|
||||
}
|
||||
|
||||
// Go through the flow, testing whether anything panics (which it shouldn't)
|
||||
// and that predict doesn't return impossible moves
|
||||
#[wasm_bindgen_test]
|
||||
fn test_scores() {
|
||||
let board1: &[u8] = &[1, 2, 1, 2, 1, 2, 0, 1, 2];
|
||||
let board2: &[u8] = &[0, 0, 0, 0, 1, 0, 2, 0, 0];
|
||||
let me = 2;
|
||||
let other = 1;
|
||||
let first = false;
|
||||
|
||||
let algorithms = &["sa", "sa+rd", "sa+r-d", "mm", "mm+d"];
|
||||
|
||||
algorithms.iter()
|
||||
.for_each(|&algorithm| {
|
||||
let p1 = predict(me, other, first, board1, algorithm);
|
||||
assert_eq!(p1, 6);
|
||||
|
||||
let p2 = predict(me, other, first, board2, algorithm);
|
||||
assert!(board2.iter()
|
||||
.enumerate()
|
||||
.filter_map(|(idx, &v)| {
|
||||
if v != 0 {
|
||||
Some(idx)
|
||||
} else { None }
|
||||
})
|
||||
.all(|idx| p2 != idx));
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user