1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
pub mod parse; #[cfg(test)] mod tests { use ::parse::{Parser,BlockKind,SrcBlock, LogicKind,SrcKind,VarKind,ExpectKind}; fn test_block () -> &'static str { "root\n unequipped !some_item\n has_weight some_weight < 5.0\n some_comp:any unequipped has_weight\n \n if unequipped \"you're looking for something?\"\n \n if all \"welcome, \nlook around\"\n ;" } #[test] fn parse_block() { let src = test_block(); let block = Parser::parse_blocks(src); let block_ = [BlockKind::Src( SrcBlock { name: "root".to_owned(), src: vec![SrcKind::Logic("unequipped".to_owned(), LogicKind::IsNot("some_item".to_owned())), SrcKind::Logic("has_weight".to_owned(), LogicKind::LT("some_weight".to_owned(), 5.0f32)), SrcKind::Composite("some_comp".to_owned(), ExpectKind::Any, vec!["unequipped".to_owned(),"has_weight".to_owned()]), SrcKind::If(ExpectKind::Ref("unequipped".to_owned()), VarKind::String("you're looking for something?".to_owned())), SrcKind::If(ExpectKind::All, VarKind::String("welcome, \nlook around".to_owned()))] })]; for (n,n_) in block.iter().zip(block_.iter()) { assert_eq!(n,n_); } } }