#[cfg(test)] mod tests { use crate::ast::{add_binary_node, Node, Token}; #[test] fn add_nodes() { let mut stack = vec![Node::Leaf(true), Node::Leaf(false)]; let rhs = vec![Node::Binary { operator: Token::Conjunction, lhs: Box::new(Node::Leaf(true)), rhs: Box::new(Node::Leaf(false)), }]; add_binary_node(&mut stack, Token::Conjunction); assert_eq!(stack, rhs); } #[test] fn ast_to_formula_bool() { let formula = "01&"; assert_eq!( Node::::ast_to_formula(&Node::::parse_formula(formula)), formula ); let formula = "01&00|&"; assert_eq!( Node::::ast_to_formula(&Node::::parse_formula(formula)), formula ); let formula = "01&00|&11^&"; assert_eq!( Node::::ast_to_formula(&Node::::parse_formula(formula)), formula ); let formula = "01&00|&11=^"; assert_eq!( Node::::ast_to_formula(&Node::::parse_formula(formula)), formula ); let formula = "01&00|&0!="; assert_eq!( Node::::ast_to_formula(&Node::::parse_formula(formula)), formula ); } #[test] fn ast_to_formula_char() { let formula = "AB&"; assert_eq!( Node::::ast_to_formula(&Node::::parse_formula(formula)), formula ); let formula = "AB&CD|&"; assert_eq!( Node::::ast_to_formula(&Node::::parse_formula(formula)), formula ); let formula = "AB&AC|&DE^&"; assert_eq!( Node::::ast_to_formula(&Node::::parse_formula(formula)), formula ); let formula = "AB&CD|&EF=^"; assert_eq!( Node::::ast_to_formula(&Node::::parse_formula(formula)), formula ); let formula = "AB&CD|&E!="; assert_eq!( Node::::ast_to_formula(&Node::::parse_formula(formula)), formula ); } }