An implementation of the Universal Chess Interface in Rust.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.9 KiB

extern crate uci;
use uci::Engine;
7 years ago
use uci::options::constants;
use uci::options::{ EngineOption, EngineOptionType, EngineOptionDataType, EngineOptionData };
use std::str;
#[test]
fn instantiate_new_engine() {
7 years ago
let input = b"UNUSED";
let mut output = Vec::new();
7 years ago
let e = Engine::new("test_name", "test", &input[..], &mut output, vec!());
assert_eq!(e.name, "test_name");
assert_eq!(e.author, "test");
}
7 years ago
#[test]
fn send_identification_data() {
7 years ago
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
{
7 years ago
let mut e = Engine::new("test_name", "test", &input[..], &mut output, vec!());
7 years ago
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");
7 years ago
}
#[test]
fn send_readyok() {
let input = b"UNUSED";
let mut output = Vec::new();
{
7 years ago
let mut e = Engine::new("test_name", "test", &input[..], &mut output, vec!());
e.ready();
}
assert_eq!(str::from_utf8(&output).unwrap_or("Unwrapping output failed in send_readyok"),
"readyok\n");
}
7 years ago
#[test]
fn engine_option_equality() {
let name = constants::HASH;
let option_type = EngineOptionType::Check;
let option_data =
[(EngineOptionDataType::DefaultVal, EngineOptionData::Int(1)),
(EngineOptionDataType::Min, EngineOptionData::Int(1)),
(EngineOptionDataType::Max, EngineOptionData::Int(128))
].iter().cloned().collect();
let o1 = EngineOption { name, option_type, option_data };
let o2 = EngineOption { name, option_type, option_data };
assert_eq!(o1, o2);
}