|
|
|
extern crate uci;
|
|
|
|
|
|
|
|
use uci::Engine;
|
|
|
|
use std::str;
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn instantiate_new_engine() {
|
|
|
|
let input = b"UNUSED";
|
|
|
|
let mut output = Vec::new();
|
|
|
|
|
|
|
|
let e = Engine::new("test_name", "test", &input[..], &mut output);
|
|
|
|
assert_eq!(e.name, "test_name");
|
|
|
|
assert_eq!(e.author, "test");
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn send_identification_data() {
|
|
|
|
let input = b"UNUSED";
|
|
|
|
let mut output = Vec::new();
|
|
|
|
|
|
|
|
// We need to scope this so that the mutable borrow ends and we can test it safely
|
|
|
|
{
|
|
|
|
let mut e = Engine::new("test_name", "test", &input[..], &mut output);
|
|
|
|
e.identify();
|
|
|
|
}
|
|
|
|
|
|
|
|
// NOTE: This looks weird bceause you'd think it would store each insertion into the output buffer
|
|
|
|
// as a separate element of that buffer, but it really just appends the two strings since in reality
|
|
|
|
// the buffer would be flushed after reading.
|
|
|
|
assert_eq!(str::from_utf8(&output).unwrap_or("Unwrapping output failed in send_identification_data"),
|
|
|
|
"id name test_name\nid author test\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn send_readyok() {
|
|
|
|
let input = b"UNUSED";
|
|
|
|
let mut output = Vec::new();
|
|
|
|
{
|
|
|
|
let mut e = Engine::new("test_name", "test", &input[..], &mut output);
|
|
|
|
e.ready();
|
|
|
|
}
|
|
|
|
|
|
|
|
assert_eq!(str::from_utf8(&output).unwrap_or("Unwrapping output failed in send_readyok"),
|
|
|
|
"readyok\n");
|
|
|
|
}
|