ready_set_boole/src/ast/tests.rs

75 lines
2.2 KiB
Rust

#[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::<bool>::ast_to_formula(&Node::<bool>::parse_formula(formula)),
formula
);
let formula = "01&00|&";
assert_eq!(
Node::<bool>::ast_to_formula(&Node::<bool>::parse_formula(formula)),
formula
);
let formula = "01&00|&11^&";
assert_eq!(
Node::<bool>::ast_to_formula(&Node::<bool>::parse_formula(formula)),
formula
);
let formula = "01&00|&11=^";
assert_eq!(
Node::<bool>::ast_to_formula(&Node::<bool>::parse_formula(formula)),
formula
);
let formula = "01&00|&0!=";
assert_eq!(
Node::<bool>::ast_to_formula(&Node::<bool>::parse_formula(formula)),
formula
);
}
#[test]
fn ast_to_formula_char() {
let formula = "AB&";
assert_eq!(
Node::<char>::ast_to_formula(&Node::<char>::parse_formula(formula)),
formula
);
let formula = "AB&CD|&";
assert_eq!(
Node::<char>::ast_to_formula(&Node::<char>::parse_formula(formula)),
formula
);
let formula = "AB&AC|&DE^&";
assert_eq!(
Node::<char>::ast_to_formula(&Node::<char>::parse_formula(formula)),
formula
);
let formula = "AB&CD|&EF=^";
assert_eq!(
Node::<char>::ast_to_formula(&Node::<char>::parse_formula(formula)),
formula
);
let formula = "AB&CD|&E!=";
assert_eq!(
Node::<char>::ast_to_formula(&Node::<char>::parse_formula(formula)),
formula
);
}
}