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.
63 lines
1.9 KiB
63 lines
1.9 KiB
extern crate uci; |
|
|
|
use uci::Engine; |
|
use uci::options::constants; |
|
use uci::options::{ EngineOption, EngineOptionType, EngineOptionDataType, EngineOptionData }; |
|
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, vec!()); |
|
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, vec!()); |
|
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, vec!()); |
|
e.ready(); |
|
} |
|
|
|
assert_eq!(str::from_utf8(&output).unwrap_or("Unwrapping output failed in send_readyok"), |
|
"readyok\n"); |
|
} |
|
|
|
#[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); |
|
}
|
|
|