#![allow(clippy::should_implement_trait)]
pub mod error;
mod parser;
mod player;
pub use parser::{Line, Script};
pub use player::Player;
#[cfg(test)]
mod tests {
use std::{collections::HashMap, fs::File, io::BufReader};
use crate::{error::Result, Player, Script};
#[test]
fn sample() -> Result<()> {
let mut map = HashMap::new();
map.insert("character_1_name".to_string(), "tester1".to_string());
map.insert("character_2_name".to_string(), "tester2".to_string());
map.insert("window_width".to_string(), "1000".to_string());
map.insert("window_height".to_string(), "800".to_string());
let script =
Script::try_from_buf_read(BufReader::new(File::open("./sample/intro.tsl")?), &map)?;
assert_eq!(script.lines().len(), 6);
let mut player = Player::new(script);
let (utilities, output) = player.begin()?;
assert_eq!(utilities.len(), 0);
assert_eq!(
output.expect("No output line found").chars().next(),
Some('I')
);
let (utilities, output) = player.next()?;
assert_eq!(utilities.len(), 2);
assert_eq!(output, None);
println!("{:?}", player);
Ok(())
}
}