ready_set_boole/src/ast/tests.rs

31 lines
1.1 KiB
Rust

#[cfg(test)]
mod tests {
use crate::ast::{ add_binary_node, ast_to_formula, Node, Token };
use crate::boolean_evaluation::parse_formula;
#[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 reverse_ast() {
let formula = "01&";
assert_eq!(ast_to_formula(parse_formula(formula)), formula);
let formula = "01&00|&";
assert_eq!(ast_to_formula(parse_formula(formula)), formula);
let formula = "01&00|&11^&";
assert_eq!(ast_to_formula(parse_formula(formula)), formula);
let formula = "01&00|&11=^";
assert_eq!(ast_to_formula(parse_formula(formula)), formula);
let formula = "01&00|&0!=";
assert_eq!(ast_to_formula(parse_formula(formula)), formula);
}
}