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.
71 lines
1.6 KiB
71 lines
1.6 KiB
// TODO: Write parser tests before implementing the parser. |
|
// Start with setoption and branch out from there. The commands are finite so you should be able |
|
// to write a test for each one. Take the time to do this right so that the rest of this project is |
|
// a cakewalk |
|
// |
|
// // Also remember to fix the constant thing noted in the lib.rs for uci.... lol |
|
// |
|
|
|
extern crate uci; |
|
|
|
use uci::parser; |
|
|
|
#[test] |
|
fn parse_setoption() { |
|
let s = "setoption name Hash value 32\n"; |
|
let expected = parser::TokenResult::new( |
|
parser::Token::SETOPTION, |
|
parser::Left(Some( |
|
[ |
|
("name", parser::CommandValue::Text(String::from("Hash"))), |
|
("value", parser::CommandValue::Int(32)), |
|
].iter().cloned().collect()) |
|
)); |
|
|
|
let p = parser::Parser::new(); |
|
|
|
match p.parse(s) { |
|
Ok(r) => { |
|
assert_eq!(r, expected); |
|
} |
|
Err(_) => panic!("failed to parse setoption as expected") |
|
} |
|
} |
|
|
|
#[test] |
|
fn parse_uci() { |
|
let s = "uci\n"; |
|
let expected = parser::TokenResult::new( |
|
parser::Token::UCI, parser::Left(None); |
|
|
|
let p = parser::Parser::new(); |
|
|
|
match p.parse(s) { |
|
Ok(r) => { |
|
assert_eq!(r, expected); |
|
} |
|
Err(_) => panic!("failed to parse uci as expected") |
|
} |
|
} |
|
|
|
#[test] |
|
fn parse_debug() { |
|
let s = "debug on\n"; |
|
let expected = parser::TokenResult::new( |
|
parser::Token::DEBUG, parser::Right("on") |
|
); |
|
|
|
let p = parser::Parser::new(); |
|
|
|
match p.parse(s) { |
|
Ok(r) => { |
|
assert_eq!(r, expected); |
|
} |
|
Err(_) => panic!("failed to parse uci as expected") |
|
} |
|
} |
|
|
|
#[test] |
|
fn bad_parse() { |
|
assert_eq!(true, false); |
|
}
|
|
|