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"); }